]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.kt
Expand the options for selecting a download provider. https://redmine.stoutner.com...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / SettingsFragment.kt
index 397dad08fc69a281065dfd8e00e42da1aa7a304e..10a4532d0880867c0283e48096a5839f9680de7a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2023 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2024 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
@@ -73,7 +73,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
     private lateinit var displayAdditionalAppBarIconsPreference: Preference
     private lateinit var displayWebpageImagesPreference: Preference
     private lateinit var domStoragePreference: Preference
-    private lateinit var downloadWithExternalAppPreference: Preference
+    private lateinit var downloadProviderEntryValuesStringArray: Array<String>
+    private lateinit var downloadProviderPreference: Preference
     private lateinit var easyListPreference: Preference
     private lateinit var easyPrivacyPreference: Preference
     private lateinit var fanboyAnnoyanceListPreference: Preference
@@ -82,6 +83,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
     private lateinit var formDataPreference: Preference  // The form data preference can be removed once the minimum API >= 26.
     private lateinit var fullScreenBrowsingModePreference: Preference
     private lateinit var hideAppBarPreference: Preference
+    private lateinit var displayUnderCutoutsPreference: Preference
     private lateinit var homepagePreference: Preference
     private lateinit var incognitoModePreference: Preference
     private lateinit var javaScriptPreference: Preference
@@ -145,6 +147,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
         proxyCustomUrlPreference = findPreference(getString(R.string.proxy_custom_url_key))!!
         fullScreenBrowsingModePreference = findPreference(getString(R.string.full_screen_browsing_mode_key))!!
         hideAppBarPreference = findPreference(getString(R.string.hide_app_bar_key))!!
+        displayUnderCutoutsPreference = findPreference(getString(R.string.display_under_cutouts_key))!!
         clearEverythingPreference = findPreference(getString(R.string.clear_everything_key))!!
         clearCookiesPreference = findPreference(getString(R.string.clear_cookies_key))!!
         clearDomStoragePreference = findPreference(getString(R.string.clear_dom_storage_key))!!
@@ -155,7 +158,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
         fontSizePreference = findPreference(getString(R.string.font_size_key))!!
         openIntentsInNewTabPreference = findPreference(getString(R.string.open_intents_in_new_tab_key))!!
         swipeToRefreshPreference = findPreference(getString(R.string.swipe_to_refresh_key))!!
-        downloadWithExternalAppPreference = findPreference(getString(R.string.download_with_external_app_key))!!
+        downloadProviderPreference = findPreference(getString(R.string.download_provider_key))!!
         scrollAppBarPreference = findPreference(getString(R.string.scroll_app_bar_key))!!
         bottomAppBarPreference = findPreference(getString(R.string.bottom_app_bar_key))!!
         displayAdditionalAppBarIconsPreference = findPreference(getString(R.string.display_additional_app_bar_icons_key))!!
@@ -167,6 +170,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
         // Set the preference dependencies.
         domStoragePreference.dependency = getString(R.string.javascript_key)
         hideAppBarPreference.dependency = getString(R.string.full_screen_browsing_mode_key)
+        displayUnderCutoutsPreference.dependency = getString(R.string.full_screen_browsing_mode_key)
 
         // Get strings from the preferences.
         val userAgentName = sharedPreferences.getString(getString(R.string.user_agent_key), getString(R.string.user_agent_default_value))
@@ -277,6 +281,16 @@ class SettingsFragment : PreferenceFragmentCompat() {
         // Set the font size as the summary text for the preference.
         fontSizePreference.summary = sharedPreferences.getString(getString(R.string.font_size_key), getString(R.string.font_size_default_value)) + "%"
 
+        // Get the download provider entry values string array
+        downloadProviderEntryValuesStringArray = resources.getStringArray(R.array.download_provider_entry_values)
+
+        // Set the summary text for the download provider preference.
+        downloadProviderPreference.summary = when (sharedPreferences.getString(getString(R.string.download_provider_key), getString(R.string.download_provider_default_value))) {
+            downloadProviderEntryValuesStringArray[0] -> getString(R.string.download_with_privacy_browser)  // Privacy Browser is selected.
+            downloadProviderEntryValuesStringArray[1] -> getString(R.string.download_with_android_download_manager)  // Android download manager is selected.
+            else -> getString(R.string.download_with_external_app)  // External app is selected.
+        }
+
         // Get the app theme string arrays.
         appThemeEntriesStringArray = resources.getStringArray(R.array.app_theme_entries)
         appThemeEntryValuesStringArray = resources.getStringArray(R.array.app_theme_entry_values)
@@ -456,6 +470,12 @@ class SettingsFragment : PreferenceFragmentCompat() {
             hideAppBarPreference.setIcon(R.drawable.app_bar_ghosted)
         }
 
+        // Set the display under cutouts icon.
+        if (sharedPreferences.getBoolean(getString(R.string.display_under_cutouts_key), false))
+            displayUnderCutoutsPreference.setIcon(R.drawable.display_under_cutouts_enabled)
+        else
+            displayUnderCutoutsPreference.setIcon(R.drawable.display_under_cutouts_disabled)
+
         // Set the clear everything icon.
         if (clearEverything) {
             clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled)
@@ -507,14 +527,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
         else
             swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled)
 
-        // Set the download with external app icon.
-        if (sharedPreferences.getBoolean(getString(R.string.download_with_external_app_key), false))
-            downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_enabled)
-        else
-            downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_disabled)
-
         // Set the scroll app bar icon.
-        if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), true))
+        if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), false))
             scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled)
         else
             scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled)
@@ -607,7 +621,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
             fragmentRestarted = false
 
             // Set the scroll position.
-            listView.smoothScrollBy(0, scrollY)
+            listView.post { listView.smoothScrollBy(0, scrollY) }
         }
     }
 
@@ -933,6 +947,17 @@ class SettingsFragment : PreferenceFragmentCompat() {
                         hideAppBarPreference.setIcon(R.drawable.app_bar_disabled)
                 }
 
+                getString(R.string.display_under_cutouts_key) -> {
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean(getString(R.string.display_under_cutouts_key), true))
+                        displayUnderCutoutsPreference.setIcon(R.drawable.display_under_cutouts_enabled)
+                    else
+                        displayUnderCutoutsPreference.setIcon(R.drawable.display_under_cutouts_disabled)
+
+                    // Restart Privacy Browser.
+                    restartPrivacyBrowser()
+                }
+
                 getString(R.string.clear_everything_key) -> {
                     // Store the new clear everything status
                     val newClearEverythingBoolean = sharedPreferences.getBoolean(getString(R.string.clear_everything_key), true)
@@ -1049,17 +1074,18 @@ class SettingsFragment : PreferenceFragmentCompat() {
                         swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled)
                 }
 
-                getString(R.string.download_with_external_app_key) -> {
-                    // Update the icon.
-                    if (sharedPreferences.getBoolean(getString(R.string.download_with_external_app_key), false))
-                        downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_enabled)
-                    else
-                        downloadWithExternalAppPreference.setIcon(R.drawable.download_with_external_app_disabled)
+                getString(R.string.download_provider_key) -> {
+                    // Set the summary text for the download provider preference.
+                    downloadProviderPreference.summary = when (sharedPreferences.getString(getString(R.string.download_provider_key), getString(R.string.download_provider_default_value))) {
+                        downloadProviderEntryValuesStringArray[0] -> getString(R.string.download_with_privacy_browser)  // Privacy Browser is selected.
+                        downloadProviderEntryValuesStringArray[1] -> getString(R.string.download_with_android_download_manager)  // Android download manager is selected.
+                        else -> getString(R.string.download_with_external_app)  // External app is selected.
+                    }
                 }
 
                 getString(R.string.scroll_app_bar_key) -> {
                     // Update the icon.
-                    if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), true))
+                    if (sharedPreferences.getBoolean(getString(R.string.scroll_app_bar_key), false))
                         scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled)
                     else
                         scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled)