Allow customization of the search URLs.
[PrivacyBrowser.git] / app / src / main / java / com / stoutner / privacybrowser / SettingsFragment.java
index 35021b3e8d09dcb333bf70d2954fc98123cf4a95..f52397b19abfb69df19d64d22f9b139fa9f3c135 100644 (file)
@@ -19,6 +19,7 @@
 
 package com.stoutner.privacybrowser;
 
+import android.annotation.SuppressLint;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
@@ -35,17 +36,40 @@ public class SettingsFragment extends PreferenceFragment {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferences);
 
-        final Preference homepagePreference = findPreference("homepage");
-
         // Initialize savedPreferences.
         savedPreferences = getPreferenceScreen().getSharedPreferences();
 
+
+        // Set the JavaScript-disabled search URL as the summary text for the JavaScript-disabled search preference when the preference screen is loaded.
+        // The default is "https://duckduckgo.com/html/?q=".
+        final Preference javaScriptDisabledSearchPreference = findPreference("javascript_disabled_search");
+        javaScriptDisabledSearchPreference.setSummary(savedPreferences.getString("javascript_disabled_search", "https://duckduckgo.com/html/?q="));
+
+        // Set the summary text for "javascript_disabled_search_custom_url" (the default is "") and enable it if "javascript_disabled_search" is set to "Custom URL".
+        final Preference javaScriptDisabledSearchCustomURLPreference = findPreference("javascript_disabled_search_custom_url");
+        javaScriptDisabledSearchCustomURLPreference.setSummary(savedPreferences.getString("javascript_disabled_search_custom_url", ""));
+        javaScriptDisabledSearchCustomURLPreference.setEnabled(javaScriptDisabledSearchPreference.getSummary().equals("Custom URL"));
+
+        // Set the JavaScript-enabed searchURL as the summary text for the JavaScript-enabled search preference when the preference screen is loaded.
+        // The default is "https://duckduckgo.com/?q=".
+        final Preference javaScriptEnabledSearchPreference = findPreference("javascript_enabled_search");
+        javaScriptEnabledSearchPreference.setSummary(savedPreferences.getString("javascript_enabled_search", "https://duckduckgo.com/?q="));
+
+        // Set the summary text for "javascript_enabled_search_custom_url" (the default is "") and enable it if "javascript_enabled_search" is set to "Custom URL".
+        final Preference javaScriptEnabledSearchCustomURLPreference = findPreference("javascript_enabled_search_custom_url");
+        javaScriptEnabledSearchCustomURLPreference.setSummary(savedPreferences.getString("javascript_enabled_search_custom_url", ""));
+        javaScriptEnabledSearchCustomURLPreference.setEnabled(javaScriptEnabledSearchPreference.getSummary().equals("Custom URL"));
+
         // Set the homepage URL as the summary text for the Homepage preference when the preference screen is loaded.  The default is "https://www.duckduckgo.com".
+        final Preference homepagePreference = findPreference("homepage");
         homepagePreference.setSummary(savedPreferences.getString("homepage", "https://www.duckduckgo.com"));
 
+
         // Listen for preference changes.
         preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
             @Override
+            // Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled.
+            @SuppressLint("SetJavaScriptEnabled")
             public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
 
                 // Several keys need to update the toggleJavaScript icon.
@@ -135,6 +159,42 @@ public class SettingsFragment extends PreferenceFragment {
                         }
                         return;
 
+                    case "javascript_disabled_search":
+                        // Set the new search URL as the summary text for the JavaScript-disabled search preference.  The default is "https://duckduckgo.com/html/?q=".
+                        javaScriptDisabledSearchPreference.setSummary(sharedPreferences.getString("javascript_disabled_search", "https://duckduckgo.com/html/?q="));
+
+                        // Enable "javascript_disabled_search_custom_url" if "javascript_disabled_search" is set to "Custom URL".
+                        javaScriptDisabledSearchCustomURLPreference.setEnabled(javaScriptDisabledSearchPreference.getSummary().equals("Custom URL"));
+
+                        // Update the javaScriptDisabledSearchURL variable.  The default is "https://duckduckgo.com/html/?q=".
+                        MainWebViewActivity.javaScriptDisabledSearchURL = sharedPreferences.getString("javascript_disabled_search", "https://duckduckgo.com/html/?q=");
+                        return;
+
+                    case "javascript_disabled_search_custom_url":
+                        // Set the new custom search URL as the summary text for "javascript_disabled_search_custom_url".  The default is "".
+                        javaScriptDisabledSearchCustomURLPreference.setSummary(sharedPreferences.getString("javascript_disabled_search_custom_url", ""));
+
+                        // Update javaScriptDisabledSearchCustomURL.  The default is "".
+                        MainWebViewActivity.javaScriptDisabledSearchCustomURL = sharedPreferences.getString("javascript_disabled_search_custom_url", "");
+
+                    case "javascript_enabled_search":
+                        // Set the new search URL as the summary text for the JavaScript-enabled search preference.  The default is "https://duckduckgo.com/?q=".
+                        javaScriptEnabledSearchPreference.setSummary(sharedPreferences.getString("javascript_enabled_search", "https://duckduckgo.com/?q="));
+
+                        // Enable "javascript_enabled_search_custom_url" if "javascript_enabled_search" is set to "Custom URL".
+                        javaScriptEnabledSearchCustomURLPreference.setEnabled(javaScriptEnabledSearchPreference.getSummary().equals("Custom URL"));
+
+                        // Update the javaScriptEnabledSearchURL variable.  The default is "https://duckduckgo.com/?q=".
+                        MainWebViewActivity.javaScriptEnabledSearchURL = sharedPreferences.getString("javascript_enabled_search", "https://duckduckgo.com/?q=");
+                        return;
+
+                    case "javascript_enabled_search_custom_url":
+                        // Set the new custom search URL as the summary text for "javascript_enabled_search_custom_url".  The default is "".
+                        javaScriptEnabledSearchCustomURLPreference.setSummary(sharedPreferences.getString("javascript_enabled_search_custom_url", ""));
+
+                        // Update javaScriptEnabledSearchCustomURL.  The default is "".
+                        MainWebViewActivity.javaScriptEnabledSearchCustomURL = sharedPreferences.getString("javascript_enabled_search_custom_url", "");
+
                     case "homepage":
                         // Set the new homepage URL as the summary text for the Homepage preference.  The default is "https://www.duckduckgo.com".
                         homepagePreference.setSummary(sharedPreferences.getString("homepage", "https://www.duckduckgo.com"));
@@ -149,6 +209,7 @@ public class SettingsFragment extends PreferenceFragment {
 
                         // Update swipeRefreshLayout to match the new state.
                         MainWebViewActivity.swipeToRefresh.setEnabled(MainWebViewActivity.swipeToRefreshEnabled);
+                        return;
 
                     // If no match, do nothing.
                     default:
@@ -160,8 +221,8 @@ public class SettingsFragment extends PreferenceFragment {
         savedPreferences.registerOnSharedPreferenceChangeListener(preferencesListener);
     }
 
-    // It is necessary to reregister the listener on every resume or it will randomly stop working for the user because apps can be paused and resumed at any time,
-    // even when they are in the foreground.
+    // It is necessary to re-register the listener on every resume or it will randomly stop working because apps can be paused and resumed at any time
+    // even while running in the foreground.
     @Override
     public void onResume() {
         super.onResume();