diff options
author | Florian <64581222+fm-sys@users.noreply.github.com> | 2020-12-13 18:30:56 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2020-12-15 12:29:56 +0300 |
commit | 6daf31e3fa8fca6fbbffacffefa0dda8b4c92a4b (patch) | |
tree | 73b86a38d78219a3b639f23cc97da0c0bf9b10bb /app/src/main/java/it/niedermann/nextcloud/deck | |
parent | c3181dbb924b93922163762d046cfb991238e850 (diff) |
store night mode setting as integer instead of string
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck')
4 files changed, 12 insertions, 87 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java index 2fc725784..5518e8e9e 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java @@ -8,8 +8,6 @@ import androidx.annotation.NonNull; import androidx.multidex.MultiDexApplication; import androidx.preference.PreferenceManager; -import it.niedermann.nextcloud.deck.ui.settings.DarkModeSetting; - import static androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode; public class DeckApplication extends MultiDexApplication { @@ -31,27 +29,27 @@ public class DeckApplication extends MultiDexApplication { // Day / Night theme // ----------------- - public static void setAppTheme(DarkModeSetting setting) { - setDefaultNightMode(setting.getModeId()); + public static void setAppTheme(int setting) { + setDefaultNightMode(setting); } - public static DarkModeSetting getAppTheme(@NonNull Context context) { + public static int getAppTheme(@NonNull Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String mode; try { - mode = prefs.getString(PREF_KEY_THEME, DarkModeSetting.SYSTEM_DEFAULT.getPreferenceValue(context)); + mode = prefs.getString(PREF_KEY_THEME, context.getString(R.string.pref_value_theme_system_default)); } catch (ClassCastException e) { boolean darkModeEnabled = prefs.getBoolean(PREF_KEY_THEME, false); - mode = darkModeEnabled ? DarkModeSetting.DARK.getPreferenceValue(context) : DarkModeSetting.LIGHT.getPreferenceValue(context); + mode = darkModeEnabled ? context.getString(R.string.pref_value_theme_dark) : context.getString(R.string.pref_value_theme_light); } - return DarkModeSetting.fromPreferenceValue(context, mode); + return Integer.parseInt(mode); } - public static boolean isDarkThemeActive(@NonNull Context context, DarkModeSetting setting) { - if (setting == DarkModeSetting.SYSTEM_DEFAULT) { + public static boolean isDarkThemeActive(@NonNull Context context, int darkModeSetting) { + if (darkModeSetting == Integer.parseInt(context.getString(R.string.pref_value_theme_system_default))) { return isDarkThemeActive(context); } else { - return setting == DarkModeSetting.DARK; + return darkModeSetting == Integer.parseInt(context.getString(R.string.pref_value_theme_dark)); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java index f06b25230..f93446322 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java @@ -69,7 +69,6 @@ import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.projects.Oc import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.projects.OcsProjectResourceDao; import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.widgets.SingleCardWidgetModelDao; import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao.widgets.StackWidgetModelDao; -import it.niedermann.nextcloud.deck.ui.settings.DarkModeSetting; @Database( entities = { @@ -285,7 +284,7 @@ public abstract class DeckDatabase extends RoomDatabase { String colorAsString1 = cursor.getString(4); // color String colorAsString2 = cursor.getString(5); // textColor - @ColorInt Integer color1 = null; + @ColorInt int color1; @ColorInt Integer color2 = null; try { color1 = Color.parseColor(ColorUtil.INSTANCE.formatColorToParsableHexString(colorAsString1)); @@ -467,7 +466,7 @@ public abstract class DeckDatabase extends RoomDatabase { SharedPreferences.Editor editor = sharedPreferences.edit(); final boolean darkTheme = sharedPreferences.getBoolean(themePref, false); editor.remove(themePref); - editor.putString(themePref, darkTheme ? DarkModeSetting.DARK.getPreferenceValue(context) : DarkModeSetting.LIGHT.getPreferenceValue(context)); + editor.putString(themePref, darkTheme ? context.getString(R.string.pref_value_theme_dark) : context.getString(R.string.pref_value_theme_light)); editor.apply(); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/DarkModeSetting.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/DarkModeSetting.java deleted file mode 100644 index 14e63423e..000000000 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/DarkModeSetting.java +++ /dev/null @@ -1,70 +0,0 @@ -package it.niedermann.nextcloud.deck.ui.settings; - -import android.content.Context; - -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; -import androidx.appcompat.app.AppCompatDelegate; - -import java.util.NoSuchElementException; - -import it.niedermann.nextcloud.deck.R; - -/** - * Possible values of the Dark Mode Setting. - * <p> - * The Dark Mode Setting can be stored in {@link android.content.SharedPreferences} as String by using {@link DarkModeSetting#getPreferenceValue(Context)} and received via {@link DarkModeSetting#fromPreferenceValue(Context, String)}. - * <p> - * Additionally, the equivalent {@link AppCompatDelegate}-Mode can be received via {@link #getModeId()}. - * - * @see AppCompatDelegate#MODE_NIGHT_YES - * @see AppCompatDelegate#MODE_NIGHT_NO - * @see AppCompatDelegate#MODE_NIGHT_FOLLOW_SYSTEM - */ -public enum DarkModeSetting { - - /** - * Always use light mode. - */ - LIGHT(AppCompatDelegate.MODE_NIGHT_NO, R.string.pref_value_theme_light), - /** - * Always use dark mode. - */ - DARK(AppCompatDelegate.MODE_NIGHT_YES, R.string.pref_value_theme_dark), - /** - * Follow the global system setting for dark mode. - */ - SYSTEM_DEFAULT(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM, R.string.pref_value_theme_system_default); - - private final int modeId; - private final @StringRes int preferenceValue; - - DarkModeSetting(int modeId, @StringRes int preferenceValue) { - this.modeId = modeId; - this.preferenceValue = preferenceValue; - } - - public int getModeId() { - return modeId; - } - - public String getPreferenceValue(@NonNull Context context) { - return context.getString(preferenceValue); - } - - /** - * Returns the instance of {@link DarkModeSetting} that corresponds to the preferenceValue - * - * @param preferenceValue String that is stored in shared preferences - * @return An instance of {@link DarkModeSetting} - */ - public static DarkModeSetting fromPreferenceValue(@NonNull Context context, String preferenceValue) { - for (DarkModeSetting value : DarkModeSetting.values()) { - if (context.getString(value.preferenceValue).equals(preferenceValue)) { - return value; - } - } - - throw new NoSuchElementException("No NightMode with preferenceValue \"" + preferenceValue + "\" found"); - } -} diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java index 1a1591ff7..c3222cf3b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java @@ -43,9 +43,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande Preference themePref = findPreference(getString(R.string.pref_key_dark_theme)); if (themePref != null) { themePref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { - final DarkModeSetting darkTheme = DarkModeSetting.fromPreferenceValue(getContext(), (String) newValue); - DeckLog.log("appTheme: " + darkTheme); - setAppTheme(darkTheme); + setAppTheme(Integer.parseInt((String) newValue)); requireActivity().setResult(Activity.RESULT_OK); requireActivity().recreate(); return true; |