From 5eb101323b93da501a487a00b28b992be8dd4a92 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com> Date: Wed, 3 Aug 2022 09:21:01 +0200 Subject: [PATCH] Enable Material You Dynamic colors (#138) --- app/build.gradle.kts | 1 - app/src/main/AndroidManifest.xml | 1 - .../java/dev/jdtech/jellyfin/BaseApplication.kt | 17 +++++++++++------ .../java/dev/jdtech/jellyfin/MainActivity.kt | 2 -- .../dev/jdtech/jellyfin/utils/AppPreferences.kt | 5 +++++ .../java/dev/jdtech/jellyfin/utils/Constants.kt | 2 ++ app/src/main/res/values-night/themes.xml | 6 ------ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/themes.xml | 6 ------ .../res/xml/fragment_settings_appearance.xml | 5 +++++ 10 files changed, 25 insertions(+), 22 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e2d6ae5a..3f32203f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -59,7 +59,6 @@ dependencies { implementation("androidx.leanback:leanback:1.2.0-alpha02") implementation("androidx.core:core-ktx:1.8.0") - implementation("androidx.core:core-splashscreen:1.0.0") implementation("androidx.appcompat:appcompat:1.4.2") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bdc281eb..aa8206fb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,7 +30,6 @@ diff --git a/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt b/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt index 1fbd0f5d..adcca719 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt @@ -3,23 +3,28 @@ package dev.jdtech.jellyfin import android.app.Application import androidx.appcompat.app.AppCompatDelegate import androidx.preference.PreferenceManager +import com.google.android.material.color.DynamicColors import dagger.hilt.android.HiltAndroidApp +import dev.jdtech.jellyfin.utils.AppPreferences import timber.log.Timber @HiltAndroidApp class BaseApplication : Application() { override fun onCreate() { - val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) + super.onCreate() - when (sharedPreferences.getString("theme", null)) { + if (BuildConfig.DEBUG) { + Timber.plant(Timber.DebugTree()) + } + + val appPreferences = AppPreferences(PreferenceManager.getDefaultSharedPreferences(this)) + + when (appPreferences.theme) { "system" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) "light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) "dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) } - super.onCreate() - if (BuildConfig.DEBUG) { - Timber.plant(Timber.DebugTree()) - } + if (appPreferences.dynamicColors) DynamicColors.applyToActivitiesIfAvailable(this) } } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt index 4e8361bd..d143ab49 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt @@ -3,7 +3,6 @@ package dev.jdtech.jellyfin import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity -import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.NavigationUI @@ -23,7 +22,6 @@ class MainActivity : AppCompatActivity() { lateinit var database: ServerDatabaseDao override fun onCreate(savedInstanceState: Bundle?) { - installSplashScreen() super.onCreate(savedInstanceState) binding = ActivityMainAppBinding.inflate(layoutInflater) diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt index acd14ed3..8806bd6b 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/utils/AppPreferences.kt @@ -12,6 +12,11 @@ class AppPreferences constructor( private val sharedPreferences: SharedPreferences ) { + // Appearance + val theme = sharedPreferences.getString(Constants.PREF_THEME, null) + val dynamicColors = sharedPreferences.getBoolean(Constants.PREF_DYNAMIC_COLORS, true) + + // Player val playerGestures = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES, true) val playerGesturesVB = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_VB, true) val playerGesturesZoom = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_ZOOM, true) diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt index d3999808..410da67a 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/utils/Constants.kt @@ -17,6 +17,8 @@ object Constants { const val PREF_PLAYER_SEEK_FORWARD_INC = "pref_player_seek_forward_inc" const val PREF_IMAGE_CACHE = "pref_image_cache" const val PREF_IMAGE_CACHE_SIZE = "pref_image_cache_size" + const val PREF_THEME = "theme" + const val PREF_DYNAMIC_COLORS = "dynamic_colors" // caching const val DEFAULT_CACHE_SIZE = 20 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 26f3ae9d..76453273 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -16,10 +16,4 @@ @color/neutral_1000 @color/neutral_900 - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6cc3c2c9..60125c48 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -128,4 +128,6 @@ Seeking Seek back increment (ms) Seek forward increment (ms) + Dynamic colors + Use Material You Dynamic colors (only available on Android 12+) \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0394263e..15b378be 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -39,12 +39,6 @@ false - - Follow system Light diff --git a/app/src/main/res/xml/fragment_settings_appearance.xml b/app/src/main/res/xml/fragment_settings_appearance.xml index 2c5cf939..6349396b 100644 --- a/app/src/main/res/xml/fragment_settings_appearance.xml +++ b/app/src/main/res/xml/fragment_settings_appearance.xml @@ -7,4 +7,9 @@ app:key="theme" app:title="@string/theme" app:useSimpleSummaryProvider="true" /> + \ No newline at end of file