Add custom color schemes
This commit is contained in:
@@ -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)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user