From cf4aecbd3e58ff0760942b6cb24daab281549b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Sch=C3=A4ttgen?= Date: Thu, 28 Mar 2019 00:54:30 +0100 Subject: [PATCH] Refactor dark mode to allow multiple themes --- .../beemdevelopment/aegis/Preferences.java | 9 ++++++++ .../java/com/beemdevelopment/aegis/Theme.java | 19 +++++++++++++++++ .../aegis/ui/AegisActivity.java | 21 +++++++++++++------ .../aegis/ui/EditEntryActivity.java | 10 +-------- .../aegis/ui/PreferencesActivity.java | 17 +++++++++++++++ .../aegis/ui/ScannerActivity.java | 3 ++- app/src/main/res/xml/preferences.xml | 2 +- 7 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/beemdevelopment/aegis/Theme.java diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index 7c0e4e73..b4c5d920 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -43,6 +43,15 @@ public class Preferences { return _prefs.getInt("pref_tap_to_reveal_time", 30); } + public int getCurrentTheme() { + return _prefs.getInt("pref_current_theme", 0); + } + + public void setCurrentTheme(Theme theme) { + _prefs.edit().putInt("pref_current_theme", theme.ordinal()).apply(); + + } + public int getTimeout() { return _prefs.getInt("pref_timeout", -1); diff --git a/app/src/main/java/com/beemdevelopment/aegis/Theme.java b/app/src/main/java/com/beemdevelopment/aegis/Theme.java new file mode 100644 index 00000000..b5684eaa --- /dev/null +++ b/app/src/main/java/com/beemdevelopment/aegis/Theme.java @@ -0,0 +1,19 @@ +package com.beemdevelopment.aegis; + +public enum Theme { + LIGHT, + DARK, + AMOLED; + + public static Theme fromInteger(int x) { + switch(x) { + case 0: + return LIGHT; + case 1: + return DARK; + case 2: + return AMOLED; + } + return null; + } +} diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index b79cf9a3..ba23cba9 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -7,6 +7,7 @@ import android.view.WindowManager; import com.beemdevelopment.aegis.AegisApplication; import com.beemdevelopment.aegis.Preferences; import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.Theme; public abstract class AegisActivity extends AppCompatActivity { private AegisApplication _app; @@ -22,7 +23,7 @@ public abstract class AegisActivity extends AppCompatActivity { } // set the theme - setPreferredTheme(getPreferences().isDarkModeEnabled()); + setPreferredTheme(Theme.fromInteger(getPreferences().getCurrentTheme())); } protected AegisApplication getApp() { @@ -33,11 +34,19 @@ public abstract class AegisActivity extends AppCompatActivity { return _app.getPreferences(); } - protected void setPreferredTheme(boolean darkMode) { - if (darkMode) { - setTheme(R.style.AppTheme_Dark); - } else { - setTheme(R.style.AppTheme); + protected void setPreferredTheme(Theme theme) { + switch (theme) { + case LIGHT: + setTheme(R.style.AppTheme); + break; + + case DARK: + setTheme(R.style.AppTheme_Dark); + break; + + case AMOLED: + setTheme(R.style.AppTheme_TrueBlack); + break; } } } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java index 19c350d4..d0c33256 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java @@ -30,6 +30,7 @@ import android.widget.TableRow; import com.amulyakhare.textdrawable.TextDrawable; import com.avito.android.krop.KropView; +import com.beemdevelopment.aegis.Theme; import com.beemdevelopment.aegis.encoding.Base32; import com.beemdevelopment.aegis.encoding.Base32Exception; import com.beemdevelopment.aegis.helpers.EditTextHelper; @@ -253,15 +254,6 @@ public class EditEntryActivity extends AegisActivity { } } - @Override - protected void setPreferredTheme(boolean darkMode) { - if (darkMode) { - setTheme(R.style.AppTheme_Dark); - } else { - setTheme(R.style.AppTheme); - } - } - private void openAdvancedSettings() { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java index 14406d22..28117081 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java @@ -2,6 +2,9 @@ package com.beemdevelopment.aegis.ui; import android.os.Bundle; +import com.beemdevelopment.aegis.R; +import com.beemdevelopment.aegis.Theme; + public class PreferencesActivity extends AegisActivity { private PreferencesFragment _fragment; @@ -36,4 +39,18 @@ public class PreferencesActivity extends AegisActivity { outState.putParcelable("result", _fragment.getResult()); super.onSaveInstanceState(outState); } + + @Override + protected void setPreferredTheme(Theme theme) { + switch (theme) { + case LIGHT: + setTheme(R.style.AppTheme); + break; + + case DARK: + case AMOLED: + setTheme(R.style.AppTheme_Dark); + break; + } + } } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java index 35e56608..4ff9fe04 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/ScannerActivity.java @@ -8,6 +8,7 @@ import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; +import com.beemdevelopment.aegis.Theme; import com.google.zxing.BarcodeFormat; import com.google.zxing.Result; import com.beemdevelopment.aegis.helpers.SquareFinderView; @@ -57,7 +58,7 @@ public class ScannerActivity extends AegisActivity implements ZXingScannerView.R } @Override - protected void setPreferredTheme(boolean darkMode) { + protected void setPreferredTheme(Theme theme) { setTheme(R.style.AppTheme_Fullscreen); } diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 4fcf60fd..6e28e8e3 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -7,7 +7,7 @@ -