public class SettingsFragment extends PreferenceFragmentCompat {
// Declare the class variables.
- private int currentThemeStatus;
private String defaultUserAgent;
private ArrayAdapter<CharSequence> userAgentNamesArray;
private String[] translatedUserAgentNamesArray;
private Preference formDataPreference; // The form data preference can be removed once the minimum API >= 26.
private Preference userAgentPreference;
private Preference customUserAgentPreference;
+ private Preference xRequestedWithHeaderPreference;
private Preference incognitoModePreference;
private Preference allowScreenshotsPreference;
private Preference easyListPreference;
private Preference ultraListPreference;
private Preference ultraPrivacyPreference;
private Preference blockAllThirdPartyRequestsPreference;
- private Preference googleAnalyticsPreference;
- private Preference facebookClickIdsPreference;
- private Preference twitterAmpRedirectsPreference;
+ private Preference trackingQueriesPreference;
+ private Preference ampRedirectsPreference;
private Preference searchPreference;
private Preference searchCustomURLPreference;
private Preference proxyPreference;
// Get a handle for the resources.
Resources resources = getResources();
- // Get the current theme status.
- currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
-
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
formDataPreference = findPreference("save_form_data"); // The form data preference can be removed once the minimum API >= 26.
userAgentPreference = findPreference("user_agent");
customUserAgentPreference = findPreference("custom_user_agent");
+ xRequestedWithHeaderPreference = findPreference(getString(R.string.x_requested_with_header_key));
incognitoModePreference = findPreference("incognito_mode");
allowScreenshotsPreference = findPreference(getString(R.string.allow_screenshots_key));
easyListPreference = findPreference("easylist");
ultraListPreference = findPreference("ultralist");
ultraPrivacyPreference = findPreference("ultraprivacy");
blockAllThirdPartyRequestsPreference = findPreference("block_all_third_party_requests");
- googleAnalyticsPreference = findPreference("google_analytics");
- facebookClickIdsPreference = findPreference("facebook_click_ids");
- twitterAmpRedirectsPreference = findPreference("twitter_amp_redirects");
+ trackingQueriesPreference = findPreference(getString(R.string.tracking_queries_key));
+ ampRedirectsPreference = findPreference(getString(R.string.amp_redirects_key));
searchPreference = findPreference("search");
searchCustomURLPreference = findPreference("search_custom_url");
proxyPreference = findPreference("proxy");
assert formDataPreference != null;
assert userAgentPreference != null;
assert customUserAgentPreference != null;
+ assert xRequestedWithHeaderPreference != null;
assert incognitoModePreference != null;
assert allowScreenshotsPreference != null;
assert easyListPreference != null;
assert ultraListPreference != null;
assert ultraPrivacyPreference != null;
assert blockAllThirdPartyRequestsPreference != null;
- assert googleAnalyticsPreference != null;
- assert facebookClickIdsPreference != null;
- assert twitterAmpRedirectsPreference != null;
+ assert trackingQueriesPreference != null;
+ assert ampRedirectsPreference != null;
assert searchPreference != null;
assert searchCustomURLPreference != null;
assert proxyPreference != null;
// Get the current app theme.
String currentAppTheme = sharedPreferences.getString("app_theme", getString(R.string.app_theme_default_value));
- // Define an app theme entry number.
+ // Declare an app theme entry number.
int appThemeEntryNumber;
// Get the app theme entry number that matches the current app theme. A switch statement cannot be used because the theme entry values string array is not a compile time constant.
// Set the current theme as the summary text for the preference.
appThemePreference.setSummary(appThemeEntriesStringArray[appThemeEntryNumber]);
+ // Disable the WebView theme preference if the API >= 33 and the app theme is set to light.
+ webViewThemePreference.setEnabled((Build.VERSION.SDK_INT < 33) || (appThemeEntryNumber != 1));
+
// Get the WebView theme string arrays.
webViewThemeEntriesStringArray = resources.getStringArray(R.array.webview_theme_entries);
// Set the save form data icon if API < 26. Save form data has no effect on API >= 26.
if (Build.VERSION.SDK_INT < 26) {
- if (sharedPreferences.getBoolean("save_form_data", false)) {
+ if (sharedPreferences.getBoolean("save_form_data", false))
formDataPreference.setIcon(R.drawable.form_data_enabled);
- } else {
+ else
formDataPreference.setIcon(R.drawable.form_data_disabled);
- }
}
// Set the custom user agent icon.
- if (customUserAgentPreference.isEnabled()) {
+ if (customUserAgentPreference.isEnabled())
customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled);
- } else {
+ else
customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted);
- }
+
+ // Set the X-Requested With header icon.
+ if (sharedPreferences.getBoolean(getString(R.string.x_requested_with_header_key), true))
+ xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_enabled);
+ else
+ xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_disabled);
// Set the incognito mode icon.
- if (sharedPreferences.getBoolean("incognito_mode", false)) {
+ if (sharedPreferences.getBoolean("incognito_mode", false))
incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled);
- } else {
+ else
incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled);
- }
// Set the allow screenshots icon.
- if (sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false)) {
+ if (sharedPreferences.getBoolean(getString(R.string.allow_screenshots_key), false))
allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled);
- } else {
+ else
allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled);
- }
// Set the EasyList icon.
- if (sharedPreferences.getBoolean("easylist", true)) {
+ if (sharedPreferences.getBoolean("easylist", true))
easyListPreference.setIcon(R.drawable.block_ads_enabled);
- } else {
+ else
easyListPreference.setIcon(R.drawable.block_ads_disabled);
- }
// Set the EasyPrivacy icon.
- if (sharedPreferences.getBoolean("easyprivacy", true)) {
+ if (sharedPreferences.getBoolean("easyprivacy", true))
easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled);
- } else {
+ else
easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled);
- }
// Set the Fanboy lists icons.
if (fanboyAnnoyanceListEnabled) {
blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_disabled);
}
- // Set the Google Analytics icon.
- if (sharedPreferences.getBoolean("google_analytics", true)) {
- googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled);
+ // Set the Tracking Queries icon.
+ if (sharedPreferences.getBoolean(getString(R.string.tracking_queries_key), true)) {
+ trackingQueriesPreference.setIcon(R.drawable.modify_url_enabled);
} else {
- googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled);
+ trackingQueriesPreference.setIcon(R.drawable.modify_url_disabled);
}
- // Set the Facebook Click IDs icon.
- if (sharedPreferences.getBoolean("facebook_click_ids", true)) {
- facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled);
+ // Set the AMP Redirects icon.
+ if (sharedPreferences.getBoolean(getString(R.string.amp_redirects_key), true)) {
+ ampRedirectsPreference.setIcon(R.drawable.modify_url_enabled);
} else {
- facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled);
- }
-
- // Set the Twitter AMP redirects icon.
- if (sharedPreferences.getBoolean("twitter_amp_redirects", true)) {
- twitterAmpRedirectsPreference.setIcon(R.drawable.modify_url_enabled);
- } else {
- twitterAmpRedirectsPreference.setIcon(R.drawable.modify_url_disabled);
+ ampRedirectsPreference.setIcon(R.drawable.modify_url_disabled);
}
// Set the search custom URL icon.
}
// Set the swipe to refresh preference icon.
- if (sharedPreferences.getBoolean("swipe_to_refresh", true)) {
+ if (sharedPreferences.getBoolean("swipe_to_refresh", true))
swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled);
- } else {
+ else
swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled);
- }
// Set the download with external app preference icon.
- if (sharedPreferences.getBoolean(getString(R.string.download_with_external_app_key), false)) {
+ if (sharedPreferences.getBoolean(getString(R.string.download_with_external_app_key), false))
downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_enabled);
- } else {
+ else
downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_disabled);
- }
// Set the scroll app bar preference icon.
- if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), true)) {
+ if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), true))
scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled);
- } else {
+ else
scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled);
- }
// Set the bottom app bar preference icon.
- if (sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false)) {
+ if (sharedPreferences.getBoolean(getString(R.string.bottom_app_bar_key), false))
bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled);
- } else {
+ else
bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled);
- }
// Set the display additional app bar icons preference icon.
- if (sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false)) {
+ if (sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false))
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled);
- } else {
+ else
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled);
- }
// Set the WebView theme preference icon.
- switch (webViewThemeEntryNumber) {
- case 0: // The system default WebView theme is selected.
- // Set the icon according to the app theme.
- if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
- webViewThemePreference.setIcon(R.drawable.webview_light_theme);
- } else {
- webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
- }
- break;
+ if (webViewThemePreference.isEnabled()) { // The WebView theme preference is enabled.
+ switch (webViewThemeEntryNumber) {
+ case 0: // The system default WebView theme is selected.
+ // Get the current theme status.
+ int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+
+ // Set the icon according to the app theme.
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO)
+ webViewThemePreference.setIcon(R.drawable.webview_light_theme);
+ else
+ webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
+ break;
- case 1: // The light WebView theme is selected.
- // Set the icon.
- webViewThemePreference.setIcon(R.drawable.webview_light_theme);
- break;
+ case 1: // The light WebView theme is selected.
+ // Set the icon.
+ webViewThemePreference.setIcon(R.drawable.webview_light_theme);
+ break;
- case 2: // The dark WebView theme is selected.
- // Set the icon.
- webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
- break;
+ case 2: // The dark WebView theme is selected.
+ // Set the icon.
+ webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
+ break;
+ }
+ } else { // The WebView theme preference is disabled.
+ webViewThemePreference.setIcon(R.drawable.webview_theme_ghosted);
}
// Set the wide viewport preference icon.
customUserAgentPreference.setSummary(sharedPreferences.getString("custom_user_agent", context.getString(R.string.custom_user_agent_default_value)));
break;
+ case "x_requested_with_header":
+ // Update the icon.
+ if (sharedPreferences.getBoolean(context.getString(R.string.x_requested_with_header_key), true))
+ xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_enabled);
+ else
+ xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_disabled);
+
+ // Restart Privacy Browser.
+ restartPrivacyBrowser();
+ break;
+
case "incognito_mode":
// Update the icon.
- if (sharedPreferences.getBoolean("incognito_mode", false)) {
+ if (sharedPreferences.getBoolean("incognito_mode", false))
incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled);
- } else {
+ else
incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled);
- }
break;
case "allow_screenshots":
// Update the icon.
- if (sharedPreferences.getBoolean(context.getString(R.string.allow_screenshots_key), false)) {
+ if (sharedPreferences.getBoolean(context.getString(R.string.allow_screenshots_key), false))
allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled);
- } else {
+ else
allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled);
- }
// Restart Privacy Browser.
restartPrivacyBrowser();
case "easylist":
// Update the icon.
- if (sharedPreferences.getBoolean("easylist", true)) {
+ if (sharedPreferences.getBoolean("easylist", true))
easyListPreference.setIcon(R.drawable.block_ads_enabled);
- } else {
+ else
easyListPreference.setIcon(R.drawable.block_ads_disabled);
- }
break;
case "easyprivacy":
// Update the icon.
- if (sharedPreferences.getBoolean("easyprivacy", true)) {
+ if (sharedPreferences.getBoolean("easyprivacy", true))
easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled);
- } else {
+ else
easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled);
- }
break;
case "fanboys_annoyance_list":
}
break;
- case "google_analytics":
- // Update the icon.
- if (sharedPreferences.getBoolean("google_analytics", true)) {
- googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled);
- } else {
- googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled);
- }
- break;
-
- case "facebook_click_ids":
+ case "tracking_queries":
// Update the icon.
- if (sharedPreferences.getBoolean("facebook_click_ids", true)) {
- facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled);
+ if (sharedPreferences.getBoolean(context.getString(R.string.tracking_queries_key), true)) {
+ trackingQueriesPreference.setIcon(R.drawable.modify_url_enabled);
} else {
- facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled);
+ trackingQueriesPreference.setIcon(R.drawable.modify_url_disabled);
}
break;
- case "twitter_amp_redirects":
+ case "amp_redirects":
// Update the icon.
- if (sharedPreferences.getBoolean("twitter_amp_redirects", true)) {
- twitterAmpRedirectsPreference.setIcon(R.drawable.modify_url_enabled);
+ if (sharedPreferences.getBoolean(context.getString(R.string.amp_redirects_key), true)) {
+ ampRedirectsPreference.setIcon(R.drawable.modify_url_enabled);
} else {
- twitterAmpRedirectsPreference.setIcon(R.drawable.modify_url_disabled);
+ ampRedirectsPreference.setIcon(R.drawable.modify_url_disabled);
}
break;
case "open_intents_in_new_tab":
// Update the icon.
- if (sharedPreferences.getBoolean("open_intents_in_new_tab", true)) {
+ if (sharedPreferences.getBoolean("open_intents_in_new_tab", true))
openIntentsInNewTabPreference.setIcon(R.drawable.tab_enabled);
- } else {
+ else
openIntentsInNewTabPreference.setIcon(R.drawable.tab_disabled);
- }
break;
case "swipe_to_refresh":
// Update the icon.
- if (sharedPreferences.getBoolean("swipe_to_refresh", true)) {
+ if (sharedPreferences.getBoolean("swipe_to_refresh", true))
swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled);
- } else {
+ else
swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled);
- }
break;
case "download_with_external_app":
// Update the icon.
- if (sharedPreferences.getBoolean(context.getString(R.string.download_with_external_app_key), false)) {
+ if (sharedPreferences.getBoolean(context.getString(R.string.download_with_external_app_key), false))
downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_enabled);
- } else {
+ else
downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_disabled);
- }
break;
case "scroll_app_bar":
// Update the icon.
- if (sharedPreferences.getBoolean(context.getString(R.string.scroll_app_bar_key), true)) scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled);
- else scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled);
+ if (sharedPreferences.getBoolean(context.getString(R.string.scroll_app_bar_key), true))
+ scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled);
+ else
+ scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled);
break;
case "bottom_app_bar":
// Update the icon.
- if (sharedPreferences.getBoolean(context.getString(R.string.bottom_app_bar_key), false)) bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled);
- else bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled);
+ if (sharedPreferences.getBoolean(context.getString(R.string.bottom_app_bar_key), false))
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_enabled);
+ else
+ bottomAppBarPreference.setIcon(R.drawable.bottom_app_bar_disabled);
// Restart Privacy Browser.
restartPrivacyBrowser();
case "display_additional_app_bar_icons":
// Update the icon.
- if (sharedPreferences.getBoolean(context.getString(R.string.display_additional_app_bar_icons_key), false)) {
+ if (sharedPreferences.getBoolean(context.getString(R.string.display_additional_app_bar_icons_key), false))
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled);
- } else {
+ else
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled);
- }
break;
case "app_theme":
// Get the new theme.
String newAppTheme = sharedPreferences.getString("app_theme", context.getString(R.string.app_theme_default_value));
- // Update the system according to the new theme. A switch statement cannot be used because the theme entry values string array is not a compile-time constant.
- if (newAppTheme.equals(appThemeEntryValuesStringArray[1])) { // The light theme is selected.
- // Update the theme preference summary text.
- appThemePreference.setSummary(appThemeEntriesStringArray[1]);
+ // Declare an app theme entry number.
+ int appThemeEntryNumber;
- // Apply the new theme.
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
+ // Get the app theme entry number that matches the current app theme. A switch statement cannot be used because the theme entry values string array is not a compile time constant.
+ if (newAppTheme.equals(appThemeEntryValuesStringArray[1])) { // The light theme is selected.
+ // Store the app theme entry number.
+ appThemeEntryNumber = 1;
} else if (newAppTheme.equals(appThemeEntryValuesStringArray[2])) { // The dark theme is selected.
- // Update the theme preference summary text.
- appThemePreference.setSummary(appThemeEntriesStringArray[2]);
+ // Store the app theme entry number.
+ appThemeEntryNumber = 2;
+ } else { // The system default theme is selected.
+ // Store the app theme entry number.
+ appThemeEntryNumber = 0;
+ }
+
+ // Update the system according to the new theme. A switch statement cannot be used because the theme entry values string array is not a compile-time constant.
+ switch (appThemeEntryNumber) {
+ case 0: // The system default theme is selected.
+ // Update the theme preference summary text.
+ appThemePreference.setSummary(appThemeEntriesStringArray[0]);
+
+ // Apply the new theme.
+ if (Build.VERSION.SDK_INT >= 28) { // The system default theme is supported.
+ // Follow the system default theme.
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
+ } else {// The system default theme is not supported.
+ // Follow the battery saver mode.
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
+ }
+ break;
+
+ case 1: // The light theme is selected.
+ // Update the theme preference summary text.
+ appThemePreference.setSummary(appThemeEntriesStringArray[1]);
+
+ // Apply the new theme.
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
+ break;
+
+ case 2:
+ // Update the theme preference summary text.
+ appThemePreference.setSummary(appThemeEntriesStringArray[2]);
+
+ // Apply the new theme.
+ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ break;
+ }
- // Apply the new theme.
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ // Disable the WebView theme preference if the API >= 33 and the app theme is set to light.
+ webViewThemePreference.setEnabled((Build.VERSION.SDK_INT < 33) || (appThemeEntryNumber != 1));
+
+ // Get the WebView theme.
+ String webViewTheme = sharedPreferences.getString("webview_theme", context.getString(R.string.webview_theme_default_value));
+
+ // Declare a WebView theme entry number.
+ int webViewThemeEntryNumber;
+
+ // Get the webView theme entry number that matches the new WebView theme. A switch statement cannot be used because the theme entry values string array is not a compile time constant.
+ if (webViewTheme.equals(webViewThemeEntriesStringArray[1])) { // The light theme is selected.
+ // Store the WebView theme entry number.
+ webViewThemeEntryNumber = 1;
+ } else if (webViewTheme.equals(webViewThemeEntryValuesStringArray[2])) { // The dark theme is selected.
+ // Store the WebView theme entry number.
+ webViewThemeEntryNumber = 2;
} else { // The system default theme is selected.
- // Update the theme preference summary text.
- appThemePreference.setSummary(appThemeEntriesStringArray[0]);
-
- // Apply the new theme.
- if (Build.VERSION.SDK_INT >= 28) { // The system default theme is supported.
- // Follow the system default theme.
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
- } else {// The system default theme is not supported.
- // Follow the battery saver mode.
- AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
- }
+ // Store the WebView theme entry number.
+ webViewThemeEntryNumber = 0;
}
- // Update the current theme status.
- currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ // Update the WebView theme preference icon.
+ if (webViewThemePreference.isEnabled()) { // The WebView theme preference is enabled.
+ switch (webViewThemeEntryNumber) {
+ case 0: // The system default WebView theme is selected.
+ // Get the current theme status.
+ int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+
+ // Set the icon according to the app theme.
+ if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO)
+ webViewThemePreference.setIcon(R.drawable.webview_light_theme);
+ else
+ webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
+ break;
+
+ case 1: // The light WebView theme is selected.
+ // Set the icon.
+ webViewThemePreference.setIcon(R.drawable.webview_light_theme);
+ break;
+
+ case 2: // The dark WebView theme is selected.
+ // Set the icon.
+ webViewThemePreference.setIcon(R.drawable.webview_dark_theme);
+ break;
+ }
+ } else { // The WebView theme preference is disabled.
+ webViewThemePreference.setIcon(R.drawable.webview_theme_ghosted);
+ }
break;
case "webview_theme":
// Get the new WebView theme.
String newWebViewTheme = sharedPreferences.getString("webview_theme", context.getString(R.string.webview_theme_default_value));
- // Define a new WebView theme entry number.
+ // Declare a new WebView theme entry number.
int newWebViewThemeEntryNumber;
// Get the webView theme entry number that matches the new WebView theme. A switch statement cannot be used because the theme entry values string array is not a compile time constant.
// Store the new WebView theme entry number.
newWebViewThemeEntryNumber = 1;
} else if (newWebViewTheme.equals(webViewThemeEntryValuesStringArray[2])) { // The dark theme is selected.
- // Store the WebView theme entry number.
+ // Store the new WebView theme entry number.
newWebViewThemeEntryNumber = 2;
} else { // The system default theme is selected.
- // Store the WebView theme entry number.
+ // Store the new WebView theme entry number.
newWebViewThemeEntryNumber = 0;
}
// Update the icon.
switch (newWebViewThemeEntryNumber) {
case 0: // The system default WebView theme is selected.
+ // Get the current theme status.
+ int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+
// Set the icon.
if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
webViewThemePreference.setIcon(R.drawable.webview_light_theme);