jenkins-bot has submitted this change and it was merged. ( 
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, 67 insertions(+), 0 deletions(-)

Approvals:
  Florianschmidtwelzow: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
 
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java
index 6d5329a3..54288da 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) {
+            resetMediaWikiSettings();
+            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) {
+            resetMediaWikiSettings();
+            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,33 @@
         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 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: merged
Gerrit-Change-Id: I74a17cf2f0718451651acd263702ad7b5e088fab
Gerrit-PatchSet: 2
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>
Gerrit-Reviewer: Florianschmidtwelzow <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to