]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
Add setting to disable screenshots. https://redmine.stoutner.com/issues/266
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / SettingsFragment.java
index 14d39bd972a7ef06cbe2c723fbc8ab3326904c16..cb0ca13e4883f6c0ad6ce26fe55c60ceb2527a5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
@@ -20,6 +20,8 @@
 package com.stoutner.privacybrowser.fragments;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
@@ -28,6 +30,7 @@ import android.preference.PreferenceFragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.webkit.WebView;
+import android.widget.ArrayAdapter;
 
 import com.stoutner.privacybrowser.R;
 import com.stoutner.privacybrowser.activities.MainWebViewActivity;
@@ -41,6 +44,9 @@ public class SettingsFragment extends PreferenceFragment {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferences);
 
+        // Get a handle for the context.
+        Context context = getActivity().getApplicationContext();
+
         // Initialize savedPreferences.
         savedPreferences = getPreferenceScreen().getSharedPreferences();
 
@@ -52,9 +58,13 @@ public class SettingsFragment extends PreferenceFragment {
         final Preference saveFormDataPreference = findPreference("save_form_data_enabled");
         final Preference userAgentPreference = findPreference("user_agent");
         final Preference customUserAgentPreference = findPreference("custom_user_agent");
-        final Preference blockAdsPreference = findPreference("block_ads");
         final Preference incognitoModePreference = findPreference("incognito_mode");
         final Preference doNotTrackPreference = findPreference("do_not_track");
+        final Preference allowScreenshotsPreference = findPreference("allow_screenshots");
+        final Preference easyListPreference = findPreference("easylist");
+        final Preference easyPrivacyPreference = findPreference("easyprivacy");
+        final Preference fanboyAnnoyanceListPreference = findPreference("fanboy_annoyance_list");
+        final Preference fanboySocialBlockingListPreference = findPreference("fanboy_social_blocking_list");
         final Preference proxyThroughOrbotPreference = findPreference("proxy_through_orbot");
         final Preference torHomepagePreference = findPreference("tor_homepage");
         final Preference torSearchPreference = findPreference("tor_search");
@@ -74,57 +84,81 @@ public class SettingsFragment extends PreferenceFragment {
         final Preference swipeToRefreshPreference = findPreference("swipe_to_refresh");
         final Preference displayAdditionalAppBarIconsPreference = findPreference("display_additional_app_bar_icons");
         final Preference darkThemePreference = findPreference("dark_theme");
+        final Preference nightModePreference = findPreference("night_mode");
         final Preference displayWebpageImagesPreference = findPreference("display_webpage_images");
 
         // Set dependencies.
-        domStoragePreference.setDependency("javascript_enabled");
         torHomepagePreference.setDependency("proxy_through_orbot");
         torSearchPreference.setDependency("proxy_through_orbot");
         hideSystemBarsPreference.setDependency("full_screen_browsing_mode");
 
-        // Get strings from the preferences.
+        // Get Strings from the preferences.
         String torSearchString = savedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
         String searchString = savedPreferences.getString("search", "https://duckduckgo.com/html/?q=");
 
         // Get booleans from the preferences.
-        boolean javaScriptEnabledBoolean = savedPreferences.getBoolean("javascript_enabled", false);
-        boolean firstPartyCookiesEnabledBoolean = savedPreferences.getBoolean("first_party_cookies_enabled", false);
-        boolean thirdPartyCookiesEnabledBoolean = savedPreferences.getBoolean("third_party_cookies_enabled", false);
-        boolean proxyThroughOrbotBoolean = savedPreferences.getBoolean("proxy_through_orbot", false);
-        boolean fullScreenBrowsingModeBoolean = savedPreferences.getBoolean("full_screen_browsing_mode", false);
-        boolean hideSystemBarsBoolean = savedPreferences.getBoolean("hide_system_bars", false);
-        boolean clearEverythingBoolean = savedPreferences.getBoolean("clear_everything", true);
-
-        // Only enable `thirdPartyCookiesPreference` if `firstPartyCookiesEnabledBoolean` is `true` and API >= 21.
-        thirdPartyCookiesPreference.setEnabled(firstPartyCookiesEnabledBoolean && (Build.VERSION.SDK_INT >= 21));
+        final boolean javaScriptEnabled = savedPreferences.getBoolean("javascript_enabled", false);
+        boolean firstPartyCookiesEnabled = savedPreferences.getBoolean("first_party_cookies_enabled", false);
+        boolean thirdPartyCookiesEnabled = savedPreferences.getBoolean("third_party_cookies_enabled", false);
+        boolean fanboyAnnoyanceListEnabled = savedPreferences.getBoolean("fanboy_annoyance_list", true);
+        boolean fanboySocialBlockingEnabled = savedPreferences.getBoolean("fanboy_social_blocking_list", true);
+        boolean proxyThroughOrbot = savedPreferences.getBoolean("proxy_through_orbot", false);
+        boolean fullScreenBrowsingMode = savedPreferences.getBoolean("full_screen_browsing_mode", false);
+        boolean hideSystemBars = savedPreferences.getBoolean("hide_system_bars", false);
+        boolean clearEverything = savedPreferences.getBoolean("clear_everything", true);
+        final boolean nightMode = savedPreferences.getBoolean("night_mode", false);
+
+        // Only enable the third-party preference if first-party cookies are enabled and API >= 21.
+        thirdPartyCookiesPreference.setEnabled(firstPartyCookiesEnabled && (Build.VERSION.SDK_INT >= 21));
+
+        // Only enable the DOM storage preference if either JavaScript or Night Mode is enabled.
+        domStoragePreference.setEnabled(javaScriptEnabled || nightMode);
+
+        // Only enable Fanboy's social blocking list preference if Fanboy's annoyance list is disabled.
+        fanboySocialBlockingListPreference.setEnabled(!fanboyAnnoyanceListEnabled);
 
         // We need to inflated a `WebView` to get the default user agent.
         LayoutInflater inflater = getActivity().getLayoutInflater();
-        // `@SuppressLint("InflateParams")` removes the warning about using `null` as the `ViewGroup`, which in this case makes sense because we don't want to display `bare_webview` on the screen.  `false` does not attach the view to the root.
+        // `@SuppressLint("InflateParams")` removes the warning about using `null` as the `ViewGroup`, which in this case makes sense because we don't want to display `bare_webview` on the screen.
         @SuppressLint("InflateParams") View bareWebViewLayout = inflater.inflate(R.layout.bare_webview, null, false);
-        final WebView bareWebView = (WebView) bareWebViewLayout.findViewById(R.id.bare_webview);
+        final WebView bareWebView = bareWebViewLayout.findViewById(R.id.bare_webview);
+
+        // Get the user agent arrays.
+        ArrayAdapter<CharSequence> userAgentNamesArray = ArrayAdapter.createFromResource(context, R.array.user_agent_names, R.layout.domain_settings_spinner_item);
+        String[] translatedUserAgentNamesArray = getResources().getStringArray(R.array.translated_user_agent_names);
+        String[] userAgentDataArray = getResources().getStringArray(R.array.user_agent_data);
+
+        // Get the current user agent name from the preference.
+        String userAgentName = savedPreferences.getString("user_agent", "Privacy Browser");
+
+        // Get the array position of the user agent name.
+        int userAgentArrayPosition = userAgentNamesArray.getPosition(userAgentName);
 
-        // Set the current user-agent as the summary text for the "user_agent" preference when the preference screen is loaded.
-        switch (savedPreferences.getString("user_agent", "PrivacyBrowser/1.0")) {
-            case "WebView default user agent":
+        // Populate the user agent summary.
+        switch (userAgentArrayPosition) {
+            case MainWebViewActivity.UNRECOGNIZED_USER_AGENT:  // The user agent name is not on the canonical list.
+                // This is probably because it was set in an older version of Privacy Browser before the switch to persistent user agent names.  Use the current user agent entry name as the summary.
+                userAgentPreference.setSummary(userAgentName);
+                break;
+
+            case MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT:
                 // Get the user agent text from the webview (which changes based on the version of Android and WebView installed).
-                userAgentPreference.setSummary(bareWebView.getSettings().getUserAgentString());
+                userAgentPreference.setSummary(translatedUserAgentNamesArray[userAgentArrayPosition] + ":\n" + bareWebView.getSettings().getUserAgentString());
                 break;
 
-            case "Custom user agent":
-                // We can't use the string from the array because it is referenced in code and can't be translated.
+            case MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT:
+                // Set the summary text.
                 userAgentPreference.setSummary(R.string.custom_user_agent);
                 break;
 
             default:
-                // Display the user agent from the preference as the summary text.
-                userAgentPreference.setSummary(savedPreferences.getString("user_agent", "PrivacyBrowser/1.0"));
-                break;
+                // Get the user agent summary from the user agent data array.
+                userAgentPreference.setSummary(translatedUserAgentNamesArray[userAgentArrayPosition] + ":\n" + userAgentDataArray[userAgentArrayPosition]);
         }
 
-        // Set the summary text for "customUserAgentPreference" (the default is `PrivacyBrowser/1.0`) and enable it if `userAgentPreference` it set to `Custom user agent`.
+        // Set the summary text for the custom user agent preference and enable it if user agent preference is set to custom.
         customUserAgentPreference.setSummary(savedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0"));
-        customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals("Custom user agent"));
+        customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals(getString(R.string.custom_user_agent)));
 
 
         // Set the Tor homepage URL as the summary text for the `tor_homepage` preference when the preference screen is loaded.  The default is DuckDuckGo: `https://3g2upl4pq6kufc4m.onion`.
@@ -144,7 +178,7 @@ public class SettingsFragment extends PreferenceFragment {
         torSearchCustomURLPreference.setSummary(savedPreferences.getString("tor_search_custom_url", ""));
 
         // Enable the Tor custom URL search options only if proxying through Orbot and the search is set to `Custom URL`.
-        torSearchCustomURLPreference.setEnabled(proxyThroughOrbotBoolean && torSearchString.equals("Custom URL"));
+        torSearchCustomURLPreference.setEnabled(proxyThroughOrbot && torSearchString.equals("Custom URL"));
 
 
         // Set the search URL as the summary text for the search preference when the preference screen is loaded.  The default is `https://duckduckgo.com/html/?q=`.
@@ -161,655 +195,1313 @@ public class SettingsFragment extends PreferenceFragment {
         searchCustomURLPreference.setEnabled(searchString.equals("Custom URL"));
 
 
-        // Enable `translucentNavigationBarPreference` only if full screen browsing mode is enabled and `hide_system_bars` is disabled.
-        translucentNavigationBarPreference.setEnabled(fullScreenBrowsingModeBoolean && !hideSystemBarsBoolean);
+        // Enable the translucent navigation bar preference only if full screen browsing mode is enabled and `hide_system_bars` is disabled.
+        translucentNavigationBarPreference.setEnabled(fullScreenBrowsingMode && !hideSystemBars);
 
         // Set the status of the `Clear and Exit` preferences.
-        clearCookiesPreference.setEnabled(!clearEverythingBoolean);
-        clearDomStoragePreference.setEnabled(!clearEverythingBoolean);
-        clearFormDataPreference.setEnabled(!clearEverythingBoolean);
-        clearCachePreference.setEnabled(!clearEverythingBoolean);
+        clearCookiesPreference.setEnabled(!clearEverything);
+        clearDomStoragePreference.setEnabled(!clearEverything);
+        clearFormDataPreference.setEnabled(!clearEverything);
+        clearCachePreference.setEnabled(!clearEverything);
 
-        // Set the homepage URL as the summary text for the `Homepage` preference when the preference screen is loaded.  The default is `https://duckduckgo.com`.
-        homepagePreference.setSummary(savedPreferences.getString("homepage", "https://duckduckgo.com"));
+        // Set the homepage URL as the summary text for the homepage preference.
+        homepagePreference.setSummary(savedPreferences.getString("homepage", "https://duckduckgo.com/?kao=-1&amp;kak=-1"));
 
-        // Set the default font size as the summary text for the `Default Font Size` preference when the preference screen is loaded.  The default is `100`.
+        // Set the default font size as the summary text for the preference.
         defaultFontSizePreference.setSummary(savedPreferences.getString("default_font_size", "100") + "%%");
 
+        // Disable the JavaScript preference if Night Mode is enabled.  JavaScript will be enabled for all web pages.
+        javaScriptPreference.setEnabled(!nightMode);
 
-        // Set the `javaScriptPreference` icon.
-        if (javaScriptEnabledBoolean) {
+        // Set the JavaScript icon.
+        if (javaScriptEnabled || nightMode) {
             javaScriptPreference.setIcon(R.drawable.javascript_enabled);
         } else {
             javaScriptPreference.setIcon(R.drawable.privacy_mode);
         }
 
-        // Set the `firstPartyCookiesPreference` icon.
-        if (firstPartyCookiesEnabledBoolean) {
+        // Set the first-party cookies icon.
+        if (firstPartyCookiesEnabled) {
             firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
         } else {
-            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
+            } else {
+                firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
+            }
         }
 
-        // Set the `thirdPartyCookiesPreference` icon.
-        if (firstPartyCookiesEnabledBoolean && Build.VERSION.SDK_INT >= 21) {
-            if (thirdPartyCookiesEnabledBoolean) {
+        // Set the third party cookies icon.
+        if (firstPartyCookiesEnabled && Build.VERSION.SDK_INT >= 21) {
+            if (thirdPartyCookiesEnabled) {
                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
             } else {
-                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled);
+                if (MainWebViewActivity.darkTheme) {
+                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
+                } else {
+                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
+                }
             }
         } else {
-            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted);
+            if (MainWebViewActivity.darkTheme) {
+                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
+            } else {
+                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
+            }
         }
 
-        // Set the `domStoragePreference` icon.
-        if (javaScriptEnabledBoolean) {
-            if (savedPreferences.getBoolean("dom_storage_enabled", false)) {
+        // Set the DOM storage icon.
+        if (javaScriptEnabled || nightMode) {  // The preference is enabled.
+            if (savedPreferences.getBoolean("dom_storage_enabled", false)) {  // DOM storage is enabled.
                 domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+            } else {  // DOM storage is disabled.
+                if (MainWebViewActivity.darkTheme) {
+                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
+                } else {
+                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
+                }
+            }
+        } else {  // The preference is disabled.  The icon should be ghosted.
+            if (MainWebViewActivity.darkTheme) {
+                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
             } else {
-                domStoragePreference.setIcon(R.drawable.dom_storage_disabled);
+                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
             }
-        } else {
-            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted);
         }
 
-        // Set the `saveFormDataPreference` icon.
+        // Set the save form data icon.
         if (savedPreferences.getBoolean("save_form_data_enabled", false)) {
             saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
         } else {
-            saveFormDataPreference.setIcon(R.drawable.form_data_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_dark);
+            } else {
+                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_light);
+            }
         }
 
-        // Set the `customUserAgentPreference` icon.
+        // Set the custom user agent icon.
         if (customUserAgentPreference.isEnabled()) {
-            customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled);
+            if (MainWebViewActivity.darkTheme) {
+                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
+            } else {
+                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_light);
+            }
         } else {
-            customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted);
+            if (MainWebViewActivity.darkTheme) {
+                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
+            } else {
+                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
+            }
         }
 
-        // Set the `blockAdsPreference` icon.
-        if (savedPreferences.getBoolean("block_ads", true)) {
-            blockAdsPreference.setIcon(R.drawable.block_ads_enabled);
+        // Set the incognito mode icon.
+        if (savedPreferences.getBoolean("incognito_mode", false)) {
+            if (MainWebViewActivity.darkTheme) {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
+            } else {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
+            }
         } else {
-            blockAdsPreference.setIcon(R.drawable.block_ads_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
+            } else {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
+            }
         }
 
-        // Set the `incognitoModePreference` icon.
-        if (savedPreferences.getBoolean("incognito_mode", false)) {
-            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled);
+        // Set the Do Not Track icon.
+        if (savedPreferences.getBoolean("do_not_track", false)) {
+            if (MainWebViewActivity.darkTheme) {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+            } else {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_light);
+            }
         } else {
-            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+            } else {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_light);
+            }
         }
 
-        // Set the `doNotTrackPreference` icon.
-        if (savedPreferences.getBoolean("do_not_track", false)) {
-            doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled);
+        // Set the allow screenshots icon.
+        if (savedPreferences.getBoolean("allow_screenshots", false)) {
+            if (MainWebViewActivity.darkTheme) {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
+            } else {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
+            }
+        } else {
+            if (MainWebViewActivity.darkTheme) {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
+            } else {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+            }
+        }
+
+        // Set the EasyList icon.
+        if (savedPreferences.getBoolean("easylist", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                easyListPreference.setIcon(R.drawable.block_ads_enabled_dark);
+            } else {
+                easyListPreference.setIcon(R.drawable.block_ads_enabled_light);
+            }
         } else {
-            doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                easyListPreference.setIcon(R.drawable.block_ads_disabled_dark);
+            } else {
+                easyListPreference.setIcon(R.drawable.block_ads_disabled_light);
+            }
         }
 
-        // Set the `proxyThroughOrbotPreference` icon.
-        if (proxyThroughOrbotBoolean) {
-            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled);
+        // Set the EasyPrivacy icon.
+        if (savedPreferences.getBoolean("easyprivacy", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+            } else {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+            }
         } else {
-            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+            } else {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+            }
         }
 
-        // Set the `torSearchPreference` and `torSearchCustomURLPreference` icons.
-        if (proxyThroughOrbotBoolean) {
-            // Set the `torHomepagePreference` and `torSearchPreference` icons.
-            torHomepagePreference.setIcon(R.drawable.home_enabled);
-            torSearchPreference.setIcon(R.drawable.search_enabled);
+        // Set the Fanboy lists icons.
+        if (fanboyAnnoyanceListEnabled) {
+            if (MainWebViewActivity.darkTheme) {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_dark);
 
-            // Set the `torSearchCustomURLPreference` icon.
-            if (torSearchCustomURLPreference.isEnabled()) {
-                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled);
+                // Set the Fanboy social blocking list icon.
+                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_dark);
             } else {
-                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_disabled);
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_light);
+
+                // Set the Fanboy social blocking list icon.
+                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_light);
+            }
+        } else {
+            if (MainWebViewActivity.darkTheme) {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_dark);
+
+                // Set the Fanboy social blocking list icon.
+                if (fanboySocialBlockingEnabled) {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_dark);
+                } else {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_dark);
+                }
+            } else {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.block_ads_disabled_light);
+
+                // Set the Fanboy social blocking list icon.
+                if (fanboySocialBlockingEnabled) {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_light);
+                } else {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_light);
+                }
             }
-        } else {  // Proxy through Orbot is disabled.
-            torHomepagePreference.setIcon(R.drawable.home_ghosted);
-            torSearchPreference.setIcon(R.drawable.search_ghosted);
-            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted);
         }
 
-        // Set the `searchCustomURLPreference` icon.
+        // Set the Tor icons according to the theme.
+        if (proxyThroughOrbot) {  // Proxying is enabled.
+            if (MainWebViewActivity.darkTheme) {
+                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
+                torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
+                torSearchPreference.setIcon(R.drawable.search_enabled_dark);
+
+                // Set the custom search icon.
+                if (torSearchCustomURLPreference.isEnabled()) {
+                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                } else {
+                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                }
+            } else {
+                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
+                torHomepagePreference.setIcon(R.drawable.home_enabled_light);
+                torSearchPreference.setIcon(R.drawable.search_enabled_light);
+
+                // Set the custom search icon.
+                if (torSearchCustomURLPreference.isEnabled()) {
+                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                } else {
+                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                }
+            }
+        } else {  // Proxying is disabled.
+            if (MainWebViewActivity.darkTheme) {
+                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
+                torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
+                torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
+                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+            } else {
+                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
+                torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
+                torSearchPreference.setIcon(R.drawable.search_ghosted_light);
+                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+            }
+        }
+
+        // Set the search custom URL icon.
         if (searchCustomURLPreference.isEnabled()) {
-            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled);
+            if (MainWebViewActivity.darkTheme) {
+                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+            } else {
+                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+            }
         } else {
-            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted);
+            if (MainWebViewActivity.darkTheme) {
+                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+            } else {
+                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+            }
         }
 
         // Set the full screen browsing mode icons.
-        if (fullScreenBrowsingModeBoolean) {
-            // Set the `fullScreenBrowsingModePreference` icon.
-            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled);
-
-            if (hideSystemBarsBoolean) {
-                // Set `hideSystemBarsPreference` to use the enabled icon.
-                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled);
-
-                // Set `translucentNavigationBarPreference` to use the ghosted icon.
-                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted);
-            } else {  // `hideSystemBarsBoolean` is false.
-                // Set `hideSystemBarsPreference` to use the disabled icon.
-                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled);
-
-                // Set the correct icon for `translucentNavigationBarPreference`.
-                if (savedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled);
+        if (fullScreenBrowsingMode) {  // Full screen browsing mode is enabled.
+            // Set the `fullScreenBrowsingModePreference` icon according to the theme.
+            if (MainWebViewActivity.darkTheme) {
+                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
+            } else {
+                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_light);
+            }
+
+            if (hideSystemBars) {  // `hideSystemBarsBoolean` is `true`.
+                // Set the icons according to the theme.
+                if (MainWebViewActivity.darkTheme) {
+                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
+                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
                 } else {
-                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled);
+                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
+                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
+                }
+            } else {  // `hideSystemBarsBoolean` is `false`.
+                // Set the `hideSystemBarsPreference` icon according to the theme.
+                if (MainWebViewActivity.darkTheme) {
+                    // Set the icon for `hideSystemBarsPreference`.
+                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
+
+                    // Set the icon for `translucentNavigationBarPreference`.
+                    if (savedPreferences.getBoolean("translucent_navigation_bar", true)) {
+                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
+                    } else {
+                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
+                    }
+                } else {
+                    // Set the icon for `hideSystemBarsPreference`.
+                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
+
+                    // Set the icon for `translucentNavigationBarPreference`.
+                    if (savedPreferences.getBoolean("translucent_navigation_bar", true)) {
+                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
+                    } else {
+                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
+                    }
                 }
             }
-        } else {  // `fullScreenBrowsingModeBoolean` is false.
-            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled);
-            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted);
-            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted);
+        } else {  // Full screen browsing mode is disabled.
+            // Set the icons according to the theme.
+            if (MainWebViewActivity.darkTheme) {
+                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
+                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_dark);
+                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
+            } else {
+                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_light);
+                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_light);
+                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
+            }
         }
 
-        // Set the `clearEverythingPreference` icon.
-        if (clearEverythingBoolean) {
-            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled);
+        // Set the clear everything preference icon.
+        if (clearEverything) {
+            if (MainWebViewActivity.darkTheme) {
+                clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
+            } else {
+                clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_light);
+            }
         } else {
             clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
         }
 
-        // Set the `clearCookiesPreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_cookies", true)) {
-            clearCookiesPreference.setIcon(R.drawable.cookies_cleared);
+        // Set the clear cookies preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_cookies", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
+            } else {
+                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
+            }
         } else {
             clearCookiesPreference.setIcon(R.drawable.cookies_warning);
         }
 
-        // Set the `clearDomStoragePreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_dom_storage", true)) {
-            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared);
+        // Set the clear DOM storage preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_dom_storage", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
+            } else {
+                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
+            }
         } else {
             clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
         }
 
-        // Set the `clearFormDataPreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_form_data", true)) {
-            clearFormDataPreference.setIcon(R.drawable.form_data_cleared);
+        // Set the clear form data preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_form_data", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
+            } else {
+                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
+            }
         } else {
             clearFormDataPreference.setIcon(R.drawable.form_data_warning);
         }
 
-        // Set the `clearCachePreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_cache", true)) {
-            clearCachePreference.setIcon(R.drawable.cache_cleared);
+        // Set the clear cache preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_cache", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
+            } else {
+                clearCachePreference.setIcon(R.drawable.cache_cleared_light);
+            }
         } else {
             clearCachePreference.setIcon(R.drawable.cache_warning);
         }
 
-        // Set the `swipeToRefreshPreference` icon.
-        if (savedPreferences.getBoolean("swipe_to_refresh", false)) {
-            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled);
+        // Set the swipe to refresh preference icon.
+        if (savedPreferences.getBoolean("swipe_to_refresh", true)) {
+            if (MainWebViewActivity.darkTheme) {
+                swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
+            } else {
+                swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_light);
+            }
         } else {
-            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_dark);
+            } else {
+                swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_light);
+            }
         }
 
-        // Set the `displayAdditionalAppBarIconsPreference` icon.
+        // Set the display additional app bar icons preference icon.
         if (savedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
-            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled);
+            if (MainWebViewActivity.darkTheme) {
+                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
+            } else {
+                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_light);
+            }
         } else {
-            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_dark);
+            } else {
+                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_light);
+            }
         }
 
-        // Set the `darkThemePreference` icon.
+        // Set the dark theme preference icon.
         if (savedPreferences.getBoolean("dark_theme", false)) {
             darkThemePreference.setIcon(R.drawable.theme_dark);
         } else {
             darkThemePreference.setIcon(R.drawable.theme_light);
         }
 
-        // Set the `displayWebpageImagesPreference` icon.
+        // Set the night mode preference icon.
+        if (nightMode) {
+            if (MainWebViewActivity.darkTheme) {
+                nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
+            } else {
+                nightModePreference.setIcon(R.drawable.night_mode_enabled_light);
+            }
+        } else {
+            if (MainWebViewActivity.darkTheme) {
+                nightModePreference.setIcon(R.drawable.night_mode_disabled_dark);
+            } else {
+                nightModePreference.setIcon(R.drawable.night_mode_disabled_light);
+            }
+        }
+
+        // Set the display webpage images preference icon.
         if (savedPreferences.getBoolean("display_webpage_images", true)) {
-            displayWebpageImagesPreference.setIcon(R.drawable.images_enabled);
+            if (MainWebViewActivity.darkTheme) {
+                displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
+            } else {
+                displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light);
+            }
         } else {
-            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled);
+            if (MainWebViewActivity.darkTheme) {
+                displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark);
+            } else {
+                displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_light);
+            }
         }
 
 
         // Listen for preference changes.
-        preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
-            @Override
-            // Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled.  We know.
-            @SuppressLint("SetJavaScriptEnabled")
-            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
-
-                switch (key) {
-                    case "javascript_enabled":
-                        // Update the icons.
-                        if (sharedPreferences.getBoolean("javascript_enabled", false)) {
-                            // Update the icon for `javascript_enabled`.
-                            javaScriptPreference.setIcon(R.drawable.javascript_enabled);
-
-                            // Update the icon for `dom_storage_enabled`.
-                            if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+        preferencesListener = (SharedPreferences sharedPreferences, String key) -> {
+            switch (key) {
+                case "javascript_enabled":
+                    // Update the icons and the DOM storage preference status.
+                    if (sharedPreferences.getBoolean("javascript_enabled", false)) {  // The JavaScript preference is enabled.
+                        // Update the icon for the JavaScript preference.
+                        javaScriptPreference.setIcon(R.drawable.javascript_enabled);
+
+                        // Update the status of the DOM storage preference.
+                        domStoragePreference.setEnabled(true);
+
+                        // Update the icon for the DOM storage preference.
+                        if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                        } else {
+                            if (MainWebViewActivity.darkTheme) {
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
                             } else {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled);
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
                             }
-                        } else {  // `javascript_enabled` is `false`.
-                            // Update the icon for `javascript_enabled`.
-                            javaScriptPreference.setIcon(R.drawable.privacy_mode);
-
-                            // Set the icon for `dom_storage_disabled` to be ghosted.
-                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted);
                         }
-                        break;
+                    } else {  // The JavaScript preference is disabled.
+                        // Update the icon for the JavaScript preference.
+                        javaScriptPreference.setIcon(R.drawable.privacy_mode);
 
-                    case "first_party_cookies_enabled":
-                        // Update the icons for `first_party_cookies_enabled` and `third_party_cookies_enabled`.
-                        if (sharedPreferences.getBoolean("first_party_cookies_enabled", false)) {
-                            // Set the icon for `first_party_cookies_enabled`.
-                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
+                        // Update the status of the DOM storage preference.
+                        domStoragePreference.setEnabled(false);
 
-                            // Update the icon for `third_party_cookies_enabled`.
-                            if (Build.VERSION.SDK_INT >= 21) {
-                                if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
-                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                        // Set the icon for DOM storage preference to be ghosted.
+                        if (MainWebViewActivity.darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
+                        } else {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
+                        }
+                    }
+                    break;
+
+                case "first_party_cookies_enabled":
+                    // Update the icons for `first_party_cookies_enabled` and `third_party_cookies_enabled`.
+                    if (sharedPreferences.getBoolean("first_party_cookies_enabled", false)) {
+                        // Set the icon for `first_party_cookies_enabled`.
+                        firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
+
+                        // Update the icon for `third_party_cookies_enabled`.
+                        if (Build.VERSION.SDK_INT >= 21) {
+                            if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
+                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                            } else {
+                                if (MainWebViewActivity.darkTheme) {
+                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
                                 } else {
-                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled);
+                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
                                 }
+                            }
+                        } else {
+                            if (MainWebViewActivity.darkTheme) {
+                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
                             } else {
-                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted);
+                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
                             }
-                        } else {  // `first_party_cookies_enabled` is `false`.
-                            // Update the icon for `first_party_cookies_enabled`.
-                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled);
+                        }
+                    } else {  // `first_party_cookies_enabled` is `false`.
+                        // Update the icon for `first_party_cookies_enabled`.
+                        if (MainWebViewActivity.darkTheme) {
+                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
+                        } else {
+                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
+                        }
 
-                            // Set the icon for `third_party_cookies_enabled` to be ghosted.
-                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted);
+                        // Set the icon for `third_party_cookies_enabled` to be ghosted.
+                        if (MainWebViewActivity.darkTheme) {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
+                        } else {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
                         }
+                    }
+
+                    // Enable `third_party_cookies_enabled` if `first_party_cookies_enabled` is `true` and API >= 21.
+                    thirdPartyCookiesPreference.setEnabled(sharedPreferences.getBoolean("first_party_cookies_enabled", false) && (Build.VERSION.SDK_INT >= 21));
+                    break;
+
+                case "third_party_cookies_enabled":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
+                        thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
+                        } else {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "dom_storage_enabled":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
+                        domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
+                        } else {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "save_form_data_enabled":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("save_form_data_enabled", false)) {
+                        saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            saveFormDataPreference.setIcon(R.drawable.form_data_disabled_dark);
+                        } else {
+                            saveFormDataPreference.setIcon(R.drawable.form_data_disabled_light);
+                        }
+                    }
 
-                        // Enable `third_party_cookies_enabled` if `first_party_cookies_enabled` is `true` and API >= 21.
-                        thirdPartyCookiesPreference.setEnabled(sharedPreferences.getBoolean("first_party_cookies_enabled", false) && (Build.VERSION.SDK_INT >= 21));
-                        break;
+                case "user_agent":
+                    // Get the new user agent name.
+                    String newUserAgentName = sharedPreferences.getString("user_agent", "Privacy Browser");
 
-                    case "third_party_cookies_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
-                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    // Get the array position for the new user agent name.
+                    int newUserAgentArrayPosition = userAgentNamesArray.getPosition(newUserAgentName);
+
+                    // Get the translated new user agent name.
+                    String translatedNewUserAgentName = translatedUserAgentNamesArray[newUserAgentArrayPosition];
+
+                    // Populate the user agent summary.
+                    switch (newUserAgentArrayPosition) {
+                        case MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT:
+                            // Get the user agent text from the webview (which changes based on the version of Android and WebView installed).
+                            userAgentPreference.setSummary(translatedNewUserAgentName + ":\n" + bareWebView.getSettings().getUserAgentString());
+
+                            // Disable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(false);
+
+                            // Set the custom user agent preference icon according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
+                            } else {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
+                            }
+                            break;
+
+                        case MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT:
+                            // Set the summary text.
+                            userAgentPreference.setSummary(R.string.custom_user_agent);
+
+                            // Enable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(true);
+
+                            // Set the custom user agent preference icon according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
+                            } else {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_light);
+                            }
+                            break;
+
+                        default:
+                            // Get the user agent summary from the user agent data array.
+                            userAgentPreference.setSummary(translatedNewUserAgentName + ":\n" + userAgentDataArray[newUserAgentArrayPosition]);
+
+                            // Disable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(false);
+
+                            // Set the custom user agent preference icon according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
+                            } else {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
+                            }
+                    }
+                    break;
+
+                case "custom_user_agent":
+                    // Set the new custom user agent as the summary text for the preference.
+                    customUserAgentPreference.setSummary(sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0"));
+                    break;
+
+                case "incognito_mode":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("incognito_mode", false)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
+                        } else {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
+                        } else {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "do_not_track":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("do_not_track", false)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+                        } else {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_dark);
                         } else {
-                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled);
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_light);
                         }
-                        break;
+                    }
 
-                    case "dom_storage_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
-                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                    break;
+
+                case "allow_screenshots":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("allow_screenshots", false)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
                         } else {
-                            domStoragePreference.setIcon(R.drawable.dom_storage_disabled);
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
+                        } else {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+                        }
+                    }
 
-                    case "save_form_data_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("save_form_data_enabled", false)) {
-                            saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
+                    // Create an intent to restart Privacy Browser.
+                    Intent allowScreenshotsRestartIntent = getActivity().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);
+
+                    // Make it so.
+                    startActivity(allowScreenshotsRestartIntent);
+                    break;
+
+                case "easylist":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("easylist", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            easyListPreference.setIcon(R.drawable.block_ads_enabled_dark);
+                        } else {
+                            easyListPreference.setIcon(R.drawable.block_ads_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            easyListPreference.setIcon(R.drawable.block_ads_disabled_dark);
                         } else {
-                            saveFormDataPreference.setIcon(R.drawable.form_data_disabled);
+                            easyListPreference.setIcon(R.drawable.block_ads_disabled_light);
                         }
+                    }
+                    break;
+
+                case "easyprivacy":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("easyprivacy", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+                        } else {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+                        } else {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "user_agent":
-                        String userAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
+                case "fanboy_annoyance_list":
+                    boolean currentFanboyAnnoyanceList = sharedPreferences.getBoolean("fanboy_annoyance_list", true);
+                    boolean currentFanboySocialBlockingList = sharedPreferences.getBoolean("fanboy_social_blocking_list", true);
 
-                        switch (userAgentString) {
-                            case "WebView default user agent":
-                                // Display the user agent as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(bareWebView.getSettings().getUserAgentString());
+                    // Update the Fanboy icons.
+                    if (sharedPreferences.getBoolean("fanboy_annoyance_list", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_dark);
 
-                                // Update `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(false);
-                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted);
-                                break;
+                            // Update the Fanboy's social blocking list icon.
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_dark);
+                        } else {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_light);
 
-                            case "Custom user agent":
-                                // Display `Custom user agent` as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(R.string.custom_user_agent);
+                            // Update the Fanboy's social blocking list icon.
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_dark);
+
+                            // Update the Fanboy's social blocking list icon.
+                            if (currentFanboySocialBlockingList) {
+                                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_dark);
+                            } else {
+                                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_dark);
+                            }
+                        } else {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_light);
 
-                                // Update `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(true);
-                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled);
-                                break;
+                            // Update the Fanboy's social blocking list icon.
+                            if (currentFanboySocialBlockingList) {
+                                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_light);
+                            } else {
+                                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_light);
+                            }
+                        }
+                    }
 
-                            default:
-                                // Display the user agent as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0"));
+                    // Only enable Fanboy's social blocking list preference if Fanboy's annoyance list preference is disabled.
+                    fanboySocialBlockingListPreference.setEnabled(!currentFanboyAnnoyanceList);
+                    break;
 
-                                // Update `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(false);
-                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted);
-                                break;
+                case "fanboy_social_blocking_list":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("fanboy_social_blocking_list", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_dark);
+                        } else {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_dark);
+                        } else {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "custom_user_agent":
-                        // Set the new custom user agent as the summary text for `custom_user_agent`.  The default is `PrivacyBrowser/1.0`.
-                        customUserAgentPreference.setSummary(sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0"));
-                        break;
+                case "proxy_through_orbot":
+                    // Get current settings.
+                    boolean currentProxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
+                    String currentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
 
-                    case "block_ads":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("block_ads", true)) {
-                            blockAdsPreference.setIcon(R.drawable.block_ads_enabled);
+                    // Enable the Tor custom URL search option only if `currentProxyThroughOrbot` is true and the search is set to `Custom URL`.
+                    torSearchCustomURLPreference.setEnabled(currentProxyThroughOrbot && currentTorSearchString.equals("Custom URL"));
+
+                    // Update the icons.
+                    if (currentProxyThroughOrbot) {
+                        // Set the Tor icons according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
+                            torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
+                            torSearchPreference.setIcon(R.drawable.search_enabled_dark);
+
+                            // Set the `torSearchCustomURLPreference` icon.
+                            if (torSearchCustomURLPreference.isEnabled()) {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                            } else {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                            }
                         } else {
-                            blockAdsPreference.setIcon(R.drawable.block_ads_disabled);
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
+                            torHomepagePreference.setIcon(R.drawable.home_enabled_light);
+                            torSearchPreference.setIcon(R.drawable.search_enabled_light);
+
+                            // Set the `torSearchCustomURLPreference` icon.
+                            if (torSearchCustomURLPreference.isEnabled()) {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                            } else {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                            }
                         }
-                        break;
+                    } else {  // Proxy through Orbot is disabled.
+                        if (MainWebViewActivity.darkTheme) {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
+                            torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
+                            torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                        } else {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
+                            torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
+                            torSearchPreference.setIcon(R.drawable.search_ghosted_light);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                        }
+                    }
+                    break;
 
-                    case "incognito_mode":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("incognito_mode", false)) {
-                            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled);
+                case "tor_homepage":
+                    // Set the new tor homepage URL as the summary text for the `tor_homepage` preference.  The default is DuckDuckGo:  `https://3g2upl4pq6kufc4m.onion`.
+                    torHomepagePreference.setSummary(sharedPreferences.getString("tor_homepage", "https://3g2upl4pq6kufc4m.onion"));
+                    break;
+
+                case "tor_search":
+                    // Get the present search string.
+                    String presentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
+
+                    // Update the preferences.
+                    if (presentTorSearchString.equals("Custom URL")) {
+                        // Use `R.string.custom_url`, which is translated, as the summary instead of the array value, which isn't.
+                        torSearchPreference.setSummary(R.string.custom_url);
+
+                        // Enable `torSearchCustomURLPreference`.
+                        torSearchCustomURLPreference.setEnabled(true);
+
+                        // Update the `torSearchCustomURLPreference` icon.
+                        if (MainWebViewActivity.darkTheme) {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
                         } else {
-                            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
                         }
-                        break;
+                    } else {
+                        // Set the array value as the summary text.
+                        torSearchPreference.setSummary(presentTorSearchString);
 
-                    case "do_not_track":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("do_not_track", false)) {
-                            doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled);
+                        // Disable `torSearchCustomURLPreference`.
+                        torSearchCustomURLPreference.setEnabled(false);
+
+                        // Update the `torSearchCustomURLPreference` icon.
+                        if (MainWebViewActivity.darkTheme) {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
                         } else {
-                            doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
                         }
+                    }
+                    break;
 
-                        break;
+                case "tor_search_custom_url":
+                    // Set the summary text for `tor_search_custom_url`.
+                    torSearchCustomURLPreference.setSummary(sharedPreferences.getString("tor_search_custom_url", ""));
+                    break;
 
-                    case "proxy_through_orbot":
-                        // Get current settings.
-                        boolean currentProxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
-                        String currentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
+                case "search":
+                    // Store the new search string.
+                    String newSearchString = sharedPreferences.getString("search", "https://duckduckgo.com/html/?q=");
 
-                        // Enable the Tor custom URL search option only if `currentProxyThroughOrbot` is true and the search is set to `Custom URL`.
-                        torSearchCustomURLPreference.setEnabled(currentProxyThroughOrbot && currentTorSearchString.equals("Custom URL"));
+                    // Update `searchPreference` and `searchCustomURLPreference`.
+                    if (newSearchString.equals("Custom URL")) {  // `Custom URL` is selected.
+                        // Set the summary text to `R.string.custom_url`, which is translated.
+                        searchPreference.setSummary(R.string.custom_url);
 
-                        // Update the icons.
-                        if (currentProxyThroughOrbot) {
-                            // Set the `proxyThroughOrbotPreference`, `torHomepagePreference`, and `torSearchPreference` icons.
-                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled);
-                            torHomepagePreference.setIcon(R.drawable.home_enabled);
-                            torSearchPreference.setIcon(R.drawable.search_enabled);
+                        // Enable `searchCustomURLPreference`.
+                        searchCustomURLPreference.setEnabled(true);
 
-                            // Set the `torSearchCustomURLPreference` icon.
-                            if (torSearchCustomURLPreference.isEnabled()) {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled);
+                        // Set the `searchCustomURLPreference` according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                        } else {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                        }
+                    } else {  // `Custom URL` is not selected.
+                        // Set the summary text to `newSearchString`.
+                        searchPreference.setSummary(newSearchString);
+
+                        // Disable `searchCustomURLPreference`.
+                        searchCustomURLPreference.setEnabled(false);
+
+                        // Set the `searchCustomURLPreference` according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                        } else {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                        }
+                    }
+                    break;
+
+                case "search_custom_url":
+                    // Set the new custom search URL as the summary text for `search_custom_url`.  The default is `""`.
+                    searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", ""));
+                    break;
+
+                case "full_screen_browsing_mode":
+                    if (sharedPreferences.getBoolean("full_screen_browsing_mode", false)) {
+                        // Set the `fullScreenBrowsingModePreference` icon according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
+                        } else {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_light);
+                        }
+
+                        if (sharedPreferences.getBoolean("hide_system_bars", false)) {  // `hide_system_bars` is `true`.
+                            // Disable `translucentNavigationBarPreference`.
+                            translucentNavigationBarPreference.setEnabled(false);
+
+                            // Set the icons according to the theme.
+                            if (MainWebViewActivity.darkTheme) {
+                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
                             } else {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_disabled);
+                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
                             }
-                        } else {  // Proxy through Orbot is disabled.
-                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled);
-                            torHomepagePreference.setIcon(R.drawable.home_ghosted);
-                            torSearchPreference.setIcon(R.drawable.search_ghosted);
-                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted);
-                        }
-                        break;
-
-                    case "tor_homepage":
-                        // Set the new tor homepage URL as the summary text for the `tor_homepage` preference.  The default is DuckDuckGo:  `https://3g2upl4pq6kufc4m.onion`.
-                        torHomepagePreference.setSummary(sharedPreferences.getString("tor_homepage", "https://3g2upl4pq6kufc4m.onion"));
-                        break;
-
-                    case "tor_search":
-                        // Get the present search string.
-                        String presentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
-
-                        // Update the preferences.
-                        if (presentTorSearchString.equals("Custom URL")) {
-                            // Use `R.string.custom_url`, which is translated, as the summary instead of the array value, which isn't.
-                            torSearchPreference.setSummary(R.string.custom_url);
-
-                            // Update `torSearchCustomURLPreference`.
-                            torSearchCustomURLPreference.setEnabled(true);
-                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled);
-                        } else {
-                            // Set the array value as the summary text.
-                            torSearchPreference.setSummary(presentTorSearchString);
-
-                            // Update `torSearchCustomURLPreference`.
-                            torSearchCustomURLPreference.setEnabled(false);
-                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_disabled);
-                        }
-                        break;
-
-                    case "tor_search_custom_url":
-                        // Set the summary text for `tor_search_custom_url`.
-                        torSearchCustomURLPreference.setSummary(sharedPreferences.getString("tor_search_custom_url", ""));
-                        break;
-
-                    case "search":
-                        // Store the new search string.
-                        String newSearchString = sharedPreferences.getString("search", "https://duckduckgo.com/html/?q=");
-
-                        // Update `searchPreference` and `searchCustomURLPreference`.
-                        if (newSearchString.equals("Custom URL")) {  // `Custom URL` is selected.
-                            // Set the summary text to `R.string.custom_url`, which is translated.
-                            searchPreference.setSummary(R.string.custom_url);
-
-                            // Update `searchCustomURLPreference`.
-                            searchCustomURLPreference.setEnabled(true);
-                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled);
-                        } else {  // `Custom URL` is not selected.
-                            // Set the summary text to `newSearchString`.
-                            searchPreference.setSummary(newSearchString);
-
-                            // Update `searchCustomURLPreference`.
-                            searchCustomURLPreference.setEnabled(false);
-                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted);
-                        }
-                        break;
-
-                    case "search_custom_url":
-                        // Set the new custom search URL as the summary text for `search_custom_url`.  The default is `""`.
-                        searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", ""));
-                        break;
-
-                    case "full_screen_browsing_mode":
-                        if (sharedPreferences.getBoolean("full_screen_browsing_mode", false)) {
-                            // Set `fullScreenBrowsingModePreference` to use the enabled icon.
-                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled);
-
-                            if (sharedPreferences.getBoolean("hide_system_bars", false)) {
-                                // Set `hideSystemBarsPreference` to use the enabled icon.
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled);
-
-                                // Update `translucentNavigationBarPreference`.
-                                translucentNavigationBarPreference.setEnabled(false);
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted);
-                            } else {  // `hide_system_bars` is false.
-                                // Set `hideSystemBarsPreference` to use the disabled icon.
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled);
-
-                                // Update `translucentNavigationBarPreference`.
-                                translucentNavigationBarPreference.setEnabled(true);
+                        } else {  // `hide_system_bars` is `false`.
+                            // Enable `translucentNavigationBarPreference`.
+                            translucentNavigationBarPreference.setEnabled(true);
+
+                            // Set the icons according to the theme.
+                            if (MainWebViewActivity.darkTheme) {  // Use the dark theme.
+                                // Set the `hideSystemBarsPreference` icon.
+                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
+
+                                // Set the `translucentNavigationBarPreference` icon.
                                 if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled);
+                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
                                 } else {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled);
+                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
                                 }
-                            }
-                        } else {  // `full_screen_browsing_mode` is false.
-                            // Disable `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(false);
+                            } else {  // Use the light theme.
+                                // Set the `hideSystemBarsPreference` icon.
+                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
 
-                            // Update the icons.
-                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled);
-                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted);
-                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted);
+                                // Set the `translucentNavigationBarPreference` icon.
+                                if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
+                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
+                                } else {
+                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
+                                }
+                            }
+                        }
+                    } else {  // `full_screen_browsing_mode` is false.
+                        // Disable `translucentNavigationBarPreference`.
+                        translucentNavigationBarPreference.setEnabled(false);
+
+                        // Update the icons according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_dark);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
+                        } else {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_light);
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_light);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
                         }
-                        break;
+                    }
+                    break;
+
+                case "hide_system_bars":
+                    if (sharedPreferences.getBoolean("hide_system_bars", false)) {
+                        // Disable `translucentNavigationBarPreference`.
+                        translucentNavigationBarPreference.setEnabled(false);
+
+                        // Set the icons according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
+                        } else {
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
+                        }
+                    } else {  // `hide_system_bars` is false.
+                        // Enable `translucentNavigationBarPreference`.
+                        translucentNavigationBarPreference.setEnabled(true);
 
-                    case "hide_system_bars":
-                        if (sharedPreferences.getBoolean("hide_system_bars", false)) {
-                            // Set `hideSystemBarsPreference` to use the enabled icon.
-                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled);
+                        // Set the icons according to the theme.
+                        if (MainWebViewActivity.darkTheme) {
+                            // Set the `hideSystemBarsPreference` icon.
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
 
-                            // Update `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(false);
-                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted);
-                        } else {  // `hide_system_bars` is false.
-                            // Set `hideSystemBarsPreference` to use the disabled icon.
-                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled);
+                            // Set the `translucentNavigationBarPreference` icon.
+                            if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
+                            } else {
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
+                            }
+                        } else {
+                            // Set the `hideSystemBarsPreference` icon.
+                            hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
 
-                            // Update `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(true);
+                            // Set the `translucentNavigationBarPreference` icon.
                             if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled);
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
                             } else {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled);
+                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
                             }
                         }
-                        break;
-
-                    case "translucent_navigation_bar":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled);
+                    }
+                    break;
+
+                case "translucent_navigation_bar":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
                         } else {
-                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
                         }
-                        break;
-
-                    case "clear_everything":
-                        // Store the new `clear_everything` status
-                        boolean newClearEverythingBoolean = sharedPreferences.getBoolean("clear_everything", true);
-
-                        // Update the status of the `Clear and Exit` preferences.
-                        clearCookiesPreference.setEnabled(!newClearEverythingBoolean);
-                        clearDomStoragePreference.setEnabled(!newClearEverythingBoolean);
-                        clearFormDataPreference.setEnabled(!newClearEverythingBoolean);
-                        clearCachePreference.setEnabled(!newClearEverythingBoolean);
-
-                        // Update the `clearEverythingPreference` icon.
-                        if (newClearEverythingBoolean) {
-                            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled);
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
                         } else {
-                            clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
+                            translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
                         }
-
-                        // Update the `clearCookiesPreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cookies", true)) {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared);
+                    }
+                    break;
+
+                case "clear_everything":
+                    // Store the new `clear_everything` status
+                    boolean newClearEverythingBoolean = sharedPreferences.getBoolean("clear_everything", true);
+
+                    // Update the status of the `Clear and Exit` preferences.
+                    clearCookiesPreference.setEnabled(!newClearEverythingBoolean);
+                    clearDomStoragePreference.setEnabled(!newClearEverythingBoolean);
+                    clearFormDataPreference.setEnabled(!newClearEverythingBoolean);
+                    clearCachePreference.setEnabled(!newClearEverythingBoolean);
+
+                    // Update the `clearEverythingPreference` icon.
+                    if (newClearEverythingBoolean) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
                         } else {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_light);
                         }
-
-                        // Update the `clearDomStoragePreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_dom_storage", true)) {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared);
+                    } else {
+                        clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
+                    }
+
+                    // Update the `clearCookiesPreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cookies", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
                         } else {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
                         }
-
-                        // Update the `clearFormDataPreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_form_data", true)) {
-                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared);
+                    } else {
+                        clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    }
+
+                    // Update the `clearDomStoragePreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_dom_storage", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
                         } else {
-                            clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
                         }
-
-                        // Update the `clearCachePreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cache", true)) {
-                            clearCachePreference.setIcon(R.drawable.cache_cleared);
+                    } else {
+                        clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                    }
+
+                    // Update the `clearFormDataPreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_form_data", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
                         } else {
-                            clearCachePreference.setIcon(R.drawable.cache_warning);
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
                         }
-                        break;
-
-                    case "clear_cookies":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_cookies", true)) {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared);
+                    } else {
+                        clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                    }
+
+                    // Update the `clearCachePreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cache", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
                         } else {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_light);
                         }
-                        break;
-
-                    case "clear_dom_storage":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_dom_storage", true)) {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared);
+                    } else {
+                        clearCachePreference.setIcon(R.drawable.cache_warning);
+                    }
+                    break;
+
+                case "clear_cookies":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_cookies", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
                         } else {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
                         }
-                        break;
-
-                    case "clear_form_data":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_form_data", true)) {
-                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared);
+                    } else {
+                        clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    }
+                    break;
+
+                case "clear_dom_storage":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_dom_storage", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
                         } else {
-                            clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
                         }
-                        break;
-
-                    case "clear_cache":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_cache", true)) {
-                            clearCachePreference.setIcon(R.drawable.cache_cleared);
+                    } else {
+                        clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                    }
+                    break;
+
+                case "clear_form_data":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_form_data", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
                         } else {
-                            clearCachePreference.setIcon(R.drawable.cache_warning);
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
                         }
-                        break;
-
-                    case "homepage":
-                        // Set the new homepage URL as the summary text for the Homepage preference.  The default is `https://www.duckduckgo.com`.
-                        homepagePreference.setSummary(sharedPreferences.getString("homepage", "https://www.duckduckgo.com"));
-                        break;
-
-                    case "default_font_size":
-                        // Update the summary text of `default_font_size`.
-                        defaultFontSizePreference.setSummary(sharedPreferences.getString("default_font_size", "100") + "%%");
-                        break;
-
-                    case "swipe_to_refresh":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("swipe_to_refresh", false)) {
-                            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled);
+                    } else {
+                        clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                    }
+                    break;
+
+                case "clear_cache":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_cache", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
                         } else {
-                            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled);
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_light);
                         }
-                        break;
-
-                    case "display_additional_app_bar_icons":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
-                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled);
+                    } else {
+                        clearCachePreference.setIcon(R.drawable.cache_warning);
+                    }
+                    break;
+
+                case "homepage":
+                    // Set the new homepage URL as the summary text for the Homepage preference.  The default is `https://www.duckduckgo.com`.
+                    homepagePreference.setSummary(sharedPreferences.getString("homepage", "https://www.duckduckgo.com"));
+                    break;
+
+                case "default_font_size":
+                    // Update the summary text of `default_font_size`.
+                    defaultFontSizePreference.setSummary(sharedPreferences.getString("default_font_size", "100") + "%%");
+                    break;
+
+                case "swipe_to_refresh":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("swipe_to_refresh", true)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
+                        } else {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_dark);
+                        } else {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "display_additional_app_bar_icons":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
+                        if (MainWebViewActivity.darkTheme) {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
                         } else {
-                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled);
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_dark);
+                        } else {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_light);
+                        }
+                    }
+                    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 changeThemeRestartIntent = getActivity().getParentActivityIntent();
+
+                    // Assert that the intent is not null to remove the lint error below.
+                    assert changeThemeRestartIntent != null;
+
+                    // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack.  It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+                    changeThemeRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+                    // Make it so.
+                    startActivity(changeThemeRestartIntent);
+                    break;
+
+                case "night_mode":
+                    // Set the URL to be reloaded on restart to apply the new night mode setting.
+                    MainWebViewActivity.loadUrlOnRestart = true;
+
+                    // Store the current night mode status.
+                    boolean currentNightModeBoolean = sharedPreferences.getBoolean("night_mode", false);
+                    boolean currentJavaScriptBoolean = sharedPreferences.getBoolean("javascript_enabled", false);
+
+                    // Update the icon.
+                    if (currentNightModeBoolean) {
+                        if (MainWebViewActivity.darkTheme) {
+                            nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
+                        } else {
+                            nightModePreference.setIcon(R.drawable.night_mode_enabled_light);
+                        }
+                    } else {
+                        if (MainWebViewActivity.darkTheme) {
+                            nightModePreference.setIcon(R.drawable.night_mode_disabled_dark);
+                        } else {
+                            nightModePreference.setIcon(R.drawable.night_mode_disabled_light);
+                        }
+                    }
+
+                    // Update the status of `javaScriptPreference` and `domStoragePreference`.
+                    javaScriptPreference.setEnabled(!currentNightModeBoolean);
+                    domStoragePreference.setEnabled(currentNightModeBoolean || currentJavaScriptBoolean);
+
+                    // Update the `javaScriptPreference` icon.
+                    if (currentNightModeBoolean || currentJavaScriptBoolean) {
+                        javaScriptPreference.setIcon(R.drawable.javascript_enabled);
+                    } else {
+                        javaScriptPreference.setIcon(R.drawable.privacy_mode);
+                    }
+
+                    // Update the `domStoragePreference` icon.
+                    if (currentNightModeBoolean || currentJavaScriptBoolean) {  // The preference is enabled.
+                        if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {  // DOM storage is enabled.
+                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                        } else {  // DOM storage is disabled.
+                            if (MainWebViewActivity.darkTheme) {
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
+                            } else {
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
+                            }
+                        }
+                    } else {  // The preference is disabled.  The icon should be ghosted.
+                        if (MainWebViewActivity.darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
+                        } else {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
+                        }
+                    }
+                    break;
 
-                    case "dark_theme":
+                case "display_webpage_images":
+                    if (sharedPreferences.getBoolean("display_webpage_images", true)) {
                         // Update the icon.
-                        if (sharedPreferences.getBoolean("dark_theme", false)) {
-                            darkThemePreference.setIcon(R.drawable.theme_dark);
+                        if (MainWebViewActivity.darkTheme) {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
                         } else {
-                            darkThemePreference.setIcon(R.drawable.theme_light);
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light);
                         }
-                        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;
+                        // `mainWebView` does not need to be reloaded because unloaded images will load automatically.
+                        MainWebViewActivity.reloadOnRestart = false;
+                    } else {
+                        // Update the icon.
+                        if (MainWebViewActivity.darkTheme) {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark);
                         } else {
-                            // Update the icon.
-                            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled);
-
-                            // Set `mainWebView` to reload on restart to remove the current images.
-                            MainWebViewActivity.reloadOnRestartBoolean = true;
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_light);
                         }
-                        break;
-                }
+
+                        // Set `mainWebView` to reload on restart to remove the current images.
+                        MainWebViewActivity.reloadOnRestart = true;
+                    }
+                    break;
             }
         };