X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Ffragments%2FSettingsFragment.java;h=643051abb970995d2dc5d3e4d5ab93e46ecf8afc;hp=1d4dd164e4c3fa62810434bc6b23c2eb587332f8;hb=ba4a1c032dbffde044b70c804f9d3c1f1ba7b939;hpb=d665a89a28f33c9feaaf217f7cabc0c809cb7107 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 1d4dd164..643051ab 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java @@ -24,6 +24,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -38,6 +39,7 @@ import androidx.preference.PreferenceFragmentCompat; import com.stoutner.privacybrowser.R; import com.stoutner.privacybrowser.activities.MainWebViewActivity; +import com.stoutner.privacybrowser.helpers.DownloadLocationHelper; import com.stoutner.privacybrowser.helpers.ProxyHelper; public class SettingsFragment extends PreferenceFragmentCompat { @@ -95,6 +97,8 @@ public class SettingsFragment extends PreferenceFragmentCompat { Preference clearFormDataPreference = findPreference("clear_form_data"); // The clear form data preference can be removed once the minimum API >= 26. Preference clearCachePreference = findPreference("clear_cache"); Preference homepagePreference = findPreference("homepage"); + Preference downloadLocationPreference = findPreference("download_location"); + Preference downloadCustomLocationPreference = findPreference("download_custom_location"); Preference fontSizePreference = findPreference("font_size"); Preference openIntentsInNewTabPreference = findPreference("open_intents_in_new_tab"); Preference swipeToRefreshPreference = findPreference("swipe_to_refresh"); @@ -138,6 +142,8 @@ public class SettingsFragment extends PreferenceFragmentCompat { assert clearFormDataPreference != null; assert clearCachePreference != null; assert homepagePreference != null; + assert downloadLocationPreference != null; + assert downloadCustomLocationPreference != null; assert fontSizePreference != null; assert openIntentsInNewTabPreference != null; assert swipeToRefreshPreference != null; @@ -152,8 +158,10 @@ public class SettingsFragment extends PreferenceFragmentCompat { hideAppBarPreference.setDependency("full_screen_browsing_mode"); // Get strings from the preferences. + String userAgentName = savedPreferences.getString("user_agent", getString(R.string.user_agent_default_value)); String searchString = savedPreferences.getString("search", getString(R.string.search_default_value)); String proxyString = savedPreferences.getString("proxy", getString(R.string.proxy_default_value)); + String downloadLocationString = savedPreferences.getString("download_location", getString(R.string.download_location_default_value)); // Get booleans that are used in multiple places from the preferences. boolean javaScriptEnabled = savedPreferences.getBoolean("javascript", false); @@ -190,10 +198,14 @@ public class SettingsFragment extends PreferenceFragmentCompat { // Only enable Fanboy's social blocking list preference if Fanboy's annoyance list is disabled. fanboySocialBlockingListPreference.setEnabled(!fanboyAnnoyanceListEnabled); + // Inflate 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 the `bare_webview` will not be displayed. @SuppressLint("InflateParams") View bareWebViewLayout = inflater.inflate(R.layout.bare_webview, null, false); + + // Get a handle for a bare WebView. WebView bareWebView = bareWebViewLayout.findViewById(R.id.bare_webview); // Get the user agent arrays. @@ -201,9 +213,6 @@ public class SettingsFragment extends PreferenceFragmentCompat { 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", getString(R.string.user_agent_default_value)); - // Get the array position of the user agent name. int userAgentArrayPosition = userAgentNamesArray.getPosition(userAgentName); @@ -229,10 +238,13 @@ public class SettingsFragment extends PreferenceFragmentCompat { userAgentPreference.setSummary(translatedUserAgentNamesArray[userAgentArrayPosition] + ":\n" + userAgentDataArray[userAgentArrayPosition]); } - // Set the summary text for the custom user agent preference and enable it if user agent preference is set to custom. + // Set the summary text for the custom user agent preference. customUserAgentPreference.setSummary(savedPreferences.getString("custom_user_agent", getString(R.string.custom_user_agent_default_value))); + + // Only enable the custom user agent preference if the user agent is set to `Custom`. customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals(getString(R.string.custom_user_agent))); + // Set the search URL as the summary text for the search preference when the preference screen is loaded. if (searchString.equals("Custom URL")) { // Use R.string.custom_url, which will be translated, instead of the array value, which will not. @@ -242,10 +254,13 @@ public class SettingsFragment extends PreferenceFragmentCompat { searchPreference.setSummary(searchString); } - // Set the summary text for `search_custom_url` (the default is `""`) and enable it if `search` is set to `Custom URL`. + // Set the summary text for the search custom URL (the default is `""`). searchCustomURLPreference.setSummary(savedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value))); + + // Only enable the search custom URL preference if the search is set to `Custom URL`. searchCustomURLPreference.setEnabled(searchString.equals("Custom URL")); + // Set the summary text for the proxy preference when the preference screen is loaded. switch (proxyString) { case ProxyHelper.NONE: @@ -269,11 +284,12 @@ public class SettingsFragment extends PreferenceFragmentCompat { break; } + // Set the summary text for the custom proxy URL. + proxyCustomUrlPreference.setSummary(savedPreferences.getString("proxy_custom_url", getString(R.string.proxy_custom_url_default_value))); + // Only enable the custom proxy URL if a custom proxy is selected. proxyCustomUrlPreference.setEnabled(proxyString.equals("Custom")); - // Set the summary text for the custom proxy URL. - proxyCustomUrlPreference.setSummary(savedPreferences.getString("proxy_custom_url", getString(R.string.proxy_custom_url_default_value))); // Set the status of the Clear and Exit preferences. clearCookiesPreference.setEnabled(!clearEverything); @@ -281,12 +297,31 @@ public class SettingsFragment extends PreferenceFragmentCompat { clearFormDataPreference.setEnabled(!clearEverything); // The form data line can be removed once the minimum API is >= 26. clearCachePreference.setEnabled(!clearEverything); + // Set the homepage URL as the summary text for the homepage preference. homepagePreference.setSummary(savedPreferences.getString("homepage", getString(R.string.homepage_default_value))); + + // Instantiate the download location helper. + DownloadLocationHelper downloadLocationHelper = new DownloadLocationHelper(); + + // Set the download location summary text. + downloadLocationPreference.setSummary(downloadLocationHelper.getDownloadLocation(context)); + + // Set the summary text for the download custom location (the default is `"`). + downloadCustomLocationPreference.setSummary(savedPreferences.getString("download_custom_location", getString(R.string.download_custom_location_default_value))); + + // Get the download location entry values string array. + String[] downloadLocationEntryValuesStringArray = context.getResources().getStringArray(R.array.download_location_entry_values); + + // Only enable the download custom location preference if the download location is set to `Custom`. + downloadCustomLocationPreference.setEnabled(downloadLocationString.equals(downloadLocationEntryValuesStringArray[3])); + + // Set the font size as the summary text for the preference. 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); @@ -725,6 +760,21 @@ public class SettingsFragment extends PreferenceFragmentCompat { clearCachePreference.setIcon(R.drawable.cache_warning); } + // Set the download custom location icon. + if (downloadCustomLocationPreference.isEnabled()) { + if (darkTheme) { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_enabled_dark); + } else { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_enabled_light); + } + } else { + if (darkTheme) { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_ghosted_dark); + } else { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_ghosted_light); + } + } + // Set the open intents in new tab preference icon. if (savedPreferences.getBoolean("open_intents_in_new_tab", true)) { if (darkTheme) { @@ -1303,7 +1353,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { // Store the new search string. String newSearchString = sharedPreferences.getString("search", getString(R.string.search_default_value)); - // Update `searchPreference` and `searchCustomURLPreference`. + // Update the search and search custom URL preferences. 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); @@ -1334,7 +1384,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { break; case "search_custom_url": - // Set the new custom search URL as the summary text for `search_custom_url`. The default is `""`. + // Set the new search custom URL as the summary text for the preference. searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value))); break; @@ -1595,6 +1645,37 @@ public class SettingsFragment extends PreferenceFragmentCompat { homepagePreference.setSummary(sharedPreferences.getString("homepage", getString(R.string.homepage_default_value))); break; + case "download_location": + // Get the new download location. + String newDownloadLocationString = sharedPreferences.getString("download_location", getString(R.string.download_location_default_value)); + + // Update the download location summary text. + downloadLocationPreference.setSummary(downloadLocationHelper.getDownloadLocation(context)); + + // Update the status of the download custom location preference. + downloadCustomLocationPreference.setEnabled(newDownloadLocationString.equals(downloadLocationEntryValuesStringArray[3])); + + // Update the download custom location icon. + if (downloadCustomLocationPreference.isEnabled()) { + if (darkTheme) { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_enabled_dark); + } else { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_enabled_light); + } + } else { + if (darkTheme) { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_ghosted_dark); + } else { + downloadCustomLocationPreference.setIcon(R.drawable.downloads_ghosted_light); + } + } + break; + + case "download_custom_location": + // Set the new download custom location as the summary text for the preference. + downloadCustomLocationPreference.setSummary(sharedPreferences.getString("download_custom_location", getString(R.string.download_custom_location_default_value))); + break; + case "font_size": // Update the font size summary text. fontSizePreference.setSummary(sharedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%");