From 4ce4812317645cae4cf361461614285c406608f0 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 29 Mar 2024 16:53:45 +0100 Subject: [PATCH] Add clock widget preference migration, remove OnePlus variant --- .../widgets/clock/WatchFaceSelector.kt | 4 --- .../widgets/clock/clocks/DigitalClock1.kt | 31 +++---------------- .../preferences/LauncherDataStore.kt | 6 +++- .../preferences/LauncherSettingsData.kt | 7 +++-- .../preferences/migrations/Migration1.kt | 4 +-- .../preferences/migrations/Migration2.kt | 21 +++++++++++++ 6 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration2.kt diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt index 9803a906..82f2474f 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt @@ -77,7 +77,6 @@ fun WatchFaceSelector( mapOf( ClockStyle.DigitalClock1 to 0, ClockStyle.DigitalClock1_Outlined to 0, - ClockStyle.DigitalClock1_OnePlus to 0, ClockStyle.DigitalClock2 to 1, ClockStyle.AnalogClock to 2, ClockStyle.OrbitClock to 3, @@ -258,7 +257,6 @@ fun getClockstyleName(context: Context, style: ClockWidgetStyle): String { return when (style) { ClockStyle.DigitalClock1, ClockStyle.DigitalClock1_Outlined, - ClockStyle.DigitalClock1_OnePlus -> context.getString(R.string.clock_style_digital1) ClockStyle.DigitalClock2 -> context.getString(R.string.clock_style_digital2) ClockStyle.OrbitClock -> context.getString(R.string.clock_style_orbit) ClockStyle.BinaryClock -> context.getString(R.string.clock_style_binary) @@ -279,7 +277,6 @@ fun getVariantName(context: Context, style: ClockWidgetStyle): String { ClockStyle.SegmentClock, ClockStyle.EmptyClock -> context.getString(R.string.clock_variant_standard) ClockStyle.DigitalClock1_Outlined -> context.getString(R.string.clock_variant_outlined) - ClockStyle.DigitalClock1_OnePlus -> "OnePlus" else -> "" } @@ -289,7 +286,6 @@ fun getVariantName(context: Context, style: ClockWidgetStyle): String { object ClockStyle { val DigitalClock1 = ClockWidgetStyle.Digital1() val DigitalClock1_Outlined = ClockWidgetStyle.Digital1(outlined = true) - val DigitalClock1_OnePlus = ClockWidgetStyle.Digital1(variant = ClockWidgetStyle.Digital1.Variant.OnePlus) val DigitalClock2 = ClockWidgetStyle.Digital2 val OrbitClock = ClockWidgetStyle.Orbit val AnalogClock = ClockWidgetStyle.Analog diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/clocks/DigitalClock1.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/clocks/DigitalClock1.kt index c66fac36..178d38ce 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/clocks/DigitalClock1.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/clocks/DigitalClock1.kt @@ -84,32 +84,11 @@ fun DigitalClock1( Column( verticalArrangement = Arrangement.Center ) { - if (style.variant == ClockWidgetStyle.Digital1.Variant.OnePlus) { - val hour = formattedString.substring(0, 2) - Text( - modifier = modifier, - text = buildAnnotatedString { - hour.forEach { - if (it == '1') { - withStyle(style = SpanStyle(color = Color(0xFFC41442))) { - append(it) - } - } else { - append(it) - } - } - append(formattedString.substring(2)) - }, - style = textStyle - ) - } - else { - Text( - modifier = modifier, - text = formattedString, - style = textStyle, - ) - } + Text( + modifier = modifier, + text = formattedString, + style = textStyle, + ) if (verticalLayout && showSeconds) { Text( diff --git a/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherDataStore.kt b/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherDataStore.kt index 5b2e47d7..4cb927bd 100644 --- a/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherDataStore.kt +++ b/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherDataStore.kt @@ -2,6 +2,7 @@ package de.mm20.launcher2.preferences import android.content.Context import de.mm20.launcher2.preferences.migrations.Migration1 +import de.mm20.launcher2.preferences.migrations.Migration2 import de.mm20.launcher2.settings.BaseSettings internal class LauncherDataStore( @@ -11,7 +12,10 @@ internal class LauncherDataStore( context, fileName = "settings.json", serializer = LauncherSettingsDataSerializer, - migrations = listOf(Migration1(legacyDataStore)), + migrations = listOf( + Migration1(legacyDataStore), + Migration2(), + ), ) { val data diff --git a/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherSettingsData.kt b/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherSettingsData.kt index 21f16f20..6c04462a 100644 --- a/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherSettingsData.kt +++ b/core/preferences/src/main/java/de/mm20/launcher2/preferences/LauncherSettingsData.kt @@ -4,11 +4,10 @@ import android.content.Context import de.mm20.launcher2.preferences.search.LocationSearchSettings import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -import java.util.UUID @Serializable data class LauncherSettingsData( - val schemaVersion: Int = 1, + val schemaVersion: Int = 2, val uiColorScheme: ColorScheme = ColorScheme.System, val uiTheme: ThemeDescriptor = ThemeDescriptor.Default, @@ -186,12 +185,14 @@ sealed interface ClockWidgetStyle { @SerialName("digital1") data class Digital1( val outlined: Boolean = false, + @Deprecated("Variant.MDY has been replaced with LauncherSettingsData.clockWidgetUseThemeColor") val variant: Variant = Variant.Default, ) : ClockWidgetStyle { @Serializable + @Deprecated("No longer in use") enum class Variant { Default, - OnePlus, + MDY, } } diff --git a/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration1.kt b/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration1.kt index 6b95acb5..7798c624 100644 --- a/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration1.kt +++ b/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration1.kt @@ -76,7 +76,7 @@ class Migration1( LegacySettings.ClockWidgetSettings.ClockStyle.AnalogClock -> ClockWidgetStyle.Analog LegacySettings.ClockWidgetSettings.ClockStyle.EmptyClock -> ClockWidgetStyle.Empty LegacySettings.ClockWidgetSettings.ClockStyle.DigitalClock1_MDY -> ClockWidgetStyle.Digital1( - variant = ClockWidgetStyle.Digital1.Variant.Default + variant = ClockWidgetStyle.Digital1.Variant.MDY ) LegacySettings.ClockWidgetSettings.ClockStyle.DigitalClock1_Outlined -> ClockWidgetStyle.Digital1( @@ -84,7 +84,7 @@ class Migration1( ) LegacySettings.ClockWidgetSettings.ClockStyle.DigitalClock1_OnePlus -> ClockWidgetStyle.Digital1( - variant = ClockWidgetStyle.Digital1.Variant.OnePlus + variant = ClockWidgetStyle.Digital1.Variant.Default ) else -> ClockWidgetStyle.Digital1() diff --git a/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration2.kt b/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration2.kt new file mode 100644 index 00000000..94352638 --- /dev/null +++ b/core/preferences/src/main/java/de/mm20/launcher2/preferences/migrations/Migration2.kt @@ -0,0 +1,21 @@ +package de.mm20.launcher2.preferences.migrations + +import androidx.datastore.core.DataMigration +import de.mm20.launcher2.preferences.ClockWidgetStyle.Digital1 +import de.mm20.launcher2.preferences.LauncherSettingsData + +class Migration2 : DataMigration { + override suspend fun cleanUp() { + } + + override suspend fun shouldMigrate(currentData: LauncherSettingsData): Boolean { + return currentData.schemaVersion < 2 + } + + override suspend fun migrate(currentData: LauncherSettingsData): LauncherSettingsData { + return currentData.copy( + schemaVersion = 2, + clockWidgetUseThemeColor = (currentData.clockWidgetStyle as? Digital1)?.variant == Digital1.Variant.MDY + ) + } +} \ No newline at end of file