private Preference swipeToRefreshPreference;
private Preference downloadWithExternalAppPreference;
private Preference scrollAppBarPreference;
+ private Preference bottomAppBarPreference;
private Preference displayAdditionalAppBarIconsPreference;
private Preference appThemePreference;
private Preference webViewThemePreference;
// Get the current theme status.
currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
- // // Get a handle for the shared preferences.
+ // Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
// Get handles for the preferences.
swipeToRefreshPreference = findPreference("swipe_to_refresh");
downloadWithExternalAppPreference = findPreference(getString(R.string.download_with_external_app_key));
scrollAppBarPreference = findPreference("scroll_app_bar");
+ bottomAppBarPreference = findPreference(getString(R.string.bottom_app_bar_key));
displayAdditionalAppBarIconsPreference = findPreference(getString(R.string.display_additional_app_bar_icons_key));
appThemePreference = findPreference("app_theme");
webViewThemePreference = findPreference("webview_theme");
assert swipeToRefreshPreference != null;
assert downloadWithExternalAppPreference != null;
assert scrollAppBarPreference != null;
+ assert bottomAppBarPreference != null;
assert displayAdditionalAppBarIconsPreference != null;
assert appThemePreference != null;
assert webViewThemePreference != null;
}
}
+ // Set the bottom app bar preference icon.
+ if (sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false)) {
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled_day);
+ } else {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled_night);
+ }
+ } else {
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled_day);
+ } else {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled_night);
+ }
+ }
+
// Set the display additional app bar icons preference icon.
if (sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false)) {
if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_day);
}
}
-
- // Get the shared preferences change listener.
- sharedPreferenceChangeListener = getSharedPreferencesChangeListener(requireContext());
-
- // Register the listener.
- sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// The listener should be unregistered when the app is paused.
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
- // Unregister the shared preferences listener.
+ // Unregister the shared preference listener.
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// Run the default commands.
super.onResume();
- // Get a new shared preferences change listener.
- sharedPreferenceChangeListener = getSharedPreferencesChangeListener(requireContext());
+ // Get a new shared preference change listener.
+ sharedPreferenceChangeListener = getSharedPreferenceChangeListener(requireContext());
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
- // Re-register the shared preferences listener.
+ // Re-register the shared preference listener.
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// The context must be passed to the shared preference change listener or else any calls to the system `getString()` will crash if the app has been restarted.
- private SharedPreferences.OnSharedPreferenceChangeListener getSharedPreferencesChangeListener(Context context) {
+ // This can be removed at some future point, perhaps after the switch to PreferenceScreenCompat. It isn't an issue in Privacy Cell.
+ private SharedPreferences.OnSharedPreferenceChangeListener getSharedPreferenceChangeListener(Context context) {
// Return the shared preference change listener.
return (SharedPreferences sharedPreferences, String key) -> {
switch (key) {
}
}
- // Create an intent to restart Privacy Browser.
- Intent allowScreenshotsRestartIntent = requireActivity().getParentActivityIntent();
-
- // Assert that the intent is not null to remove the lint error below.
- assert allowScreenshotsRestartIntent != null;
-
- // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack. It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
- allowScreenshotsRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-
- // Create a handler to restart the activity.
- Handler allowScreenshotsRestartHandler = new Handler(Looper.getMainLooper());
-
- // Create a runnable to restart the activity.
- Runnable allowScreenshotsRestartRunnable = () -> {
- // Restart the activity.
- startActivity(allowScreenshotsRestartIntent);
-
- // Kill this instance of Privacy Browser. Otherwise, the app exhibits sporadic behavior after the restart.
- System.exit(0);
- };
-
- // Restart the activity after 150 milliseconds, so that the app has enough time to save the change to the preference.
- allowScreenshotsRestartHandler.postDelayed(allowScreenshotsRestartRunnable, 150);
+ // Restart Privacy Browser.
+ restartPrivacyBrowser();
break;
case "easylist":
}
break;
+ case "bottom_app_bar":
+ // Update the icon.
+ if (sharedPreferences.getBoolean(context.getString(R.string.bottom_app_bar_key), false)) {
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled_day);
+ } else {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled_night);
+ }
+ } else {
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled_day);
+ } else {
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled_night);
+ }
+ }
+
+ // Restart Privacy Browser.
+ restartPrivacyBrowser();
+ break;
+
case "display_additional_app_bar_icons":
// Update the icon.
if (sharedPreferences.getBoolean(context.getString(R.string.display_additional_app_bar_icons_key), false)) {
}
};
}
-}
\ No newline at end of file
+
+ private void restartPrivacyBrowser() {
+ // Create an intent to restart Privacy Browser.
+ Intent restartIntent = requireActivity().getParentActivityIntent();
+
+ // Assert that the intent is not null to remove the lint error below.
+ assert restartIntent != null;
+
+ // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack. It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+ restartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ // Create a handler to restart the activity.
+ Handler restartHandler = new Handler(Looper.getMainLooper());
+
+ // Create a runnable to restart the activity.
+ Runnable restartRunnable = () -> {
+ // Restart the activity.
+ startActivity(restartIntent);
+
+ // Kill this instance of Privacy Browser. Otherwise, the app exhibits sporadic behavior after the restart.
+ System.exit(0);
+ };
+
+ // Restart the activity after 400 milliseconds, so that the app has enough time to save the change to the preference.
+ restartHandler.postDelayed(restartRunnable, 400);
+ }
+}