BearND has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/354877 )

Change subject: DevSettings: Make MediaWiki settings dynamic
......................................................................

DevSettings: Make MediaWiki settings dynamic

Make changes to MediaWiki Base URI and Supports Multiple Languages in
Developer Settings languages dynamic, so that the app does not have to
be restarted after the setting is changed.

Bug: T165923
Change-Id: I74a17cf2f0718451651acd263702ad7b5e088fab
---
M 
app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
1 file changed, 81 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/77/354877/1

diff --git 
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
 
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
index 6d5329a3..0b4ddc4 100644
--- 
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
+++ 
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
@@ -36,6 +36,42 @@
         }
     };
 
+    @NonNull private final Preference.OnPreferenceChangeListener 
setMediaWikiBaseUriChangeListener
+            = new Preference.OnPreferenceChangeListener() {
+        /**
+         * Called when the mediaWikiBaseUri preference has been changed by the 
user. This is
+         * called before the state of the Preference is about to be updated and
+         * before the state is persisted.
+         *
+         * @param preference The changed Preference.
+         * @param newValue   The new value of the Preference.
+         * @return True to update the state of the Preference with the new 
value.
+         */
+        @Override
+        public boolean onPreferenceChange(Preference preference, Object 
newValue) {
+            setMediaWikiBaseUriSettings((String) newValue);
+            return true;
+        }
+    };
+
+    @NonNull private final Preference.OnPreferenceChangeListener 
setMediaWikiMultiLangSupportChangeListener
+            = new Preference.OnPreferenceChangeListener() {
+        /**
+         * Called when the mediaWikiBaseUriSupportsLangCode preference has 
been changed by the user.
+         * This is called before the state of the Preference is about to be 
updated and
+         * before the state is persisted.
+         *
+         * @param preference The changed Preference.
+         * @param newValue   The new value of the Preference.
+         * @return True to update the state of the Preference with the new 
value.
+         */
+        @Override
+        public boolean onPreferenceChange(Preference preference, Object 
newValue) {
+            setMediaWikiMultiLangSupportSettings((Boolean) newValue);
+            return true;
+        }
+    };
+
     /*package*/
     DeveloperSettingsPreferenceLoader(@NonNull PreferenceFragmentCompat 
fragment) {
         super(fragment);
@@ -46,11 +82,15 @@
     public void loadPreferences() {
         loadPreferences(R.xml.developer_preferences);
         setUpRestBaseCheckboxes();
+        setUpMediaWikiSettings();
         setUpCookies((PreferenceCategory) 
findPreference(R.string.preferences_developer_cookies_key));
         setUpCrashButton(findPreference(getCrashButtonKey()));
         setUpUserOptionButton(findPreference(getUserOptionButtonKey()));
         
setUpRemoteLogButton(findPreference(R.string.preference_key_remote_log));
     }
+
+
+    // --- RESTBase settings start ---
 
     private void setUpRestBaseCheckboxes() {
         TwoStatePreference manualPreference = (TwoStatePreference) 
findPreference(getManualKey());
@@ -77,6 +117,47 @@
         return context.getString(R.string.preference_key_use_restbase);
     }
 
+    // --- RESTBase settings end ---
+
+    // --- MediaWiki settings start ---
+
+    private void setUpMediaWikiSettings() {
+        Preference uriPreference = findPreference(getMediaWikiBaseUriKey());
+        
uriPreference.setOnPreferenceChangeListener(setMediaWikiBaseUriChangeListener);
+        TwoStatePreference multiLangPreference
+                = (TwoStatePreference) 
findPreference(getMediaWikiSupportsMultipleLanguages());
+        
multiLangPreference.setOnPreferenceChangeListener(setMediaWikiMultiLangSupportChangeListener);
+    }
+
+    private String getMediaWikiBaseUriKey() {
+        return context.getString(R.string.preference_key_mediawiki_base_uri);
+    }
+
+    private String getMediaWikiSupportsMultipleLanguages() {
+        return 
context.getString(R.string.preference_key_mediawiki_base_uri_supports_lang_code);
+    }
+
+    private void setMediaWikiBaseUriSettings(String newBaseUri) {
+        EditTextAutoSummarizePreference uriPreference
+                = (EditTextAutoSummarizePreference) 
findPreference(getMediaWikiBaseUriKey());
+        uriPreference.setText(newBaseUri);
+        resetMediaWikiSettings();
+    }
+
+    private void setMediaWikiMultiLangSupportSettings(Boolean multiLang) {
+        TwoStatePreference multiLangPreference
+                = (TwoStatePreference) 
findPreference(getMediaWikiSupportsMultipleLanguages());
+        multiLangPreference.setChecked(multiLang);
+        resetMediaWikiSettings();
+    }
+
+    private void resetMediaWikiSettings() {
+        WikipediaApp.getInstance().resetWikiSite();
+    }
+
+    // --- MediaWiki settings end ---
+
+
     private String getCrashButtonKey() {
         return context.getString(R.string.preferences_developer_crash_key);
     }

-- 
To view, visit https://gerrit.wikimedia.org/r/354877
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I74a17cf2f0718451651acd263702ad7b5e088fab
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to