From e8bb4bac66c65b66d2d4e85895d092f54343f806 Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Wed, 26 Jan 2022 00:45:59 +0300 Subject: [PATCH] Implement dynamic theme option --- .../koitharu/kotatsu/base/ui/BaseActivity.kt | 5 ++- .../kotatsu/core/prefs/AppSettings.kt | 2 + .../kotatsu/list/ui/MangaListFragment.kt | 4 +- .../kotatsu/settings/MainSettingsFragment.kt | 3 ++ app/src/main/res/values-night-v31/themes.xml | 44 +++++++++++++++++++ app/src/main/res/values-v31/themes.xml | 44 +++++++++++++++++++ 6 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/values-night-v31/themes.xml create mode 100644 app/src/main/res/values-v31/themes.xml diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt index 2be9a19c6..32ff25748 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt @@ -35,8 +35,9 @@ abstract class BaseActivity : AppCompatActivity(), OnApplyWindo private var lastInsets: Insets = Insets.NONE override fun onCreate(savedInstanceState: Bundle?) { - if (get().isAmoledTheme) { - setTheme(R.style.ThemeOverlay_Kotatsu_AMOLED) + when { + get().isAmoledTheme -> setTheme(R.style.ThemeOverlay_Kotatsu_AMOLED) + get().isDynamicTheme -> setTheme(R.style.Theme_Kotatsu_Monet) } super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt index b861986fd..44275715b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -42,6 +42,8 @@ class AppSettings private constructor(private val prefs: SharedPreferences) : AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM ) + val isDynamicTheme by BoolPreferenceDelegate(KEY_DYNAMIC_THEME, defaultValue = false) + val isAmoledTheme by BoolPreferenceDelegate(KEY_THEME_AMOLED, defaultValue = false) val isToolbarHideWhenScrolling by BoolPreferenceDelegate(KEY_HIDE_TOOLBAR, defaultValue = true) diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt index 130c2a2ee..bee787480 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt @@ -84,8 +84,8 @@ abstract class MangaListFragment : BaseFragment(), addOnScrollListener(paginationListener!!) } with(binding.swipeRefreshLayout) { - setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.kotatsu_primary)) - setColorSchemeColors(ContextCompat.getColor(context, R.color.kotatsu_onPrimary)) + setProgressBackgroundColorSchemeColor(context.getThemeColor(com.google.android.material.R.attr.colorPrimary)) + setColorSchemeColors(context.getThemeColor(com.google.android.material.R.attr.colorOnPrimary)) setOnRefreshListener(this@MangaListFragment) isEnabled = isSwipeRefreshEnabled } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt index 006a29f24..ec4c56690 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/MainSettingsFragment.kt @@ -77,6 +77,9 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings), AppSettings.KEY_THEME -> { AppCompatDelegate.setDefaultNightMode(settings.theme) } + AppSettings.KEY_DYNAMIC_THEME -> { + findPreference(key)?.setSummary(R.string.restart_required) + } AppSettings.KEY_THEME_AMOLED -> { findPreference(key)?.setSummary(R.string.restart_required) } diff --git a/app/src/main/res/values-night-v31/themes.xml b/app/src/main/res/values-night-v31/themes.xml new file mode 100644 index 000000000..a19e8d7ad --- /dev/null +++ b/app/src/main/res/values-night-v31/themes.xml @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml new file mode 100644 index 000000000..fd0950ca4 --- /dev/null +++ b/app/src/main/res/values-v31/themes.xml @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file