]> 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 78a92f870237089eae07cdf49183318f886df79b..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;
@@ -73,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.
@@ -356,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);
@@ -777,6 +786,27 @@ public class SettingsFragment extends PreferenceFragment {
                         }
                         break;
 
+                    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.
@@ -792,10 +822,6 @@ public class SettingsFragment extends PreferenceFragment {
                             MainWebViewActivity.reloadOnRestartBoolean = true;
                         }
                         break;
-
-                    default:
-                        // If no match, do nothing.
-                        break;
                 }
             }
         };