diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/DarkModeSetting.java b/app/src/main/java/it/niedermann/owncloud/notes/android/DarkModeSetting.java
new file mode 100644
index 00000000..410a5719
--- /dev/null
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/DarkModeSetting.java
@@ -0,0 +1,66 @@
+package it.niedermann.owncloud.notes.android;
+
+import androidx.appcompat.app.AppCompatDelegate;
+
+import java.util.NoSuchElementException;
+
+/**
+ * Possible values of the Dark Mode Setting.
+ *
+ * The Dark Mode Setting can be stored in {@link android.content.SharedPreferences} as String by using {@link DarkModeSetting#name()} and received via {@link DarkModeSetting#valueOf(String)}.
+ *
+ * Additionally, the equivalent {@link AppCompatDelegate}-Mode can be received via {@link #getModeId()}. To convert a {@link AppCompatDelegate}-Mode to a {@link DarkModeSetting}, use {@link #fromModeID(int)}
+ *
+ * @see AppCompatDelegate#MODE_NIGHT_YES
+ * @see AppCompatDelegate#MODE_NIGHT_NO
+ * @see AppCompatDelegate#MODE_NIGHT_FOLLOW_SYSTEM
+ */
+public enum DarkModeSetting {
+ // WARNING - The names of the constants must *NOT* be changed since they are used as keys in SharedPreferences
+
+ /**
+ * Always use light mode.
+ */
+ LIGHT(AppCompatDelegate.MODE_NIGHT_NO),
+ /**
+ * Always use dark mode.
+ */
+ DARK(AppCompatDelegate.MODE_NIGHT_YES),
+ /**
+ * Follow the global system setting for dark mode.
+ */
+ SYSTEM_DEFAULT(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
+
+ private final int modeId;
+
+ DarkModeSetting(int modeId) {
+ this.modeId = modeId;
+ }
+
+ public int getModeId() {
+ return modeId;
+ }
+
+ /**
+ * Returns the instance of {@link DarkModeSetting} that corresponds to the ModeID of {@link AppCompatDelegate}
+ *
+ * Possible ModeIDs are:
+ *
+ * - {@link AppCompatDelegate#MODE_NIGHT_YES}
+ * - {@link AppCompatDelegate#MODE_NIGHT_NO}
+ * - {@link AppCompatDelegate#MODE_NIGHT_FOLLOW_SYSTEM}
+ *
+ *
+ * @param id One of the {@link AppCompatDelegate}-Night-Modes
+ * @return An instance of {@link DarkModeSetting}
+ */
+ public static DarkModeSetting fromModeID(int id) {
+ for (DarkModeSetting value : DarkModeSetting.values()) {
+ if (value.modeId == id) {
+ return value;
+ }
+ }
+
+ throw new NoSuchElementException("No NightMode with ID " + id + " found");
+ }
+}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java
index 370e3a86..877514bd 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/SelectSingleNoteActivity.java
@@ -58,7 +58,7 @@ public class SelectSingleNoteActivity extends NotesListViewActivity {
sp.putLong(SingleNoteWidget.WIDGET_KEY + appWidgetId, noteID);
sp.putLong(SingleNoteWidget.ACCOUNT_ID_KEY + appWidgetId, note.getAccountId());
- sp.putBoolean(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext()));
+ sp.putString(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext()).name());
sp.apply();
Intent updateIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null,
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java
index a9a477cc..4c3ccbc8 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java
@@ -13,8 +13,10 @@ import android.util.Log;
import android.widget.RemoteViews;
import it.niedermann.owncloud.notes.R;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
import it.niedermann.owncloud.notes.android.activity.NotesListViewActivity;
+import it.niedermann.owncloud.notes.util.Notes;
public class NoteListWidget extends AppWidgetProvider {
private static final String TAG = NoteListWidget.class.getSimpleName();
@@ -28,7 +30,7 @@ public class NoteListWidget extends AppWidgetProvider {
static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) {
RemoteViews views;
- boolean darkTheme;
+ DarkModeSetting darkTheme;
for (int appWidgetId : appWidgetIds) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
@@ -40,12 +42,12 @@ public class NoteListWidget extends AppWidgetProvider {
}
String category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, null);
- darkTheme = sp.getBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, false);
+ darkTheme = NoteWidgetHelper.getDarkThemeSetting(sp, DARK_THEME_KEY, appWidgetId);
Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.putExtra(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, displayMode);
- serviceIntent.putExtra(NoteListWidget.DARK_THEME_KEY + appWidgetId, darkTheme);
+ serviceIntent.putExtra(NoteListWidget.DARK_THEME_KEY + appWidgetId, darkTheme.name());
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
if (displayMode == NLW_DISPLAY_CATEGORY) {
@@ -70,7 +72,7 @@ public class NoteListWidget extends AppWidgetProvider {
(new Intent(context, EditNoteActivity.class)),
PendingIntent.FLAG_UPDATE_CURRENT);
- if (darkTheme) {
+ if (Notes.isDarkThemeActive(context, darkTheme)) {
views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list_dark);
views.setTextViewText(R.id.widget_note_list_title_tv_dark, getWidgetTitle(context, displayMode, category));
views.setOnClickPendingIntent(R.id.widget_note_header_icon_dark, openAppI);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java
index aed9c22f..28e28ebd 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetConfiguration.java
@@ -100,7 +100,7 @@ public class NoteListWidgetConfiguration extends AppCompatActivity {
}
sp.putLong(NoteListWidget.ACCOUNT_ID_KEY + appWidgetId, localAccount.getId());
- sp.putBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext()));
+ sp.putString(NoteListWidget.DARK_THEME_KEY + appWidgetId, Notes.getAppTheme(getApplicationContext()).name());
sp.apply();
Intent updateIntent = new Intent( AppWidgetManager.ACTION_APPWIDGET_UPDATE, null,
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java
index e17ea86f..a3e86a2c 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidgetFactory.java
@@ -13,9 +13,13 @@ import android.widget.RemoteViewsService;
import java.util.List;
import it.niedermann.owncloud.notes.R;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
import it.niedermann.owncloud.notes.model.DBNote;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
+import it.niedermann.owncloud.notes.util.Notes;
+
+import static it.niedermann.owncloud.notes.android.appwidget.NoteListWidget.DARK_THEME_KEY;
public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
private final Context context;
@@ -32,7 +36,8 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
AppWidgetManager.INVALID_APPWIDGET_ID);
final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this.context);
displayMode = sp.getInt(NoteListWidget.WIDGET_MODE_KEY + appWidgetId, -1);
- darkTheme = sp.getBoolean(NoteListWidget.DARK_THEME_KEY + appWidgetId, false);
+ DarkModeSetting theme = NoteWidgetHelper.getDarkThemeSetting(sp, DARK_THEME_KEY, appWidgetId);
+ darkTheme = Notes.isDarkThemeActive(context, theme);
category = sp.getString(NoteListWidget.WIDGET_CATEGORY_KEY + appWidgetId, "");
accountId = sp.getLong(NoteListWidget.ACCOUNT_ID_KEY + appWidgetId, -1);
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteWidgetHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteWidgetHelper.java
new file mode 100644
index 00000000..02382e5c
--- /dev/null
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteWidgetHelper.java
@@ -0,0 +1,23 @@
+package it.niedermann.owncloud.notes.android.appwidget;
+
+import android.content.SharedPreferences;
+
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
+
+final class NoteWidgetHelper {
+ private NoteWidgetHelper() {
+ // Helper class for static methods
+ }
+
+ @SuppressWarnings("WeakerAccess") //Making it package-private would generate a warning in PMD
+ public static DarkModeSetting getDarkThemeSetting(SharedPreferences prefs, String darkModeKey, int appWidgetId) {
+ try {
+ String themeName = prefs.getString(darkModeKey + appWidgetId, DarkModeSetting.SYSTEM_DEFAULT.name());
+ return DarkModeSetting.valueOf(themeName);
+ } catch (ClassCastException e) {
+ //DARK_THEME was a boolean in older versions of the app. We thereofre have to still support the old setting.
+ boolean isDarkTheme = prefs.getBoolean(darkModeKey + appWidgetId, false);
+ return isDarkTheme ? DarkModeSetting.DARK : DarkModeSetting.LIGHT;
+ }
+ }
+}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java
index 0b7020d5..e6d25dfc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java
@@ -12,8 +12,10 @@ import android.preference.PreferenceManager;
import android.widget.RemoteViews;
import it.niedermann.owncloud.notes.R;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
import it.niedermann.owncloud.notes.android.fragment.BaseNoteFragment;
+import it.niedermann.owncloud.notes.util.Notes;
public class SingleNoteWidget extends AppWidgetProvider {
@@ -32,11 +34,11 @@ public class SingleNoteWidget extends AppWidgetProvider {
return;
}
- boolean darkTheme = sp.getBoolean(DARK_THEME_KEY + appWidgetId, false);
+ DarkModeSetting darkTheme = NoteWidgetHelper.getDarkThemeSetting(sp, DARK_THEME_KEY, appWidgetId);
templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, sp.getLong(ACCOUNT_ID_KEY + appWidgetId, -1));
PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_UPDATE_CURRENT);
Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
@@ -44,7 +46,7 @@ public class SingleNoteWidget extends AppWidgetProvider {
RemoteViews views;
- if (darkTheme) {
+ if (Notes.isDarkThemeActive(context, darkTheme)) {
views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_dark);
views.setPendingIntentTemplate(R.id.single_note_widget_lv_dark, templatePendingIntent);
views.setRemoteAdapter(R.id.single_note_widget_lv_dark, serviceIntent);
@@ -73,7 +75,7 @@ public class SingleNoteWidget extends AppWidgetProvider {
AppWidgetManager awm = AppWidgetManager.getInstance(context);
updateAppWidget(context, AppWidgetManager.getInstance(context),
- (awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class))));
+ (awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class))));
}
@Override
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java
index 24a49246..673c70ab 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidgetFactory.java
@@ -18,6 +18,9 @@ import it.niedermann.owncloud.notes.android.activity.EditNoteActivity;
import it.niedermann.owncloud.notes.model.DBNote;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.util.MarkDownUtil;
+import it.niedermann.owncloud.notes.util.Notes;
+
+import static it.niedermann.owncloud.notes.android.appwidget.SingleNoteWidget.DARK_THEME_KEY;
public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
@@ -28,19 +31,19 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
private NotesDatabase db;
private DBNote note;
private final SharedPreferences sp;
- private static Boolean darkTheme;
+ private boolean darkModeActive;
private static final String TAG = SingleNoteWidget.class.getSimpleName();
SingleNoteWidgetFactory(Context context, Intent intent) {
this.context = context;
appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
- AppWidgetManager.INVALID_APPWIDGET_ID);
+ AppWidgetManager.INVALID_APPWIDGET_ID);
sp = PreferenceManager.getDefaultSharedPreferences(this.context);
- darkTheme = sp.getBoolean(SingleNoteWidget.DARK_THEME_KEY + appWidgetId, false);
+ darkModeActive = Notes.isDarkThemeActive(context, NoteWidgetHelper.getDarkThemeSetting(sp, DARK_THEME_KEY, appWidgetId));
markdownProcessor = new MarkdownProcessor(this.context);
markdownProcessor.factory(TextFactory.create());
- markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(this.context, darkTheme).build());
+ markdownProcessor.config(MarkDownUtil.getMarkDownConfiguration(this.context, darkModeActive).build());
}
@Override
@@ -101,7 +104,7 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, note.getAccountId());
fillInIntent.putExtras(extras);
fillInIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
- if (darkTheme) {
+ if (darkModeActive) {
note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content_dark);
note_content.setOnClickFillInIntent(R.id.single_note_content_tv_dark, fillInIntent);
note_content.setTextViewText(R.id.single_note_content_tv_dark, markdownProcessor.parse(note.getContent()));
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java
index ac24265a..84b8820b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java
@@ -10,6 +10,7 @@ import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import it.niedermann.owncloud.notes.R;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
import it.niedermann.owncloud.notes.persistence.SyncWorker;
import it.niedermann.owncloud.notes.util.Notes;
@@ -26,10 +27,10 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
- final SwitchPreference themePref = findPreference(getString(R.string.pref_key_theme));
+ final ListPreference themePref = findPreference(getString(R.string.pref_key_theme));
assert themePref != null;
themePref.setOnPreferenceChangeListener((preference, newValue) -> {
- Notes.setAppTheme((Boolean) newValue);
+ Notes.setAppTheme(DarkModeSetting.valueOf((String) newValue));
getActivity().setResult(Activity.RESULT_OK);
getActivity().recreate();
return true;
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/AbstractNotesDatabase.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/AbstractNotesDatabase.java
index c53c306a..76f4b929 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/AbstractNotesDatabase.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/AbstractNotesDatabase.java
@@ -16,7 +16,9 @@ import androidx.annotation.Nullable;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Map;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
import it.niedermann.owncloud.notes.android.appwidget.NoteListWidget;
import it.niedermann.owncloud.notes.android.appwidget.SingleNoteWidget;
import it.niedermann.owncloud.notes.model.DBStatus;
@@ -29,7 +31,7 @@ abstract class AbstractNotesDatabase extends SQLiteOpenHelper {
private static final String TAG = AbstractNotesDatabase.class.getSimpleName();
- private static final int database_version = 10;
+ private static final int database_version = 11;
private final Context context;
protected static final String database_name = "OWNCLOUD_NOTES";
@@ -245,6 +247,19 @@ abstract class AbstractNotesDatabase extends SQLiteOpenHelper {
}
cursor.close();
}
+ if (oldVersion < 11) {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ Map prefs = sharedPreferences.getAll();
+ for (Map.Entry pref : prefs.entrySet()) {
+ String key = pref.getKey();
+ if ("darkTheme".equals(key) || key.startsWith(NoteListWidget.DARK_THEME_KEY) || key.startsWith(SingleNoteWidget.DARK_THEME_KEY)) {
+ Boolean darkTheme = (Boolean) pref.getValue();
+ editor.putString(pref.getKey(), darkTheme ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name());
+ }
+ }
+ editor.apply();
+ }
}
@Override
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java
index e9bf9285..46d665c0 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/util/MarkDownUtil.java
@@ -36,7 +36,7 @@ public class MarkDownUtil {
* @return RxMDConfiguration
*/
public static Builder getMarkDownConfiguration(Context context) {
- return getMarkDownConfiguration(context, Notes.getAppTheme(context));
+ return getMarkDownConfiguration(context, Notes.isDarkThemeActive(context));
}
public static Builder getMarkDownConfiguration(Context context, Boolean darkTheme) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java b/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java
index 75f43f05..fefd1376 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/util/Notes.java
@@ -3,9 +3,13 @@ package it.niedermann.owncloud.notes.util;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.preference.PreferenceManager;
+
import androidx.appcompat.app.AppCompatDelegate;
+import it.niedermann.owncloud.notes.android.DarkModeSetting;
+
public class Notes extends Application {
private static final String DARK_THEME = "darkTheme";
@@ -15,16 +19,32 @@ public class Notes extends Application {
super.onCreate();
}
- public static void setAppTheme(Boolean darkTheme) {
- if (darkTheme) {
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ public static void setAppTheme(DarkModeSetting setting) {
+ AppCompatDelegate.setDefaultNightMode(setting.getModeId());
+ }
+
+ public static DarkModeSetting getAppTheme(Context context) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ String mode;
+ try {
+ mode = prefs.getString(DARK_THEME, DarkModeSetting.SYSTEM_DEFAULT.name());
+ } catch (ClassCastException e) {
+ boolean darkModeEnabled = prefs.getBoolean(DARK_THEME, false);
+ mode = darkModeEnabled ? DarkModeSetting.DARK.name() : DarkModeSetting.LIGHT.name();
+ }
+ return DarkModeSetting.valueOf(mode);
+ }
+
+ public static boolean isDarkThemeActive(Context context, DarkModeSetting setting) {
+ if (setting == DarkModeSetting.SYSTEM_DEFAULT) {
+ return isDarkThemeActive(context);
} else {
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
+ return setting == DarkModeSetting.DARK;
}
}
- public static boolean getAppTheme(Context context) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- return prefs.getBoolean(DARK_THEME, false);
+ public static boolean isDarkThemeActive(Context context) {
+ int uiMode = context.getResources().getConfiguration().uiMode;
+ return (uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
}
}
diff --git a/app/src/main/res/values-b+en+001/strings.xml b/app/src/main/res/values-b+en+001/strings.xml
index ae3578ba..3705d099 100644
--- a/app/src/main/res/values-b+en+001/strings.xml
+++ b/app/src/main/res/values-b+en+001/strings.xml
@@ -83,7 +83,6 @@
Create a new note
- Light
Normal
Error
Close
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 46ee099e..e63b3db7 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -91,7 +91,6 @@
Crea una nota nova
- Clar
Normal
Sincronitza per Wi-Fi i dades mòbils
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index 2aca3ccb..2c58f80e 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -96,7 +96,6 @@
Vytvořit novou poznámku
- Světlý
Normální
Synchronizovat přes Wi-Fi a mobilní data
diff --git a/app/src/main/res/values-cy-rGB/strings.xml b/app/src/main/res/values-cy-rGB/strings.xml
index e76f08a5..bf3cd42e 100644
--- a/app/src/main/res/values-cy-rGB/strings.xml
+++ b/app/src/main/res/values-cy-rGB/strings.xml
@@ -83,7 +83,6 @@
Creu nodyn newydd
- Golau
Arferol
Cysoni dros Wi-Fi a data symudol
Gwall
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index 45eb772c..d56b19a2 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -96,7 +96,6 @@
Opret en ny note
- Lys
Normal
Synk på Wi-Fi og mobil data
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 305106f8..1ac6a010 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -96,7 +96,6 @@
Neue Notiz erstellen
- Hell
Normal
Über WLAN und mobile Daten synchronisieren
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 5218b302..a04047f8 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -96,7 +96,6 @@
Δημιουργία νέας σημείωσης
- Φωτεινό
Κανονικό
Συγχρονισμός μόνο σε Wi-Fi και δεδομένα κινητού
diff --git a/app/src/main/res/values-es-rAR/strings.xml b/app/src/main/res/values-es-rAR/strings.xml
index 1b7af52a..2845923d 100644
--- a/app/src/main/res/values-es-rAR/strings.xml
+++ b/app/src/main/res/values-es-rAR/strings.xml
@@ -82,7 +82,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rCL/strings.xml b/app/src/main/res/values-es-rCL/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rCL/strings.xml
+++ b/app/src/main/res/values-es-rCL/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rCO/strings.xml b/app/src/main/res/values-es-rCO/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rCO/strings.xml
+++ b/app/src/main/res/values-es-rCO/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rCR/strings.xml b/app/src/main/res/values-es-rCR/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rCR/strings.xml
+++ b/app/src/main/res/values-es-rCR/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rDO/strings.xml b/app/src/main/res/values-es-rDO/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rDO/strings.xml
+++ b/app/src/main/res/values-es-rDO/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rEC/strings.xml b/app/src/main/res/values-es-rEC/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rEC/strings.xml
+++ b/app/src/main/res/values-es-rEC/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rGT/strings.xml b/app/src/main/res/values-es-rGT/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rGT/strings.xml
+++ b/app/src/main/res/values-es-rGT/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app/src/main/res/values-es-rMX/strings.xml
index f20a9083..829dd148 100644
--- a/app/src/main/res/values-es-rMX/strings.xml
+++ b/app/src/main/res/values-es-rMX/strings.xml
@@ -79,7 +79,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es-rSV/strings.xml b/app/src/main/res/values-es-rSV/strings.xml
index edcd51df..1dd1576e 100644
--- a/app/src/main/res/values-es-rSV/strings.xml
+++ b/app/src/main/res/values-es-rSV/strings.xml
@@ -77,7 +77,6 @@
Crear una nota nueva
- Claro
Normal
Error
Cerrar
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 018facbd..a2786c5f 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -96,7 +96,6 @@
Crear una nota nueva
- Claro
Normal
Sincronizar sobre Wi-Fi y datos móviles
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 7b68a180..f03113ab 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -91,7 +91,6 @@
Sortu ohar berria
- Argia
Normala
Sinkronizatu wifi eta datu mugikorrekin
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index dfe4fac3..ca048209 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -96,7 +96,6 @@
ساختن یادداشت جدید
- روشن
معمولی
همگام سازی داده های Wi-Fi و تلفن همراه
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index dad58246..7d9f10a5 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -79,7 +79,6 @@
Luo uusi muistiinpano
- Vaalea
Normaali
Synkronoi wifi- ja mobiilidatayhteydellä
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 7c012648..bcd13426 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -96,7 +96,6 @@
Créer une nouvelle note
- Clair
Normal
Synchroniser en Wifi et données mobiles
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 18cb2ae8..cd460018 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -96,7 +96,6 @@
Crear unha nota nova
- Claro
Normal
Sincronización con WiFi e con datos móbiles
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index b5037b3a..097815e6 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -83,7 +83,6 @@
יצירת פתק חדש
- בהיר
רגיל
עדכון דרך רשת אלחוטית ונתונים סלולריים
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index 613c6f8f..d9aa76ae 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -89,7 +89,6 @@
Stvori novu bilješku
- Svijetlo
Normalno
Sinkronizacija putem bežičnih (Wi-Fi) i mobilnih podataka
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index 4336b365..7d42f4ff 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -96,7 +96,6 @@
Új jegyzet létrehozása
- Világos
Normál
Szinkronizálás Wi-Fin és mobil adatkapcsolaton
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index b151a364..683c0563 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -83,7 +83,6 @@
Búa til nýjan minnispunkt
- Ljóst
Venjulegt
Samstilla á WiFi-neti og farsímatengingu
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 3b9fea1e..7eeb94c6 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -96,7 +96,6 @@
Crea una nuova nota
- Chiaro
Normale
Sincronizza su Wi-FI e dati mobili
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 450c8a2d..749f6919 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -89,7 +89,6 @@
新しいノートを作成
- ライト
ノーマル
Wi-Fiおよびモバイル接続時に同期する
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 32deaf05..5efc5c5f 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -73,7 +73,6 @@
새 메모 쓰기
- 밝게
일반
오류
닫기
diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml
index 271924b4..485355d3 100644
--- a/app/src/main/res/values-lt-rLT/strings.xml
+++ b/app/src/main/res/values-lt-rLT/strings.xml
@@ -96,7 +96,6 @@
Sukurti naujus užrašus
- Šviesus
Normalus
Sinchronizuoti naudojant belaidį (Wi-Fi) ir mobiliuosius duomenis
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index e3de101e..d012ffbb 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -87,7 +87,6 @@
Opprett et nytt notat
- Lys
Normal
Synkroniser med WiFi og mobil data
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index ed7097ae..3ba03ed0 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -97,7 +97,6 @@
Maak een nieuwe notitie
- Licht
Normaal
Sync met Wi-Fi en mobiele data
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 7fabb108..cb9158d1 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -96,7 +96,6 @@
Utwórz nową notatkę
- Jasny
Podstawowy
Synchronizacja w sieci Wi-Fi i komórkowej transmisji danych
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 37812e3e..712db7d1 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -96,7 +96,6 @@
Criar uma nova anotação
- Claro
Normal
Sincronizar por Wi-Fi e dados móveis
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index d3203e04..b0c2dfad 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -85,7 +85,6 @@
Создать новую заметку
- Светлая
Обычный
Синхр. по Wi-Fi и мобильной связи
diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml
index 05d89ac2..9e8f2e85 100644
--- a/app/src/main/res/values-sk-rSK/strings.xml
+++ b/app/src/main/res/values-sk-rSK/strings.xml
@@ -96,7 +96,6 @@
Vytvoriť novú poznámku
- Svetlý
Normálne
Synchronizovať na Wi-Fi a mobilných dátach
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index c3b84997..c9214be1 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -96,7 +96,6 @@
Ustvari novo zabeležko
- Svetla
Običajno
Usklajuj na Wi-Fi in mobilni povezavi
diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml
index c6884ffe..a30d95bb 100644
--- a/app/src/main/res/values-sq/strings.xml
+++ b/app/src/main/res/values-sq/strings.xml
@@ -78,7 +78,6 @@
Krijo një shënim të ri
- E çelët
Normal
Error
Mbylleni
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index d286f298..5c0083fb 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -87,7 +87,6 @@
Napravi novu belešku
- Svetla
Normalna
Sinhronizuj i na bežičnoj i na mobilnoj vezi
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 25368b43..5c03aa3e 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -96,7 +96,6 @@
Направи нову белешку
- Светла
Нормална
Синхронизуј и на бежичној и на мобилној вези
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 0837b17e..42bfe2bf 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -96,7 +96,6 @@
Skapa en ny anteckning
- Ljus
Normal
Synkronisera med Wi-Fi och mobil data
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 15f0ee60..ceba31a6 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -96,7 +96,6 @@
Not ekle
- Açık
Normal
Wi-Fi ve mobil veri ile eşitlensin
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 73e049ab..9d5b293d 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -96,7 +96,6 @@
创建新便笺
- 浅色主题
普通
在有 Wi-Fi 和移动数据网络时同步
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index dfdb3da7..ccdad5ad 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -96,7 +96,6 @@
建立新筆記
- 亮色
一般
在使用 Wi-Fi 及行動網路時同步
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index cc342086..3fd107e9 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -10,6 +10,11 @@
- @string/pref_value_font_size_medium
- @string/pref_value_font_size_large
+
+ - @string/pref_value_theme_light
+ - @string/pref_value_theme_dark
+ - @string/pref_value_theme_system_default
+
- @string/pref_value_sync_off
- @string/pref_value_sync_15_minutes
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ec594e6c..93c53eab 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -125,8 +125,10 @@
15_minutes
1_hour
6_hours
+ LIGHT
+ DARK
+ SYSTEM_DEFAULT
- Light
Normal
Sync on Wi-Fi and mobile data
@@ -179,6 +181,12 @@
- 6 hours
+
+ - Light
+ - Dark
+ - System Default
+
+
- %d selected
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 9f61df31..86ce545d 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -11,8 +11,11 @@
android:summary="%s"
android:title="@string/settings_note_mode" />
-