package com.stoutner.privacybrowser.fragments;
import android.annotation.SuppressLint;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebView;
import com.stoutner.privacybrowser.R;
+import com.stoutner.privacybrowser.activities.MainWebViewActivity;
public class SettingsFragment extends PreferenceFragment {
private SharedPreferences.OnSharedPreferenceChangeListener preferencesListener;
final Preference defaultFontSizePreference = findPreference("default_font_size");
final Preference swipeToRefreshPreference = findPreference("swipe_to_refresh");
final Preference displayAdditionalAppBarIconsPreference = findPreference("display_additional_app_bar_icons");
+ final Preference darkThemePreference = findPreference("dark_theme");
final Preference displayWebpageImagesPreference = findPreference("display_webpage_images");
// Set dependencies.
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled);
}
+ // Set the `darkThemePreference` icon.
+ if (savedPreferences.getBoolean("dark_theme", false)) {
+ darkThemePreference.setIcon(R.drawable.theme_dark);
+ } else {
+ darkThemePreference.setIcon(R.drawable.theme_light);
+ }
+
// Set the `displayWebpageImagesPreference` icon.
if (savedPreferences.getBoolean("display_webpage_images", true)) {
displayWebpageImagesPreference.setIcon(R.drawable.images_enabled);
}
break;
- case "display_webpage_images":
+ case "dark_theme":
// Update the icon.
+ if (sharedPreferences.getBoolean("dark_theme", false)) {
+ darkThemePreference.setIcon(R.drawable.theme_dark);
+ } else {
+ darkThemePreference.setIcon(R.drawable.theme_light);
+ }
+
+ // Create an `Intent` to restart Privacy Browser.
+ Intent intent = getActivity().getParentActivityIntent();
+
+ // Assert that `intent` is not `null` to remove the lint error below.
+ assert intent != null;
+
+ // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack. It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ // Make it so.
+ startActivity(intent);
+ break;
+
+ case "display_webpage_images":
if (sharedPreferences.getBoolean("display_webpage_images", true)) {
+ // Update the icon.
displayWebpageImagesPreference.setIcon(R.drawable.images_enabled);
+
+ // `mainWebView` does not need to be reloaded because unloaded images will load automatically.
+ MainWebViewActivity.reloadOnRestartBoolean = false;
} else {
+ // Update the icon.
displayWebpageImagesPreference.setIcon(R.drawable.images_disabled);
- }
- break;
- default:
- // If no match, do nothing.
+ // Set `mainWebView` to reload on restart to remove the current images.
+ MainWebViewActivity.reloadOnRestartBoolean = true;
+ }
break;
}
}