]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
Refactor style code to use attrs.xml. Create a dark theme for Find on Page.
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / SettingsFragment.java
index 6d317f06761e517e5cf5f413b518e95e5f157709..340e455215f360b96077f4c890d607aab39edd57 100644 (file)
@@ -20,6 +20,7 @@
 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;
@@ -30,6 +31,7 @@ import android.view.View;
 import android.webkit.WebView;
 
 import com.stoutner.privacybrowser.R;
+import com.stoutner.privacybrowser.activities.MainWebViewActivity;
 
 public class SettingsFragment extends PreferenceFragment {
     private SharedPreferences.OnSharedPreferenceChangeListener preferencesListener;
@@ -72,6 +74,7 @@ public class SettingsFragment extends PreferenceFragment {
         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.
@@ -355,6 +358,13 @@ public class SettingsFragment extends PreferenceFragment {
             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);
@@ -776,17 +786,41 @@ public class SettingsFragment extends PreferenceFragment {
                         }
                         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;
                 }
             }