X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Ffragments%2FDomainSettingsFragment.kt;h=00c3447e7681d996c1046caad5731e9f7e953c14;hb=e065315a36c804626a7dba38d3edad05e9fdb473;hp=2687adc7870878c98243f2fae72555364c2c8eef;hpb=fb1d23a702622f51fde491f8b868062603f4ccad;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.kt b/app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.kt index 2687adc7..00c3447e 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.kt @@ -1,5 +1,5 @@ /* - * Copyright 2017-2023 Soren Stoutner . + * Copyright 2017-2024 Soren Stoutner . * * This file is part of Privacy Browser Android . * @@ -22,7 +22,6 @@ package com.stoutner.privacybrowser.fragments import android.annotation.SuppressLint import android.content.Context import android.content.res.Configuration -import android.os.Build import android.os.Bundle import android.text.Editable import android.text.SpannableStringBuilder @@ -73,7 +72,6 @@ import com.stoutner.privacybrowser.helpers.ENABLE_EASYLIST import com.stoutner.privacybrowser.helpers.ENABLE_EASYPRIVACY import com.stoutner.privacybrowser.helpers.ENABLE_FANBOYS_ANNOYANCE_LIST import com.stoutner.privacybrowser.helpers.ENABLE_FANBOYS_SOCIAL_BLOCKING_LIST -import com.stoutner.privacybrowser.helpers.ENABLE_FORM_DATA import com.stoutner.privacybrowser.helpers.ENABLE_JAVASCRIPT import com.stoutner.privacybrowser.helpers.ENABLE_ULTRAPRIVACY import com.stoutner.privacybrowser.helpers.FONT_SIZE @@ -142,16 +140,15 @@ class DomainSettingsFragment : Fragment() { val javaScriptDefault = sharedPreferences.getBoolean(getString(R.string.javascript_key), false) val cookiesDefault = sharedPreferences.getBoolean(getString(R.string.cookies_key), false) val domStorageDefault = sharedPreferences.getBoolean(getString(R.string.dom_storage_key), false) - val formDataDefault = sharedPreferences.getBoolean(getString(R.string.save_form_data_key), false) // The form data views can be remove once the minimum API >= 26. + val userAgentDefault = sharedPreferences.getString(getString(R.string.user_agent_key), getString(R.string.user_agent_default_value)) + val customUserAgentStringDefault = sharedPreferences.getString(getString(R.string.custom_user_agent_key), getString(R.string.custom_user_agent_default_value)) val easyListDefault = sharedPreferences.getBoolean(getString(R.string.easylist_key), true) val easyPrivacyDefault = sharedPreferences.getBoolean(getString(R.string.easyprivacy_key), true) val fanboysAnnoyanceListDefault = sharedPreferences.getBoolean(getString(R.string.fanboys_annoyance_list_key), true) - val fanboysSocialBlockingListDefault = sharedPreferences.getBoolean(getString(R.string.fanboys_social_blocking_list), true) + val fanboysSocialBlockingListDefault = sharedPreferences.getBoolean(getString(R.string.fanboys_social_blocking_list_key), true) val ultraListDefault = sharedPreferences.getBoolean(getString(R.string.ultralist_key), true) val ultraPrivacyDefault = sharedPreferences.getBoolean(getString(R.string.ultraprivacy_key), true) val blockAllThirdPartyRequestsDefault = sharedPreferences.getBoolean(getString(R.string.block_all_third_party_requests_key), false) - val userAgentDefault = sharedPreferences.getString(getString(R.string.user_agent_key), getString(R.string.user_agent_default_value)) - val customUserAgentStringDefault = sharedPreferences.getString(getString(R.string.custom_user_agent_key), getString(R.string.custom_user_agent_default_value)) val fontSizeStringDefault = sharedPreferences.getString(getString(R.string.font_size_key), getString(R.string.font_size_default_value)) val swipeToRefreshDefault = sharedPreferences.getBoolean(getString(R.string.swipe_to_refresh_key), true) val webViewThemeDefault = sharedPreferences.getString(getString(R.string.webview_theme_key), getString(R.string.webview_theme_default_value)) @@ -173,10 +170,10 @@ class DomainSettingsFragment : Fragment() { val domStorageImageView = domainSettingsView.findViewById(R.id.dom_storage_imageview) val domStorageSpinner = domainSettingsView.findViewById(R.id.dom_storage_spinner) val domStorageTextView = domainSettingsView.findViewById(R.id.dom_storage_textview) - val formDataLinearLayout = domainSettingsView.findViewById(R.id.form_data_linearlayout) // The form data views can be remove once the minimum API >= 26. - val formDataImageView = domainSettingsView.findViewById(R.id.form_data_imageview) // The form data views can be remove once the minimum API >= 26. - val formDataSpinner = domainSettingsView.findViewById(R.id.form_data_spinner) // The form data views can be remove once the minimum API >= 26. - val formDataTextView = domainSettingsView.findViewById(R.id.form_data_textview) // The form data views can be remove once the minimum API >= 26. + val userAgentLinearLayout = domainSettingsView.findViewById(R.id.user_agent_linearlayout) + val userAgentSpinner = domainSettingsView.findViewById(R.id.user_agent_spinner) + val userAgentTextView = domainSettingsView.findViewById(R.id.user_agent_textview) + val customUserAgentEditText = domainSettingsView.findViewById(R.id.custom_user_agent_edittext) val easyListLinearLayout = domainSettingsView.findViewById(R.id.easylist_linearlayout) val easyListImageView = domainSettingsView.findViewById(R.id.easylist_imageview) val easyListSpinner = domainSettingsView.findViewById(R.id.easylist_spinner) @@ -205,10 +202,6 @@ class DomainSettingsFragment : Fragment() { val blockAllThirdPartyRequestsImageView = domainSettingsView.findViewById(R.id.block_all_third_party_requests_imageview) val blockAllThirdPartyRequestsSpinner = domainSettingsView.findViewById(R.id.block_all_third_party_requests_spinner) val blockAllThirdPartyRequestsTextView = domainSettingsView.findViewById(R.id.block_all_third_party_requests_textview) - val userAgentLinearLayout = domainSettingsView.findViewById(R.id.user_agent_linearlayout) - val userAgentSpinner = domainSettingsView.findViewById(R.id.user_agent_spinner) - val userAgentTextView = domainSettingsView.findViewById(R.id.user_agent_textview) - val customUserAgentEditText = domainSettingsView.findViewById(R.id.custom_user_agent_edittext) val fontSizeLinearLayout = domainSettingsView.findViewById(R.id.font_size_linearlayout) val fontSizeSpinner = domainSettingsView.findViewById(R.id.font_size_spinner) val defaultFontSizeTextView = domainSettingsView.findViewById(R.id.default_font_size_textview) @@ -265,10 +258,6 @@ class DomainSettingsFragment : Fragment() { val currentIpAddressesRadioButton = domainSettingsView.findViewById(R.id.current_ip_addresses_radiobutton) val currentIpAddressesTextView = domainSettingsView.findViewById(R.id.current_ip_addresses_textview) - // Hide the form data linear layout if the API >= 26. - if (Build.VERSION.SDK_INT >= 26) - formDataLinearLayout.visibility = View.GONE - // Initialize the database handler. val domainsDatabaseHelper = DomainsDatabaseHelper(requireContext()) @@ -283,7 +272,7 @@ class DomainSettingsFragment : Fragment() { val javaScriptInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_JAVASCRIPT)) val cookiesInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(COOKIES)) val domStorageInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_DOM_STORAGE)) - val formDataInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_FORM_DATA)) // Form data can be remove once the minimum API >= 26. + val currentUserAgentName = domainCursor.getString(domainCursor.getColumnIndexOrThrow(USER_AGENT)) val easyListInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_EASYLIST)) val easyPrivacyInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_EASYPRIVACY)) val fanboysAnnoyanceListInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_FANBOYS_ANNOYANCE_LIST)) @@ -291,7 +280,6 @@ class DomainSettingsFragment : Fragment() { val ultraListInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ULTRALIST)) val ultraPrivacyInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(ENABLE_ULTRAPRIVACY)) val blockAllThirdPartyRequestsInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(BLOCK_ALL_THIRD_PARTY_REQUESTS)) - val currentUserAgentName = domainCursor.getString(domainCursor.getColumnIndexOrThrow(USER_AGENT)) val fontSizeInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(FONT_SIZE)) val swipeToRefreshInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(SWIPE_TO_REFRESH)) val webViewThemeInt = domainCursor.getInt(domainCursor.getColumnIndexOrThrow(WEBVIEW_THEME)) @@ -316,7 +304,7 @@ class DomainSettingsFragment : Fragment() { val javaScriptArrayAdapter = ArrayAdapter.createFromResource(context, R.array.javascript_array, R.layout.spinner_item) val cookiesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.cookies_array, R.layout.spinner_item) val domStorageArrayAdapter = ArrayAdapter.createFromResource(context, R.array.dom_storage_array, R.layout.spinner_item) - val formDataArrayAdapter = ArrayAdapter.createFromResource(context, R.array.form_data_array, R.layout.spinner_item) // Form data can be remove once the minimum API >= 26. + val translatedUserAgentArrayAdapter = ArrayAdapter.createFromResource(context, R.array.translated_domain_settings_user_agent_names, R.layout.spinner_item) val easyListArrayAdapter = ArrayAdapter.createFromResource(context, R.array.easylist_array, R.layout.spinner_item) val easyPrivacyArrayAdapter = ArrayAdapter.createFromResource(context, R.array.easyprivacy_array, R.layout.spinner_item) val fanboysAnnoyanceListArrayAdapter = ArrayAdapter.createFromResource(context, R.array.fanboys_annoyance_list_array, R.layout.spinner_item) @@ -324,7 +312,6 @@ class DomainSettingsFragment : Fragment() { val ultraListArrayAdapter = ArrayAdapter.createFromResource(context, R.array.ultralist_array, R.layout.spinner_item) val ultraPrivacyArrayAdapter = ArrayAdapter.createFromResource(context, R.array.ultraprivacy_array, R.layout.spinner_item) val blockAllThirdPartyRequestsArrayAdapter = ArrayAdapter.createFromResource(context, R.array.block_all_third_party_requests_array, R.layout.spinner_item) - val translatedUserAgentArrayAdapter = ArrayAdapter.createFromResource(context, R.array.translated_domain_settings_user_agent_names, R.layout.spinner_item) val fontSizeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.font_size_array, R.layout.spinner_item) val swipeToRefreshArrayAdapter = ArrayAdapter.createFromResource(context, R.array.swipe_to_refresh_array, R.layout.spinner_item) val webViewThemeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.webview_theme_array, R.layout.spinner_item) @@ -335,7 +322,7 @@ class DomainSettingsFragment : Fragment() { javaScriptArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) cookiesArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) domStorageArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) - formDataArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) // Form data can be remove once the minimum API >= 26. + translatedUserAgentArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) easyListArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) easyPrivacyArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) fanboysAnnoyanceListArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) @@ -343,7 +330,6 @@ class DomainSettingsFragment : Fragment() { ultraListArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) ultraPrivacyArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) blockAllThirdPartyRequestsArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) - translatedUserAgentArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) fontSizeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) swipeToRefreshArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) webViewThemeArrayAdapter.setDropDownViewResource(R.layout.domain_settings_spinner_dropdown_items) @@ -354,7 +340,7 @@ class DomainSettingsFragment : Fragment() { javaScriptSpinner.adapter = javaScriptArrayAdapter cookiesSpinner.adapter = cookiesArrayAdapter domStorageSpinner.adapter = domStorageArrayAdapter - formDataSpinner.adapter = formDataArrayAdapter // Form data can be remove once the minimum API >= 26. + userAgentSpinner.adapter = translatedUserAgentArrayAdapter easyListSpinner.adapter = easyListArrayAdapter easyPrivacySpinner.adapter = easyPrivacyArrayAdapter fanboysAnnoyanceListSpinner.adapter = fanboysAnnoyanceListArrayAdapter @@ -362,7 +348,6 @@ class DomainSettingsFragment : Fragment() { ultraListSpinner.adapter = ultraListArrayAdapter ultraPrivacySpinner.adapter = ultraPrivacyArrayAdapter blockAllThirdPartyRequestsSpinner.adapter = blockAllThirdPartyRequestsArrayAdapter - userAgentSpinner.adapter = translatedUserAgentArrayAdapter fontSizeSpinner.adapter = fontSizeArrayAdapter swipeToRefreshSpinner.adapter = swipeToRefreshArrayAdapter webViewThemeSpinner.adapter = webViewThemeArrayAdapter @@ -373,7 +358,7 @@ class DomainSettingsFragment : Fragment() { javaScriptTextView.setOnClickListener { javaScriptSpinner.performClick() } cookiesTextView.setOnClickListener { cookiesSpinner.performClick() } domStorageTextView.setOnClickListener { domStorageSpinner.performClick() } - formDataTextView.setOnClickListener { formDataSpinner.performClick() } + userAgentTextView.setOnClickListener { userAgentSpinner.performClick() } easyListTextView.setOnClickListener { easyListSpinner.performClick() } easyPrivacyTextView.setOnClickListener { easyPrivacySpinner.performClick() } fanboysAnnoyanceListTextView.setOnClickListener { fanboysAnnoyanceListSpinner.performClick() } @@ -381,7 +366,6 @@ class DomainSettingsFragment : Fragment() { ultraListTextView.setOnClickListener { ultraListSpinner.performClick() } ultraPrivacyTextView.setOnClickListener { ultraPrivacySpinner.performClick() } blockAllThirdPartyRequestsTextView.setOnClickListener { blockAllThirdPartyRequestsSpinner.performClick() } - userAgentTextView.setOnClickListener { userAgentSpinner.performClick() } defaultFontSizeTextView.setOnClickListener { fontSizeSpinner.performClick() } swipeToRefreshTextView.setOnClickListener { swipeToRefreshSpinner.performClick() } webViewThemeTextView.setOnClickListener { webViewThemeSpinner.performClick() } @@ -392,7 +376,6 @@ class DomainSettingsFragment : Fragment() { javaScriptSpinner.setSelection(javaScriptInt) cookiesSpinner.setSelection(cookiesInt) domStorageSpinner.setSelection(domStorageInt) - formDataSpinner.setSelection(formDataInt) easyListSpinner.setSelection(easyListInt) easyPrivacySpinner.setSelection(easyPrivacyInt) fanboysAnnoyanceListSpinner.setSelection(fanboysAnnoyanceListInt) @@ -409,7 +392,6 @@ class DomainSettingsFragment : Fragment() { populateTextView(javaScriptDefault, javaScriptArrayAdapter, javaScriptTextView) populateTextView(cookiesDefault, cookiesArrayAdapter, cookiesTextView) populateTextView(domStorageDefault, domStorageArrayAdapter, domStorageTextView) - populateTextView(formDataDefault, formDataArrayAdapter, formDataTextView) populateTextView(easyListDefault, easyListArrayAdapter, easyListTextView) populateTextView(easyPrivacyDefault, easyPrivacyArrayAdapter, easyPrivacyTextView) populateTextView(fanboysAnnoyanceListDefault, fanboysAnnoyanceListArrayAdapter, fanboysAnnoyanceListTextView) @@ -424,7 +406,6 @@ class DomainSettingsFragment : Fragment() { // Set the icon and text view settings. Non-standard items are handled individually below. setIconAndTextViewSettings(cookiesInt, cookiesDefault, cookiesLinearLayout, cookiesImageView, cookiesTextView) setIconAndTextViewSettings(domStorageInt, domStorageDefault, domStorageLinearLayout, domStorageImageView, domStorageTextView) - setIconAndTextViewSettings(formDataInt, formDataDefault, formDataLinearLayout, formDataImageView, formDataTextView) setIconAndTextViewSettings(easyListInt, easyListDefault, easyListLinearLayout, easyListImageView, easyListTextView) setIconAndTextViewSettings(easyPrivacyInt, easyPrivacyDefault, easyPrivacyLinearLayout, easyPrivacyImageView, easyListTextView) setIconAndTextViewSettings(fanboysAnnoyanceListInt, fanboysAnnoyanceListDefault, fanboysAnnoyanceListLinearLayout, fanboysAnnoyanceListImageView, fanboysAnnoyanceListTextView) @@ -555,17 +536,6 @@ class DomainSettingsFragment : Fragment() { domStorageImageView.isEnabled = javaScriptEnabled - // Calculate if Fanboy's Annoyance List is enabled, either because it is the system default and that default is enabled, or because it is explicitly set to be enabled for this domain. - val fanboysAnnoyanceListEnabled = (((fanboysAnnoyanceListInt == 0) && fanboysAnnoyanceListDefault) || (fanboysAnnoyanceListInt == 1)) - - // Set Fanboy's Social Blocking List spinner and text view status based on the Annoyance List status. - fanboysSocialBlockingListSpinner.isEnabled = !fanboysAnnoyanceListEnabled - fanboysSocialBlockingListTextView.isEnabled = !fanboysAnnoyanceListEnabled - - // Set the Social Blocking List icon ghosted status based on the Annoyance List status. - fanboysSocialBlockingListImageView.isEnabled = !fanboysAnnoyanceListEnabled - - // Inflated a WebView to get the default user agent. // `@SuppressLint("InflateParams")` removes the warning about using `null` as the `ViewGroup`, which in this case makes sense because the bare WebView should not be displayed on the screen. @SuppressLint("InflateParams") val bareWebViewLayout = inflater.inflate(R.layout.bare_webview, null, false) @@ -643,6 +613,17 @@ class DomainSettingsFragment : Fragment() { } + // Calculate if Fanboy's Annoyance List is enabled, either because it is the system default and that default is enabled, or because it is explicitly set to be enabled for this domain. + val fanboysAnnoyanceListEnabled = (((fanboysAnnoyanceListInt == 0) && fanboysAnnoyanceListDefault) || (fanboysAnnoyanceListInt == 1)) + + // Set Fanboy's Social Blocking List spinner and text view status based on the Annoyance List status. + fanboysSocialBlockingListSpinner.isEnabled = !fanboysAnnoyanceListEnabled + fanboysSocialBlockingListTextView.isEnabled = !fanboysAnnoyanceListEnabled + + // Set the Social Blocking List icon ghosted status based on the Annoyance List status. + fanboysSocialBlockingListImageView.isEnabled = !fanboysAnnoyanceListEnabled + + // Display the font size settings. if (fontSizeInt == SYSTEM_DEFAULT) { // `0` is the code for system default font size. // Set the font size to the system default. @@ -1059,18 +1040,84 @@ class DomainSettingsFragment : Fragment() { } } - // Set the form data spinner listener. It can be removed once the minimum API >= 26. - if (Build.VERSION.SDK_INT < 26) { - formDataSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { - // Update the icon and the text view settings. - setIconAndTextViewSettings(position, formDataDefault, formDataLinearLayout, formDataImageView, formDataTextView) - } + // Set the user agent spinner listener. + userAgentSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { + // Set the new user agent. + when (position) { + DOMAINS_SYSTEM_DEFAULT_USER_AGENT -> { + // Show the user agent text view. + userAgentTextView.visibility = View.VISIBLE + + // Hide the custom user agent edit text. + customUserAgentEditText.visibility = View.GONE + + // Set the user text. + when (defaultUserAgentArrayPosition) { + // This is probably because it was set in an older version of Privacy Browser before the switch to persistent user agent names. + UNRECOGNIZED_USER_AGENT -> userAgentTextView.text = userAgentDefault + + // Display the `WebView` default user agent. + SETTINGS_WEBVIEW_DEFAULT_USER_AGENT -> userAgentTextView.text = webViewDefaultUserAgentString + + // Display the custom user agent. + SETTINGS_CUSTOM_USER_AGENT -> userAgentTextView.text = customUserAgentStringDefault + + // Get the user agent string from the user agent data array. + else -> userAgentTextView.text = userAgentDataArray[defaultUserAgentArrayPosition] + } + + // Set the background color to be transparent. + userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.transparent)) + } - override fun onNothingSelected(parent: AdapterView<*>?) { - // Do nothing. + DOMAINS_WEBVIEW_DEFAULT_USER_AGENT -> { + // Show the user agent text view. + userAgentTextView.visibility = View.VISIBLE + + // Set the user agent text. + userAgentTextView.text = webViewDefaultUserAgentString + + // Hide the custom user agent edit text. + customUserAgentEditText.visibility = View.GONE + + // Set the background color to be blue. + userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) + } + + DOMAINS_CUSTOM_USER_AGENT -> { + // Hide the user agent text view. + userAgentTextView.visibility = View.GONE + + // Show the custom user agent edit text. + customUserAgentEditText.visibility = View.VISIBLE + + // Set the current user agent name as the text. + customUserAgentEditText.setText(currentUserAgentName) + + // Set the background color to be blue. + userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) + } + + else -> { + // Show the user agent text view. + userAgentTextView.visibility = View.VISIBLE + + // Set the text from the user agent data array, which has one less entry than the spinner, so the position must be decremented. + userAgentTextView.text = userAgentDataArray[position - 1] + + // Hide the custom user agent edit text. + customUserAgentEditText.visibility = View.GONE + + // Set the background color to be blue. + userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) + } } } + + override fun onNothingSelected(parent: AdapterView<*>?) { + // Do nothing. + } } // Set the EasyList spinner listener. @@ -1167,86 +1214,6 @@ class DomainSettingsFragment : Fragment() { } } - // Set the user agent spinner listener. - userAgentSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { - // Set the new user agent. - when (position) { - DOMAINS_SYSTEM_DEFAULT_USER_AGENT -> { - // Show the user agent text view. - userAgentTextView.visibility = View.VISIBLE - - // Hide the custom user agent edit text. - customUserAgentEditText.visibility = View.GONE - - // Set the user text. - when (defaultUserAgentArrayPosition) { - // This is probably because it was set in an older version of Privacy Browser before the switch to persistent user agent names. - UNRECOGNIZED_USER_AGENT -> userAgentTextView.text = userAgentDefault - - // Display the `WebView` default user agent. - SETTINGS_WEBVIEW_DEFAULT_USER_AGENT -> userAgentTextView.text = webViewDefaultUserAgentString - - // Display the custom user agent. - SETTINGS_CUSTOM_USER_AGENT -> userAgentTextView.text = customUserAgentStringDefault - - // Get the user agent string from the user agent data array. - else -> userAgentTextView.text = userAgentDataArray[defaultUserAgentArrayPosition] - } - - // Set the background color to be transparent. - userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.transparent)) - } - - DOMAINS_WEBVIEW_DEFAULT_USER_AGENT -> { - // Show the user agent text view. - userAgentTextView.visibility = View.VISIBLE - - // Set the user agent text. - userAgentTextView.text = webViewDefaultUserAgentString - - // Hide the custom user agent edit text. - customUserAgentEditText.visibility = View.GONE - - // Set the background color to be blue. - userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) - } - - DOMAINS_CUSTOM_USER_AGENT -> { - // Hide the user agent text view. - userAgentTextView.visibility = View.GONE - - // Show the custom user agent edit text. - customUserAgentEditText.visibility = View.VISIBLE - - // Set the current user agent name as the text. - customUserAgentEditText.setText(currentUserAgentName) - - // Set the background color to be blue. - userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) - } - - else -> { - // Show the user agent text view. - userAgentTextView.visibility = View.VISIBLE - - // Set the text from the user agent data array, which has one less entry than the spinner, so the position must be decremented. - userAgentTextView.text = userAgentDataArray[position - 1] - - // Hide the custom user agent edit text. - customUserAgentEditText.visibility = View.GONE - - // Set the background color to be blue. - userAgentLinearLayout.setBackgroundColor(getColor(context, R.color.blue_background)) - } - } - } - - override fun onNothingSelected(parent: AdapterView<*>?) { - // Do nothing. - } - } - // Set the font size spinner listener. fontSizeSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {