From 45161514ccc363f9ad496cee9fe6f3d10e1d94a3 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 10 Jul 2022 00:56:34 +0200 Subject: [PATCH] Add: Dynamic theming preference --- .../kotlin/com/machiav3lli/fdroid/content/Preferences.kt | 9 ++++++++- .../machiav3lli/fdroid/ui/fragments/PrefsUserFragment.kt | 1 + src/main/kotlin/com/machiav3lli/fdroid/utility/Utils.kt | 6 ++++++ src/main/res/values/strings.xml | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt b/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt index e404d812..65fccd27 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt @@ -219,7 +219,8 @@ object Preferences { sealed class Theme(override val valueString: String) : Enumeration { override val values: List - get() = if (Android.sdk(29)) listOf(System, AmoledSystem, Light, Dark, Amoled) + get() = if (Android.sdk(31)) listOf(Dynamic, System, AmoledSystem, Light, Dark, Amoled) + else if (Android.sdk(29)) listOf(System, AmoledSystem, Light, Dark, Amoled) else listOf(Light, Dark, Amoled) abstract fun getResId(configuration: Configuration): Int @@ -238,6 +239,12 @@ object Preferences { } } + object Dynamic : Theme("dynamic-system") { + override fun getResId(configuration: Configuration): Int { + return -1 + } + } + object Light : Theme("light") { override fun getResId(configuration: Configuration): Int = R.style.Theme_Main_Light } diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUserFragment.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUserFragment.kt index 205fd84b..6b186922 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUserFragment.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUserFragment.kt @@ -32,6 +32,7 @@ class PrefsUserFragment : PrefsNavFragmentX() { is Preferences.Theme.AmoledSystem -> getString(R.string.system) + " " + getString( R.string.amoled ) + is Preferences.Theme.Dynamic -> getString(R.string.dynamic) is Preferences.Theme.Light -> getString(R.string.light) is Preferences.Theme.Dark -> getString(R.string.dark) is Preferences.Theme.Amoled -> getString(R.string.amoled) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/utility/Utils.kt b/src/main/kotlin/com/machiav3lli/fdroid/utility/Utils.kt index 450f51a1..83a1166d 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/utility/Utils.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/utility/Utils.kt @@ -241,6 +241,12 @@ val isBlackTheme: Boolean else -> false } +val isDynamicColorsTheme: Boolean + get() = when (Preferences[Preferences.Key.Theme]) { + is Preferences.Theme.Dynamic -> true + else -> false + } + fun Context.showBatteryOptimizationDialog() { AlertDialog.Builder(this) .setTitle(R.string.ignore_battery_optimization_title) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index a12875aa..9cc5f8d3 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -207,4 +207,5 @@ Loading list… Releases No versions available + System dynamic