Skip to content

Commit

Permalink
Adding theme to android
Browse files Browse the repository at this point in the history
  • Loading branch information
leandroBorgesFerreira committed Sep 30, 2024
1 parent 03b1271 commit 19fbf78
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import io.writeopia.account.di.AccountMenuKmpInjector
import io.writeopia.account.ui.SettingsDialog
import io.writeopia.auth.core.di.KmpAuthCoreInjection
import io.writeopia.auth.core.token.MockTokenHandler
import io.writeopia.editor.di.EditorKmpInjector
Expand All @@ -45,7 +46,6 @@ import io.writeopia.note_menu.navigation.NAVIGATION_TYPE
import io.writeopia.note_menu.navigation.navigateToNotes
import io.writeopia.note_menu.ui.screen.menu.EditFileScreen
import io.writeopia.note_menu.ui.screen.menu.RoundedVerticalDivider
import io.writeopia.note_menu.ui.screen.settings.SettingsDialog
import io.writeopia.sdk.network.injector.ConnectionInjector
import io.writeopia.sdk.persistence.core.di.RepositoryInjector
import io.writeopia.theme.WrieopiaTheme
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ private const val DATABASE_NAME = "WriteopiaDatabase"
FolderEntity::class
// UiConfigurationRoomEntity::class
],
version = 8,
version = 9,
exportSchema = false
)
@TypeConverters(IdListConverter::class)
Expand Down
2 changes: 2 additions & 0 deletions application/features/account/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ kotlin {
dependencies {
implementation(project(":application:core:utils"))
implementation(project(":application:core:auth_core"))
implementation(project(":application:core:auth_core"))
implementation(project(":application:core:theme"))

implementation(libs.kotlinx.datetime)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package io.writeopia.account.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
Expand All @@ -17,6 +19,7 @@ import androidx.compose.ui.unit.dp
import io.writeopia.account.viewmodel.AccountMenuViewModel
import io.writeopia.utils_module.ResultData
import io.writeopia.utils_module.toBoolean
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

//import io.writeopia.appresourcers.R
Expand All @@ -29,28 +32,41 @@ fun AccountMenuScreen(
goToRegister: () -> Unit
) {

Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
SettingsScreen(selectedThemePosition = MutableStateFlow(0), selectColorTheme = {})

Spacer(modifier = Modifier.height(12.dp))

// Connect(accountMenuViewModel, isLoggedInState, onLogout, goToRegister)
}
}

@Composable
private fun Connect(
accountMenuViewModel: AccountMenuViewModel,
isLoggedInState: StateFlow<ResultData<Boolean>>,
onLogout: () -> Unit,
goToRegister: () -> Unit
) {
val isLoggedIn = isLoggedInState.collectAsState().value.toBoolean()

Column(modifier = Modifier.fillMaxSize()) {
Text(
modifier = Modifier
.padding(16.dp)
.clickable {
if (isLoggedIn) {
accountMenuViewModel.logout(onLogout)
} else {
accountMenuViewModel.eraseOfflineByChoice(goToRegister)
}
Text(
modifier = Modifier
.clickable {
if (isLoggedIn) {
accountMenuViewModel.logout(onLogout)
} else {
accountMenuViewModel.eraseOfflineByChoice(goToRegister)
}
.clip(RoundedCornerShape(6.dp))
.background(MaterialTheme.colorScheme.secondary)
.padding(8.dp),
text = if (isLoggedIn) "Logout" else "Register",
}
.clip(RoundedCornerShape(6.dp))
.background(MaterialTheme.colorScheme.secondary)
.padding(8.dp),
text = if (isLoggedIn) "Logout" else "Register",
// if (isLoggedIn) stringResource(R.string.logout) else stringResource(R.string.register),
color = MaterialTheme.colorScheme.onPrimary,
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Bold
)
color = MaterialTheme.colorScheme.onPrimary,
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Bold
)
}
)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.writeopia.note_menu.ui.screen.settings
package io.writeopia.account.ui

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
Expand All @@ -14,7 +15,6 @@ import androidx.compose.material.icons.outlined.Contrast
import androidx.compose.material.icons.outlined.DarkMode
import androidx.compose.material.icons.outlined.LightMode
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
Expand All @@ -25,8 +25,6 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import io.writeopia.model.ColorThemeOption
import io.writeopia.note_menu.ui.screen.configuration.modifier.orderConfigModifierHorizontal
import io.writeopia.theme.WriteopiaTheme
import kotlinx.coroutines.flow.StateFlow

@Composable
Expand All @@ -35,32 +33,41 @@ fun SettingsDialog(
onDismissRequest: () -> Unit,
selectColorTheme: (ColorThemeOption) -> Unit,
) {
val titleStyle = MaterialTheme.typography.titleLarge
val titleColor = MaterialTheme.colorScheme.onBackground

Dialog(onDismissRequest = onDismissRequest) {
Card(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(fraction = 0.7F),
.fillMaxHeight(fraction = 0.7F)
.padding(horizontal = 40.dp, vertical = 20.dp),
shape = RoundedCornerShape(16.dp),
) {
Column(modifier = Modifier.padding(horizontal = 40.dp, vertical = 20.dp)) {
Text("Color Theme", style = titleStyle, color = titleColor)
Column(modifier = Modifier.padding(16.dp)) {
SettingsScreen(selectedThemePosition, selectColorTheme)
}
}
}
}

@Composable
fun ColumnScope.SettingsScreen(
selectedThemePosition: StateFlow<Int>,
selectColorTheme: (ColorThemeOption) -> Unit,
) {
val titleStyle = MaterialTheme.typography.titleLarge
val titleColor = MaterialTheme.colorScheme.onBackground

Spacer(modifier = Modifier.height(20.dp))
Text("Color Theme", style = titleStyle, color = titleColor)

ColorThemeOptions(
selectedThemePosition = selectedThemePosition,
selectColorTheme = selectColorTheme
)
Spacer(modifier = Modifier.height(20.dp))

Spacer(modifier = Modifier.weight(1F))
ColorThemeOptions(
selectedThemePosition = selectedThemePosition,
selectColorTheme = selectColorTheme
)

Text("Release version: 2024-06-14", style = MaterialTheme.typography.bodySmall)
}
}
}
Spacer(modifier = Modifier.weight(1F))

Text("Release version: 2024-06-14", style = MaterialTheme.typography.bodySmall)
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package io.writeopia.account.ui

import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp

fun Modifier.orderConfigModifierHorizontal(clickable: () -> Unit): Modifier =
composed {
clip(MaterialTheme.shapes.large)
.background(MaterialTheme.colorScheme.inverseSurface)
.clickable(onClick = clickable)
.padding(6.dp)
.fillMaxHeight()
}

0 comments on commit 19fbf78

Please sign in to comment.