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: + *

+ * + * @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" /> -