summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/preferences
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2023-02-18 14:51:55 +0100
committerGitHub <noreply@github.com>2023-02-18 14:51:55 +0100
commit997860fe522e67dff087e4184a80fc9656de28d8 (patch)
tree75387ba9614686b8251950cdd375ed162fc5cbaf /app/src/main/java/de/danoeh/antennapod/preferences
parentcaf49c5da8a2f541b099ff32c15a7e96e1c557e8 (diff)
downloadAntennaPod-997860fe522e67dff087e4184a80fc9656de28d8.zip
Extra toggle for full black theme (#6328)
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/preferences')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java8
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/ThemePreference.java53
2 files changed, 61 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java
index e093c067d..79d06de59 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceUpgrader.java
@@ -133,5 +133,13 @@ public class PreferenceUpgrader {
"" + UserPreferences.EPISODE_CACHE_SIZE_UNLIMITED).apply();
}
}
+ if (oldVersion < 3010000) {
+ if (prefs.getString(UserPreferences.PREF_THEME, "system").equals("2")) {
+ prefs.edit()
+ .putString(UserPreferences.PREF_THEME, "1")
+ .putBoolean(UserPreferences.PREF_THEME_BLACK, true)
+ .apply();
+ }
+ }
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/ThemePreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/ThemePreference.java
new file mode 100644
index 000000000..30cbeb523
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/ThemePreference.java
@@ -0,0 +1,53 @@
+package de.danoeh.antennapod.preferences;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import androidx.cardview.widget.CardView;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+import com.google.android.material.elevation.SurfaceColors;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.databinding.ThemePreferenceBinding;
+import de.danoeh.antennapod.storage.preferences.UserPreferences;
+
+public class ThemePreference extends Preference {
+ ThemePreferenceBinding viewBinding;
+
+ public ThemePreference(Context context) {
+ super(context);
+ setLayoutResource(R.layout.theme_preference);
+ }
+
+ public ThemePreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setLayoutResource(R.layout.theme_preference);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ viewBinding = ThemePreferenceBinding.bind(holder.itemView);
+ updateUi();
+ }
+
+ void updateThemeCard(CardView card, UserPreferences.ThemePreference theme) {
+ float density = getContext().getResources().getDisplayMetrics().density;
+ int surfaceColor = SurfaceColors.getColorForElevation(getContext(), 1 * density);
+ int surfaceColorActive = SurfaceColors.getColorForElevation(getContext(), 32 * density);
+ UserPreferences.ThemePreference activeTheme = UserPreferences.getTheme();
+ card.setCardBackgroundColor(theme == activeTheme ? surfaceColorActive : surfaceColor);
+ card.setOnClickListener(v -> {
+ UserPreferences.setTheme(theme);
+ if (getOnPreferenceChangeListener() != null) {
+ getOnPreferenceChangeListener().onPreferenceChange(this, UserPreferences.getTheme());
+ }
+ updateUi();
+ });
+ }
+
+ void updateUi() {
+ updateThemeCard(viewBinding.themeSystemCard, UserPreferences.ThemePreference.SYSTEM);
+ updateThemeCard(viewBinding.themeLightCard, UserPreferences.ThemePreference.LIGHT);
+ updateThemeCard(viewBinding.themeDarkCard, UserPreferences.ThemePreference.DARK);
+ }
+}