From 424e022388275a26ddde231a67ceb95d374afacc Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 10 May 2024 11:03:20 -0300 Subject: [PATCH 1/2] Default theme to follow system instead of light Also remove deprecated Auto option --- .../briarproject/bramble/account/BriarAccountManager.java | 2 +- .../briarproject/briar/android/BriarApplicationImpl.java | 7 ++++--- .../briar/android/settings/DisplayFragment.java | 2 +- .../java/org/briarproject/briar/android/util/UiUtils.java | 8 +------- briar-android/src/main/res/values/arrays.xml | 3 --- briar-android/src/main/res/values/strings.xml | 1 - briar-android/src/main/res/xml/settings_display.xml | 2 +- 7 files changed, 8 insertions(+), 17 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java b/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java index eb1e2faaa..28d667920 100644 --- a/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java +++ b/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java @@ -27,7 +27,7 @@ class BriarAccountManager extends AndroidAccountManager { super.deleteAccount(); Localizer.reinitialize(); UiUtils.setTheme(appContext, - appContext.getString(R.string.pref_theme_light_value)); + appContext.getString(R.string.pref_theme_system_value)); } } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java index 3026d8302..aa9e57798 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java @@ -33,6 +33,7 @@ import static java.util.logging.Level.FINE; import static java.util.logging.Level.INFO; import static java.util.logging.Logger.getLogger; import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD; +import static org.briarproject.briar.android.settings.DisplayFragment.PREF_THEME; public class BriarApplicationImpl extends Application implements BriarApplication { @@ -109,11 +110,11 @@ public class BriarApplicationImpl extends Application } private void setTheme(Context ctx, SharedPreferences prefs) { - String theme = prefs.getString("pref_key_theme", null); + String theme = prefs.getString(PREF_THEME, null); if (theme == null) { // set default value - theme = getString(R.string.pref_theme_light_value); - prefs.edit().putString("pref_key_theme", theme).apply(); + theme = getString(R.string.pref_theme_system_value); + prefs.edit().putString(PREF_THEME, theme).apply(); } // set theme UiUtils.setTheme(ctx, theme); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java index f15492939..00ac6332d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java @@ -36,7 +36,7 @@ import static org.briarproject.briar.android.settings.SettingsActivity.EXTRA_THE public class DisplayFragment extends PreferenceFragmentCompat { public static final String PREF_LANGUAGE = "pref_key_language"; - private static final String PREF_THEME = "pref_key_theme"; + public static final String PREF_THEME = "pref_key_theme"; private static final Logger LOG = getLogger(DisplayFragment.class.getName()); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index c92d5829e..19b92a574 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -92,7 +92,6 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN; import static android.view.inputmethod.EditorInfo.IME_NULL; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; import static android.widget.Toast.LENGTH_LONG; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_TIME; import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM; import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; @@ -349,12 +348,7 @@ public class UiUtils { } else if (theme .equals(ctx.getString(R.string.pref_theme_dark_value))) { setDefaultNightMode(MODE_NIGHT_YES); - } else if (theme - .equals(ctx.getString(R.string.pref_theme_auto_value))) { - // TODO remove AUTO-setting as it is deprecated - setDefaultNightMode(MODE_NIGHT_AUTO_TIME); - } else if (theme - .equals(ctx.getString(R.string.pref_theme_system_value))) { + } else { setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); } } diff --git a/briar-android/src/main/res/values/arrays.xml b/briar-android/src/main/res/values/arrays.xml index 0103648c1..9c83c6c52 100644 --- a/briar-android/src/main/res/values/arrays.xml +++ b/briar-android/src/main/res/values/arrays.xml @@ -63,17 +63,14 @@ @string/pref_theme_light @string/pref_theme_dark - @string/pref_theme_auto @string/pref_theme_system light dark - auto system @string/pref_theme_light_value @string/pref_theme_dark_value - @string/pref_theme_auto_value @string/pref_theme_system_value diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 4719ed5f2..8a4e128f5 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -543,7 +543,6 @@ Theme Light Dark - Automatic (Daytime) System default diff --git a/briar-android/src/main/res/xml/settings_display.xml b/briar-android/src/main/res/xml/settings_display.xml index 4a7d146a9..53e45009e 100644 --- a/briar-android/src/main/res/xml/settings_display.xml +++ b/briar-android/src/main/res/xml/settings_display.xml @@ -13,7 +13,7 @@ tools:summary="System default" /> Date: Tue, 14 May 2024 15:52:53 -0300 Subject: [PATCH 2/2] Remove removal of system default theme on API < 27 This doesn't seem to be necessary anymore. The app falls back to light theme in this case. --- .../android/settings/DisplayFragment.java | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java index 00ac6332d..119a407c0 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java @@ -10,12 +10,9 @@ import org.briarproject.briar.android.util.UiUtils; import org.briarproject.nullsafety.NotNullByDefault; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Locale; -import java.util.logging.Logger; -import androidx.core.text.TextUtilsCompat; import androidx.fragment.app.FragmentActivity; import androidx.preference.ListPreference; import androidx.preference.Preference; @@ -24,10 +21,7 @@ import androidx.preference.PreferenceFragmentCompat; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static android.os.Build.VERSION.SDK_INT; -import static androidx.core.view.ViewCompat.LAYOUT_DIRECTION_LTR; import static java.util.Objects.requireNonNull; -import static java.util.logging.Logger.getLogger; import static org.briarproject.briar.android.BriarApplication.ENTRY_ACTIVITY; import static org.briarproject.briar.android.navdrawer.NavDrawerActivity.SIGN_OUT_URI; import static org.briarproject.briar.android.settings.SettingsActivity.EXTRA_THEME_CHANGE; @@ -38,9 +32,6 @@ public class DisplayFragment extends PreferenceFragmentCompat { public static final String PREF_LANGUAGE = "pref_key_language"; public static final String PREF_THEME = "pref_key_theme"; - private static final Logger LOG = - getLogger(DisplayFragment.class.getName()); - @Override public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.settings_display); @@ -50,7 +41,6 @@ public class DisplayFragment extends PreferenceFragmentCompat { language.setOnPreferenceChangeListener(this::onLanguageChanged); ListPreference theme = requireNonNull(findPreference(PREF_THEME)); - setThemeEntries(theme); theme.setOnPreferenceChangeListener(this::onThemeChanged); } @@ -91,30 +81,6 @@ public class DisplayFragment extends PreferenceFragmentCompat { language.setEntryValues(entryValues.toArray(new CharSequence[0])); } - private boolean isLeftToRight(Locale locale) { - // TextUtilsCompat returns the wrong direction for Hebrew on some phones - String language = locale.getLanguage(); - if (language.equals("iw") || language.equals("he")) return false; - int direction = TextUtilsCompat.getLayoutDirectionFromLocale(locale); - return direction == LAYOUT_DIRECTION_LTR; - } - - private void setThemeEntries(ListPreference theme) { - if (SDK_INT < 27) { - // remove System Default Theme option from preference entries - // as it is not functional on this API anyway - List entries = - new ArrayList<>(Arrays.asList(theme.getEntries())); - entries.remove(getString(R.string.pref_theme_system)); - theme.setEntries(entries.toArray(new CharSequence[0])); - // also remove corresponding value - List values = - new ArrayList<>(Arrays.asList(theme.getEntryValues())); - values.remove(getString(R.string.pref_theme_system_value)); - theme.setEntryValues(values.toArray(new CharSequence[0])); - } - } - private boolean onThemeChanged(Preference preference, Object newValue) { // activate new theme FragmentActivity activity = requireActivity();