X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Ffragments%2FSettingsFragment.java;h=2ffcd187da0e9bfc08eaae8bd6486eb0de41c795;hb=ca7516a7edb9e06d0f9fe9186513986cd82be716;hp=73ad08bad1eccb8df00d8b8058b625e1471c7fdd;hpb=c0f2dcca77fffd804c90cee5103795fc3849112b;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java b/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java index 73ad08ba..2ffcd187 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java @@ -20,37 +20,43 @@ package com.stoutner.privacybrowser.fragments; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.preference.Preference; -import android.preference.PreferenceCategory; -import android.preference.PreferenceFragment; import android.view.LayoutInflater; import android.view.View; import android.webkit.WebView; import android.widget.ArrayAdapter; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceFragmentCompat; + import com.stoutner.privacybrowser.R; import com.stoutner.privacybrowser.activities.MainWebViewActivity; -public class SettingsFragment extends PreferenceFragment { +public class SettingsFragment extends PreferenceFragmentCompat { + // Define the class variables. private SharedPreferences.OnSharedPreferenceChangeListener preferencesListener; private SharedPreferences savedPreferences; @Override - public void onCreate(Bundle savedInstanceState) { - // Run the default commands. - super.onCreate(savedInstanceState); - + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Load the preferences from the XML file. - addPreferencesFromResource(R.xml.preferences); + setPreferencesFromResource(R.xml.preferences, rootKey); + + // Get a handle for the activity. + Activity activity = getActivity(); + + // Remove the lint warning below that `getApplicationContext()` might produce a null pointer exception. + assert activity != null; // Get a handle for the context. - Context context = getActivity().getApplicationContext(); + Context context = activity.getApplicationContext(); // Initialize savedPreferences. savedPreferences = getPreferenceScreen().getSharedPreferences(); @@ -70,6 +76,7 @@ public class SettingsFragment extends PreferenceFragment { Preference easyPrivacyPreference = findPreference("easyprivacy"); Preference fanboyAnnoyanceListPreference = findPreference("fanboys_annoyance_list"); Preference fanboySocialBlockingListPreference = findPreference("fanboys_social_blocking_list"); + Preference ultraListPreference = findPreference("ultralist"); Preference ultraPrivacyPreference = findPreference("ultraprivacy"); Preference blockAllThirdPartyRequestsPreference = findPreference("block_all_third_party_requests"); Preference googleAnalyticsPreference = findPreference("google_analytics"); @@ -97,8 +104,55 @@ public class SettingsFragment extends PreferenceFragment { Preference downloadWithExternalAppPreference = findPreference("download_with_external_app"); Preference darkThemePreference = findPreference("dark_theme"); Preference nightModePreference = findPreference("night_mode"); + Preference wideViewportPreference = findPreference("wide_viewport"); Preference displayWebpageImagesPreference = findPreference("display_webpage_images"); + // Remove the lint warnings below that the preferences might be null. + assert javaScriptPreference != null; + assert firstPartyCookiesPreference != null; + assert thirdPartyCookiesPreference != null; + assert domStoragePreference != null; + assert formDataPreference != null; + assert userAgentPreference != null; + assert customUserAgentPreference != null; + assert incognitoModePreference != null; + assert doNotTrackPreference != null; + assert allowScreenshotsPreference != null; + assert easyListPreference != null; + assert easyPrivacyPreference != null; + assert fanboyAnnoyanceListPreference != null; + assert fanboySocialBlockingListPreference != null; + assert ultraListPreference != null; + assert ultraPrivacyPreference != null; + assert blockAllThirdPartyRequestsPreference != null; + assert googleAnalyticsPreference != null; + assert facebookClickIdsPreference != null; + assert twitterAmpRedirectsPreference != null; + assert proxyThroughOrbotPreference != null; + assert torHomepagePreference != null; + assert torSearchPreference != null; + assert torSearchCustomURLPreference != null; + assert searchPreference != null; + assert searchCustomURLPreference != null; + assert fullScreenBrowsingModePreference != null; + assert hideAppBarPreference != null; + assert clearEverythingPreference != null; + assert clearCookiesPreference != null; + assert clearDomStoragePreference != null; + assert clearFormDataPreference != null; + assert clearCachePreference != null; + assert homepagePreference != null; + assert fontSizePreference != null; + assert openIntentsInNewTabPreference != null; + assert swipeToRefreshPreference != null; + assert scrollAppBarPreference != null; + assert displayAdditionalAppBarIconsPreference != null; + assert downloadWithExternalAppPreference != null; + assert darkThemePreference != null; + assert nightModePreference != null; + assert wideViewportPreference != null; + assert displayWebpageImagesPreference != null; + // Set dependencies. torHomepagePreference.setDependency("proxy_through_orbot"); torSearchPreference.setDependency("proxy_through_orbot"); @@ -129,8 +183,12 @@ public class SettingsFragment extends PreferenceFragment { // Remove the form data preferences if the API is >= 26 as they no longer do anything. if (Build.VERSION.SDK_INT >= 26) { // Get the categories. - PreferenceCategory privacyCategory = (PreferenceCategory) findPreference("privacy"); - PreferenceCategory clearAndExitCategory = (PreferenceCategory) findPreference("clear_and_exit"); + PreferenceCategory privacyCategory = findPreference("privacy"); + PreferenceCategory clearAndExitCategory = findPreference("clear_and_exit"); + + // Remove the lint warnings below that the preference categories might be null. + assert privacyCategory != null; + assert clearAndExitCategory != null; // Remove the form data preferences. privacyCategory.removePreference(formDataPreference); @@ -227,7 +285,7 @@ public class SettingsFragment extends PreferenceFragment { homepagePreference.setSummary(savedPreferences.getString("homepage", getString(R.string.homepage_default_value))); // Set the font size as the summary text for the preference. - fontSizePreference.setSummary(savedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%%"); + fontSizePreference.setSummary(savedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%"); // Disable the JavaScript preference if Night Mode is enabled. JavaScript will be enabled for all web pages. javaScriptPreference.setEnabled(!nightMode); @@ -430,6 +488,21 @@ public class SettingsFragment extends PreferenceFragment { } } + // Set the UltraList icon. + if (savedPreferences.getBoolean("ultralist", true)){ + if (darkTheme) { + ultraListPreference.setIcon(R.drawable.block_ads_enabled_dark); + } else { + ultraListPreference.setIcon(R.drawable.block_ads_enabled_light); + } + } else { + if (darkTheme) { + ultraListPreference.setIcon(R.drawable.block_ads_disabled_dark); + } else { + ultraListPreference.setIcon(R.drawable.block_ads_disabled_light); + } + } + // Set the UltraPrivacy icon. if (savedPreferences.getBoolean("ultraprivacy", true)) { if (darkTheme) { @@ -749,6 +822,21 @@ public class SettingsFragment extends PreferenceFragment { } } + // Set the wide viewport preference icon. + if (savedPreferences.getBoolean("wide_viewport", true)) { + if (darkTheme) { + wideViewportPreference.setIcon(R.drawable.wide_viewport_enabled_dark); + } else { + wideViewportPreference.setIcon(R.drawable.wide_viewport_enabled_light); + } + } else { + if (darkTheme) { + wideViewportPreference.setIcon(R.drawable.wide_viewport_disabled_dark); + } else { + wideViewportPreference.setIcon(R.drawable.wide_viewport_disabled_light); + } + } + // Set the display webpage images preference icon. if (savedPreferences.getBoolean("display_webpage_images", true)) { if (darkTheme) { @@ -1022,8 +1110,8 @@ public class SettingsFragment extends PreferenceFragment { System.exit(0); }; - // Restart the activity after 100 milliseconds, so that the app has enough time to save the change to the preference. - allowScreenshotsRestartHandler.postDelayed(allowScreenshotsRestartRunnable, 100); + // Restart the activity after 150 milliseconds, so that the app has enough time to save the change to the preference. + allowScreenshotsRestartHandler.postDelayed(allowScreenshotsRestartRunnable, 150); break; case "easylist": @@ -1124,6 +1212,23 @@ public class SettingsFragment extends PreferenceFragment { } break; + case "ultralist": + // Update the icon. + if (sharedPreferences.getBoolean("ultralist", true)) { + if (darkTheme) { + ultraListPreference.setIcon(R.drawable.block_ads_enabled_dark); + } else { + ultraListPreference.setIcon(R.drawable.block_ads_enabled_light); + } + } else { + if (darkTheme) { + ultraListPreference.setIcon(R.drawable.block_ads_disabled_dark); + } else { + ultraListPreference.setIcon(R.drawable.block_ads_disabled_light); + } + } + break; + case "ultraprivacy": // Update the icon. if (sharedPreferences.getBoolean("ultraprivacy", true)) { @@ -1525,7 +1630,7 @@ public class SettingsFragment extends PreferenceFragment { case "font_size": // Update the font size summary text. - fontSizePreference.setSummary(sharedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%%"); + fontSizePreference.setSummary(sharedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%"); break; case "open_intents_in_new_tab": @@ -1642,8 +1747,8 @@ public class SettingsFragment extends PreferenceFragment { System.exit(0); }; - // Restart the activity after 100 milliseconds, so that the app has enough time to save the change to the preference. - changeThemeRestartHandler.postDelayed(changeThemeRestartRunnable, 100); + // Restart the activity after 150 milliseconds, so that the app has enough time to save the change to the preference. + changeThemeRestartHandler.postDelayed(changeThemeRestartRunnable, 150); break; case "night_mode": @@ -1697,16 +1802,32 @@ public class SettingsFragment extends PreferenceFragment { } break; + case "wide_viewport": + // Update the icon. + if (sharedPreferences.getBoolean("wide_viewport", true)) { + if (darkTheme) { + wideViewportPreference.setIcon(R.drawable.wide_viewport_enabled_dark); + } else { + wideViewportPreference.setIcon(R.drawable.wide_viewport_enabled_light); + } + } else { + if (darkTheme) { + wideViewportPreference.setIcon(R.drawable.wide_viewport_disabled_dark); + } else { + wideViewportPreference.setIcon(R.drawable.wide_viewport_disabled_light); + } + } + break; + case "display_webpage_images": + // Update the icon. if (sharedPreferences.getBoolean("display_webpage_images", true)) { - // Update the icon. if (darkTheme) { displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark); } else { displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light); } } else { - // Update the icon. if (darkTheme) { displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark); } else { @@ -1733,4 +1854,4 @@ public class SettingsFragment extends PreferenceFragment { super.onResume(); savedPreferences.registerOnSharedPreferenceChangeListener(preferencesListener); } -} +} \ No newline at end of file