diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
index 74bf61c5..24ca4b90 100644
--- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsThemeActivity.kt
@@ -8,6 +8,7 @@ import android.view.KeyEvent
import android.view.View
import android.view.WindowManager
import androidx.annotation.ColorInt
+import androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode
import androidx.core.content.ContextCompat
import code.name.monkey.appthemehelper.ATH
import code.name.monkey.appthemehelper.ThemeStore
@@ -19,14 +20,14 @@ import code.name.monkey.appthemehelper.util.VersionUtils
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
-import code.name.monkey.retromusic.util.ThemeManager
+import code.name.monkey.retromusic.util.theme.ThemeManager
abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
private val handler = Handler()
override fun onCreate(savedInstanceState: Bundle?) {
- setTheme(ThemeManager.getThemeResValue(this))
+ updateTheme()
hideStatusBar()
super.onCreate(savedInstanceState)
setImmersiveFullscreen()
@@ -34,6 +35,11 @@ abstract class AbsThemeActivity : ATHToolbarActivity(), Runnable {
toggleScreenOn()
}
+ private fun updateTheme() {
+ setTheme(ThemeManager.getThemeResValue(this))
+ setDefaultNightMode(ThemeManager.getNightMode(this))
+ }
+
private fun toggleScreenOn() {
if (PreferenceUtil.getInstance(this).isScreenOnEnabled) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java
index 5ed9fb34..924e9699 100644
--- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java
+++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.java
@@ -57,6 +57,7 @@ import code.name.monkey.retromusic.transform.HorizontalFlipTransformation;
import code.name.monkey.retromusic.transform.NormalPageTransformer;
import code.name.monkey.retromusic.transform.VerticalFlipTransformation;
import code.name.monkey.retromusic.transform.VerticalStackTransformer;
+import code.name.monkey.retromusic.util.theme.ThemeMode;
public final class PreferenceUtil {
@@ -527,11 +528,20 @@ public final class PreferenceUtil {
}
@NonNull
- public String getGeneralThemeValue() {
+ public ThemeMode getGeneralThemeValue() {
if (isBlackMode()) {
- return "black";
+ return ThemeMode.BLACK;
} else {
- return mPreferences.getString(GENERAL_THEME, "dark");
+ String themeMode = mPreferences.getString(GENERAL_THEME, "dark");
+ switch (themeMode) {
+ case "light":
+ return ThemeMode.LIGHT;
+ case "dark":
+ return ThemeMode.DARK;
+ case "auto":
+ default:
+ return ThemeMode.AUTO;
+ }
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt
deleted file mode 100644
index 4eaa224b..00000000
--- a/app/src/main/java/code/name/monkey/retromusic/util/ThemeManager.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package code.name.monkey.retromusic.util
-
-import android.content.Context
-import android.content.res.Configuration.UI_MODE_NIGHT_MASK
-import android.content.res.Configuration.UI_MODE_NIGHT_YES
-import android.os.PowerManager
-import androidx.annotation.StyleRes
-import code.name.monkey.retromusic.R
-
-/**
- * @author Paolo Valerdi
- */
-object ThemeManager {
-
- @StyleRes
- fun getThemeResValue(context: Context): Int =
- when (PreferenceUtil.getInstance(context).generalThemeValue) {
- "light" -> R.style.Theme_RetroMusic_Light
- "dark" -> R.style.Theme_RetroMusic_Base
- "auto" -> R.style.Theme_RetroMusic_FollowSystem
- "black" -> R.style.Theme_RetroMusic_Black
- else -> R.style.Theme_RetroMusic_FollowSystem
- }
-
- private fun isSystemDarkModeEnabled(context: Context): Boolean {
- val isBatterySaverEnabled =
- (context.getSystemService(Context.POWER_SERVICE) as PowerManager?)?.isPowerSaveMode
- ?: false
- val isDarkModeEnabled =
- (context.resources.configuration.uiMode and UI_MODE_NIGHT_MASK) == UI_MODE_NIGHT_YES
-
- return isBatterySaverEnabled or isDarkModeEnabled
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeManager.kt b/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeManager.kt
new file mode 100644
index 00000000..542fdbe5
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeManager.kt
@@ -0,0 +1,50 @@
+package code.name.monkey.retromusic.util.theme
+
+import android.content.Context
+import android.content.res.Configuration.UI_MODE_NIGHT_MASK
+import android.content.res.Configuration.UI_MODE_NIGHT_YES
+import android.os.PowerManager
+import androidx.annotation.StyleRes
+import androidx.appcompat.app.AppCompatDelegate
+import code.name.monkey.retromusic.R
+import code.name.monkey.retromusic.util.PreferenceUtil
+import code.name.monkey.retromusic.util.theme.ThemeMode.*
+
+/**
+ * @author Paolo Valerdi
+ */
+object ThemeManager {
+
+ @StyleRes
+ fun getThemeResValue(
+ context: Context
+ ): Int = when (context.generalThemeValue) {
+ LIGHT -> R.style.Theme_RetroMusic_Light
+ DARK -> R.style.Theme_RetroMusic_Base
+ BLACK -> R.style.Theme_RetroMusic_Black
+ AUTO -> R.style.Theme_RetroMusic_FollowSystem
+ }
+
+ fun getNightMode(
+ context: Context
+ ): Int = when (context.generalThemeValue) {
+ LIGHT -> AppCompatDelegate.MODE_NIGHT_NO
+ DARK,
+ BLACK -> AppCompatDelegate.MODE_NIGHT_YES
+ AUTO -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
+ }
+
+ private fun isSystemDarkModeEnabled(context: Context): Boolean {
+ val isBatterySaverEnabled =
+ (context.getSystemService(Context.POWER_SERVICE) as PowerManager?)?.isPowerSaveMode
+ ?: false
+ val isDarkModeEnabled =
+ (context.resources.configuration.uiMode and UI_MODE_NIGHT_MASK) == UI_MODE_NIGHT_YES
+
+ return isBatterySaverEnabled or isDarkModeEnabled
+ }
+
+}
+
+val Context.generalThemeValue: ThemeMode
+ get() = PreferenceUtil.getInstance(this).generalThemeValue
\ No newline at end of file
diff --git a/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeMode.kt b/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeMode.kt
new file mode 100644
index 00000000..88086741
--- /dev/null
+++ b/app/src/main/java/code/name/monkey/retromusic/util/theme/ThemeMode.kt
@@ -0,0 +1,8 @@
+package code.name.monkey.retromusic.util.theme
+
+enum class ThemeMode {
+ LIGHT,
+ DARK,
+ BLACK,
+ AUTO
+}
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
new file mode 100644
index 00000000..9a919933
--- /dev/null
+++ b/app/src/main/res/values-night/colors.xml
@@ -0,0 +1,6 @@
+
+
+
+ @android:color/black
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index e512f372..57d3cb48 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -16,12 +16,14 @@
- @android:color/transparent
- false
- @style/TextViewStyleIm
+ - @color/window_color_dark
diff --git a/app/src/main/res/values-v27/styles_parents.xml b/app/src/main/res/values-v27/styles_parents.xml
index bb5dd329..3e26a85c 100644
--- a/app/src/main/res/values-v27/styles_parents.xml
+++ b/app/src/main/res/values-v27/styles_parents.xml
@@ -56,7 +56,7 @@
- false
- @color/darkColorSurface
-
+ - @color/window_color_dark
-
+
-
+
diff --git a/app/src/main/res/values/styles_parents.xml b/app/src/main/res/values/styles_parents.xml
index a12b8d5e..9df8b168 100644
--- a/app/src/main/res/values/styles_parents.xml
+++ b/app/src/main/res/values/styles_parents.xml
@@ -41,6 +41,7 @@
- @color/darkColorSurface
+ - @color/window_color_dark