Themmo update

This commit is contained in:
Sad Ellie 2024-01-16 18:22:34 +03:00
parent bd5cce157d
commit 80e858e1ed
14 changed files with 48 additions and 43 deletions

View File

@ -43,8 +43,6 @@ import com.sadellie.unitto.core.ui.theme.DarkThemeColors
import com.sadellie.unitto.core.ui.theme.LightThemeColors
import com.sadellie.unitto.core.ui.theme.TypographySystem
import com.sadellie.unitto.data.model.userprefs.AppPreferences
import io.github.sadellie.themmo.MonetMode
import io.github.sadellie.themmo.ThemingMode
import io.github.sadellie.themmo.Themmo
import io.github.sadellie.themmo.ThemmoController
import kotlinx.coroutines.launch
@ -74,11 +72,11 @@ internal fun UnittoApp(prefs: AppPreferences?) {
ThemmoController(
lightColorScheme = LightThemeColors,
darkColorScheme = DarkThemeColors,
themingMode = prefs.themingMode.toThemingMode(),
themingMode = prefs.themingMode,
dynamicThemeEnabled = prefs.enableDynamicTheme,
amoledThemeEnabled = prefs.enableAmoledTheme,
customColor = prefs.customColor.toColor(),
monetMode = prefs.monetMode.toMonetMode()
monetMode = prefs.monetMode
)
}
@ -132,18 +130,6 @@ internal fun UnittoApp(prefs: AppPreferences?) {
}
}
private fun String.toThemingMode(): ThemingMode = try {
ThemingMode.valueOf(this)
} catch (e: Exception) {
ThemingMode.AUTO
}
private fun String.toMonetMode(): MonetMode = try {
MonetMode.valueOf(this)
} catch (e: Exception) {
MonetMode.TonalSpot
}
private fun Long.toColor(): Color = try {
Color(this.toULong())
} catch (e: Exception) {

View File

@ -28,6 +28,7 @@ android.namespace = "com.sadellie.unitto.data.backup"
dependencies {
implementation(libs.androidx.datastore.datastore.preferences)
implementation(libs.com.squareup.moshi.moshi.kotlin)
implementation(libs.com.github.sadellie.themmo.core)
ksp(libs.com.squareup.moshi.moshi.kotlin.codegen)
implementation(project(":data:database"))

View File

@ -121,11 +121,11 @@ class BackupManager @Inject constructor(
val timeZoneTableData = timeZoneDao.getFavorites().first()
return UserData(
themingMode = data.getThemingMode(),
themingMode = data.getThemingMode().name,
enableDynamicTheme = data.getEnableDynamicTheme(),
enableAmoledTheme = data.getEnableAmoledTheme(),
customColor = data.getCustomColor(),
monetMode = data.getMonetMode(),
monetMode = data.getMonetMode().name,
startingScreen = data.getStartingScreen(),
enableToolsExperiment = data.getEnableToolsExperiment(),
systemFont = data.getSystemFont(),

View File

@ -24,6 +24,8 @@ plugins {
android.namespace = "com.sadellie.unitto.data.model"
dependencies {
implementation(libs.com.github.sadellie.themmo.core)
implementation(project(":core:base"))
implementation(project(":data:common"))
}

View File

@ -32,6 +32,8 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences
import com.sadellie.unitto.data.model.userprefs.GeneralPreferences
import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences
import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
import kotlinx.coroutines.flow.Flow
interface UserPreferencesRepository {
@ -55,7 +57,7 @@ interface UserPreferencesRepository {
suspend fun updateLatestPairOfUnits(unitFrom: AbstractUnit, unitTo: AbstractUnit)
suspend fun updateThemingMode(themingMode: String)
suspend fun updateThemingMode(themingMode: ThemingMode)
suspend fun updateDynamicTheme(enabled: Boolean)
@ -63,7 +65,7 @@ interface UserPreferencesRepository {
suspend fun updateCustomColor(color: Long)
suspend fun updateMonetMode(monetMode: String)
suspend fun updateMonetMode(monetMode: MonetMode)
suspend fun updateStartingScreen(startingScreen: String)

View File

@ -18,12 +18,15 @@
package com.sadellie.unitto.data.model.userprefs
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
interface AppPreferences {
val themingMode: String
val themingMode: ThemingMode
val enableDynamicTheme: Boolean
val enableAmoledTheme: Boolean
val customColor: Long
val monetMode: String
val monetMode: MonetMode
val startingScreen: String
val enableToolsExperiment: Boolean
val systemFont: Boolean

View File

@ -26,7 +26,7 @@ android.namespace = "com.sadellie.unitto.data.userprefs"
dependencies {
implementation(libs.androidx.datastore.datastore.preferences)
implementation(libs.com.github.sadellie.themmo)
implementation(libs.com.github.sadellie.themmo.core)
implementation(project(":core:base"))
implementation(project(":data:model"))

View File

@ -26,13 +26,17 @@ import com.sadellie.unitto.data.converter.MyUnitIDS
import com.sadellie.unitto.data.model.ALL_UNIT_GROUPS
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.UnitsListSorting
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
fun Preferences.getEnableDynamicTheme(): Boolean {
return this[PrefsKeys.ENABLE_DYNAMIC_THEME] ?: true
}
fun Preferences.getThemingMode(): String {
return this[PrefsKeys.THEMING_MODE] ?: ""
fun Preferences.getThemingMode(): ThemingMode {
return this[PrefsKeys.THEMING_MODE]
?.letTryOrNull { ThemingMode.valueOf(it) }
?: ThemingMode.AUTO
}
fun Preferences.getEnableAmoledTheme(): Boolean {
@ -43,8 +47,10 @@ fun Preferences.getCustomColor(): Long {
return this[PrefsKeys.CUSTOM_COLOR] ?: 16L // From Color.Unspecified
}
fun Preferences.getMonetMode(): String {
return this[PrefsKeys.MONET_MODE] ?: ""
fun Preferences.getMonetMode(): MonetMode {
return this[PrefsKeys.MONET_MODE]
?.letTryOrNull { MonetMode.valueOf(it) }
?: MonetMode.TonalSpot
}
fun Preferences.getStartingScreen(): String {

View File

@ -32,13 +32,15 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences
import com.sadellie.unitto.data.model.userprefs.GeneralPreferences
import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences
import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
data class AppPreferencesImpl(
override val themingMode: String,
override val themingMode: ThemingMode,
override val enableDynamicTheme: Boolean,
override val enableAmoledTheme: Boolean,
override val customColor: Long,
override val monetMode: String,
override val monetMode: MonetMode,
override val startingScreen: String,
override val enableToolsExperiment: Boolean,
override val systemFont: Boolean,

View File

@ -37,6 +37,8 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences
import com.sadellie.unitto.data.model.userprefs.GeneralPreferences
import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences
import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.map
@ -185,9 +187,9 @@ class UserPreferencesRepositoryImpl @Inject constructor(
}
}
override suspend fun updateThemingMode(themingMode: String) {
override suspend fun updateThemingMode(themingMode: ThemingMode) {
dataStore.edit { preferences ->
preferences[PrefsKeys.THEMING_MODE] = themingMode
preferences[PrefsKeys.THEMING_MODE] = themingMode.name
}
}
@ -209,9 +211,9 @@ class UserPreferencesRepositoryImpl @Inject constructor(
}
}
override suspend fun updateMonetMode(monetMode: String) {
override suspend fun updateMonetMode(monetMode: MonetMode) {
dataStore.edit { preferences ->
preferences[PrefsKeys.MONET_MODE] = monetMode
preferences[PrefsKeys.MONET_MODE] = monetMode.name
}
}

View File

@ -55,10 +55,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import io.github.sadellie.themmo.MonetMode
import io.github.sadellie.themmo.ThemingMode
import io.github.sadellie.themmo.Themmo
import io.github.sadellie.themmo.ThemmoController
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
@Composable
internal fun MonetModeSelector(

View File

@ -67,10 +67,10 @@ import com.sadellie.unitto.core.ui.common.key.UnittoIcons
import com.sadellie.unitto.core.ui.common.key.unittoicons.Clear
import com.sadellie.unitto.feature.settings.components.ColorSelector
import com.sadellie.unitto.feature.settings.components.MonetModeSelector
import io.github.sadellie.themmo.MonetMode
import io.github.sadellie.themmo.ThemingMode
import io.github.sadellie.themmo.Themmo
import io.github.sadellie.themmo.ThemmoController
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
@Composable
internal fun DisplayRoute(

View File

@ -24,8 +24,8 @@ import androidx.lifecycle.viewModelScope
import com.sadellie.unitto.data.common.stateIn
import com.sadellie.unitto.data.model.repository.UserPreferencesRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import io.github.sadellie.themmo.MonetMode
import io.github.sadellie.themmo.ThemingMode
import io.github.sadellie.themmo.core.MonetMode
import io.github.sadellie.themmo.core.ThemingMode
import kotlinx.coroutines.launch
import javax.inject.Inject
@ -39,7 +39,7 @@ class DisplayViewModel @Inject constructor(
fun updateThemingMode(themingMode: ThemingMode) {
viewModelScope.launch {
userPrefsRepository.updateThemingMode(themingMode.name)
userPrefsRepository.updateThemingMode(themingMode)
}
}
@ -63,7 +63,7 @@ class DisplayViewModel @Inject constructor(
fun updateMonetMode(monetMode: MonetMode) {
viewModelScope.launch {
userPrefsRepository.updateMonetMode(monetMode.name)
userPrefsRepository.updateMonetMode(monetMode)
}
}

View File

@ -24,7 +24,7 @@ androidxUiAutomator = "2.2.0"
androidxWindowWindow = "1.2.0"
androidxWorkWorkRuntimeKtx = "2.9.0"
comAndroidToolsDesugarJdkLibs = "2.0.4"
comGithubSadellieThemmo = "1.2.0"
comGithubSadellieThemmo = "1.3.0"
comGoogleAccompanistAccompanistSystemuicontroller = "0.30.1"
comGoogleDagger = "2.48.1"
comSquareupMoshiMoshiKotlin = "1.15.0"
@ -69,7 +69,8 @@ androidx-test-uiautomator = { group = "androidx.test.uiautomator", name = "uiaut
androidx-window-window = { group = "androidx.window", name = "window", version.ref = "androidxWindowWindow" }
androidx-work-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "androidxWorkWorkRuntimeKtx" }
com-android-tools-desugar-jdk-libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "comAndroidToolsDesugarJdkLibs" }
com-github-sadellie-themmo = { group = "com.github.sadellie", name = "themmo", version.ref = "comGithubSadellieThemmo" }
com-github-sadellie-themmo = { group = "com.github.sadellie.themmo", name = "themmo", version.ref = "comGithubSadellieThemmo" }
com-github-sadellie-themmo-core = { group = "com.github.sadellie.themmo", name = "themmo-core", version.ref = "comGithubSadellieThemmo" }
com-google-accompanist-accompanist-systemuicontroller = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "comGoogleAccompanistAccompanistSystemuicontroller" }
com-google-dagger-android-hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "comGoogleDagger" }
com-google-dagger-dagger-android-processor = { group = "com.google.dagger", name = "dagger-android-processor", version.ref = "comGoogleDagger" }