Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian <64581222+fm-sys@users.noreply.github.com>2020-12-13 18:30:56 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-12-15 12:29:56 +0300
commit6daf31e3fa8fca6fbbffacffefa0dda8b4c92a4b (patch)
tree73b86a38d78219a3b639f23cc97da0c0bf9b10bb /app/src/main
parentc3181dbb924b93922163762d046cfb991238e850 (diff)
store night mode setting as integer instead of string
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java20
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/DarkModeSetting.java70
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java4
-rw-r--r--app/src/main/res/values/setup.xml9
5 files changed, 18 insertions, 90 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;
diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml
index ac4e7d73d..92b6a4237 100644
--- a/app/src/main/res/values/setup.xml
+++ b/app/src/main/res/values/setup.xml
@@ -30,9 +30,12 @@
<item>@string/pref_value_background_6_hours</item>
</string-array>
- <string name="pref_value_theme_light" translatable="false">LIGHT</string>
- <string name="pref_value_theme_dark" translatable="false">DARK</string>
- <string name="pref_value_theme_system_default" translatable="false">SYSTEM_DEFAULT</string>
+ <!-- @see AppCompatDelegate#MODE_NIGHT_NO -->
+ <string name="pref_value_theme_light" translatable="false">1</string>
+ <!-- @see AppCompatDelegate#MODE_NIGHT_YES -->
+ <string name="pref_value_theme_dark" translatable="false">2</string>
+ <!-- @see AppCompatDelegate#MODE_NIGHT_FOLLOW_SYSTEM -->
+ <string name="pref_value_theme_system_default" translatable="false">-1</string>
<string-array name="darkMode_values">
<item>@string/pref_value_theme_light</item>