Add custom color schemes

This commit is contained in:
MM20
2022-04-14 23:01:19 +02:00
parent 2ca05d34f0
commit 08731887cb
14 changed files with 1374 additions and 5 deletions
+1
View File
@@ -67,5 +67,6 @@ dependencies {
implementation(project(":i18n"))
implementation(project(":base"))
implementation(project(":crashreporter"))
implementation(project(":material-color-utilities"))
}
@@ -20,6 +20,7 @@ internal val Context.dataStore: LauncherDataStore by dataStore(
Migration_2_3(),
Migration_3_4(),
Migration_4_5(),
Migration_5_6(),
)
},
corruptionHandler = ReplaceFileCorruptionHandler {
@@ -29,4 +30,4 @@ internal val Context.dataStore: LauncherDataStore by dataStore(
}
)
internal const val SchemaVersion = 5
internal const val SchemaVersion = 6
@@ -1,6 +1,7 @@
package de.mm20.launcher2.preferences
import android.content.Context
import scheme.Scheme
fun createFactorySettings(context: Context): Settings {
return Settings.newBuilder()
@@ -10,6 +11,12 @@ fun createFactorySettings(context: Context): Settings {
.setTheme(Settings.AppearanceSettings.Theme.System)
.setColorScheme(Settings.AppearanceSettings.ColorScheme.Default)
.setDimWallpaper(false)
.setCustomColors(Settings.AppearanceSettings.CustomColors.newBuilder()
.setAdvancedMode(false)
.setBaseColors(DefaultCustomColorsBase)
.setLightScheme(DefaultLightCustomColorScheme)
.setDarkScheme(DefaultDarkCustomColorScheme)
)
.build()
)
.setWeather(
@@ -70,7 +77,7 @@ fun createFactorySettings(context: Context): Settings {
Settings.AppShortcutSearchSettings
.newBuilder()
.setEnabled(true)
)
)
.setCalculatorSearch(
Settings.CalculatorSearchSettings
.newBuilder()
@@ -140,4 +147,83 @@ fun createFactorySettings(context: Context): Settings {
.setOpacity(1f)
)
.build()
}
}
internal val DefaultCustomColorsBase: Settings.AppearanceSettings.CustomColors.BaseColors
get() {
val scheme = Scheme.light(0xFFACE330.toInt())
return Settings.AppearanceSettings.CustomColors.BaseColors.newBuilder()
.setAccent1(scheme.primary)
.setAccent2(scheme.secondary)
.setAccent3(scheme.tertiary)
.setNeutral1(scheme.surface)
.setNeutral2(scheme.surfaceVariant)
.setError(scheme.error)
.build()
}
internal val DefaultLightCustomColorScheme: Settings.AppearanceSettings.CustomColors.Scheme
get() {
val scheme = Scheme.light(0xFFACE330.toInt())
return Settings.AppearanceSettings.CustomColors.Scheme.newBuilder()
.setPrimary(scheme.primary)
.setOnPrimary(scheme.onPrimary)
.setPrimaryContainer(scheme.primaryContainer)
.setOnPrimaryContainer(scheme.onPrimaryContainer)
.setSecondary(scheme.secondary)
.setOnSecondary(scheme.onSecondary)
.setSecondaryContainer(scheme.secondaryContainer)
.setOnSecondaryContainer(scheme.onSecondaryContainer)
.setTertiary(scheme.tertiary)
.setOnTertiary(scheme.onTertiary)
.setTertiaryContainer(scheme.tertiaryContainer)
.setOnTertiaryContainer(scheme.onTertiaryContainer)
.setBackground(scheme.background)
.setOnBackground(scheme.onBackground)
.setSurface(scheme.surface)
.setOnSurface(scheme.onSurface)
.setSurfaceVariant(scheme.surfaceVariant)
.setOnSurfaceVariant(scheme.onSurfaceVariant)
.setError(scheme.error)
.setOnError(scheme.onError)
.setErrorContainer(scheme.errorContainer)
.setOnErrorContainer(scheme.onErrorContainer)
.setInverseSurface(scheme.inverseSurface)
.setInverseOnSurface(scheme.inverseOnSurface)
.setInversePrimary(scheme.inversePrimary)
.setOutline(scheme.outline)
.build()
}
internal val DefaultDarkCustomColorScheme: Settings.AppearanceSettings.CustomColors.Scheme
get() {
val scheme = Scheme.dark(0xFFACE330.toInt())
return Settings.AppearanceSettings.CustomColors.Scheme.newBuilder()
.setPrimary(scheme.primary)
.setOnPrimary(scheme.onPrimary)
.setPrimaryContainer(scheme.primaryContainer)
.setOnPrimaryContainer(scheme.onPrimaryContainer)
.setSecondary(scheme.secondary)
.setOnSecondary(scheme.onSecondary)
.setSecondaryContainer(scheme.secondaryContainer)
.setOnSecondaryContainer(scheme.onSecondaryContainer)
.setTertiary(scheme.tertiary)
.setOnTertiary(scheme.onTertiary)
.setTertiaryContainer(scheme.tertiaryContainer)
.setOnTertiaryContainer(scheme.onTertiaryContainer)
.setBackground(scheme.background)
.setOnBackground(scheme.onBackground)
.setSurface(scheme.surface)
.setOnSurface(scheme.onSurface)
.setSurfaceVariant(scheme.surfaceVariant)
.setOnSurfaceVariant(scheme.onSurfaceVariant)
.setError(scheme.error)
.setOnError(scheme.onError)
.setErrorContainer(scheme.errorContainer)
.setOnErrorContainer(scheme.onErrorContainer)
.setInverseSurface(scheme.inverseSurface)
.setInverseOnSurface(scheme.inverseOnSurface)
.setInversePrimary(scheme.inversePrimary)
.setOutline(scheme.outline)
.build()
}
@@ -0,0 +1,20 @@
package de.mm20.launcher2.preferences.migrations
import de.mm20.launcher2.preferences.DefaultCustomColorsBase
import de.mm20.launcher2.preferences.DefaultDarkCustomColorScheme
import de.mm20.launcher2.preferences.DefaultLightCustomColorScheme
import de.mm20.launcher2.preferences.Settings
class Migration_5_6: VersionedMigration(5, 6) {
override suspend fun applyMigrations(builder: Settings.Builder): Settings.Builder {
return builder.setAppearance(
builder.appearance.toBuilder()
.setCustomColors(Settings.AppearanceSettings.CustomColors.newBuilder()
.setAdvancedMode(false)
.setBaseColors(DefaultCustomColorsBase)
.setLightScheme(DefaultLightCustomColorScheme)
.setDarkScheme(DefaultDarkCustomColorScheme)
)
)
}
}
+44
View File
@@ -16,8 +16,52 @@ message Settings {
Default = 0;
BlackAndWhite = 1;
DebugMaterialYouCompat = 2;
Custom = 3;
}
ColorScheme color_scheme = 6;
message CustomColors {
bool advanced_mode = 1;
message BaseColors {
uint32 accent1 = 1;
uint32 accent2 = 2;
uint32 accent3 = 3;
uint32 neutral1 = 4;
uint32 neutral2 = 5;
uint32 error = 6;
}
BaseColors base_colors = 2;
message Scheme {
uint32 primary = 1;
uint32 on_primary = 2;
uint32 primary_container = 3;
uint32 on_primary_container = 4;
uint32 secondary = 5;
uint32 on_secondary = 6;
uint32 secondary_container = 7;
uint32 on_secondary_container = 8;
uint32 tertiary = 9;
uint32 on_tertiary = 10;
uint32 tertiary_container = 11;
uint32 on_tertiary_container = 12;
uint32 background = 13;
uint32 on_background = 14;
uint32 surface = 15;
uint32 on_surface = 16;
uint32 surface_variant = 17;
uint32 on_surface_variant = 18;
uint32 outline = 19;
uint32 inverse_surface = 20;
uint32 inverse_on_surface = 21;
uint32 inverse_primary = 22;
uint32 error = 23;
uint32 on_error = 24;
uint32 error_container = 25;
uint32 on_error_container = 26;
}
Scheme light_scheme = 3;
Scheme dark_scheme = 4;
}
CustomColors custom_colors = 8;
bool dim_wallpaper = 7;
}
AppearanceSettings appearance = 2;