BearND has uploaded a new change for review. https://gerrit.wikimedia.org/r/311890
Change subject: Add RESTBaseUriFormat list to dev settings ...................................................................... Add RESTBaseUriFormat list to dev settings The dev settings option for RESTBaseUriFormat has become very big and complex. This patch adds a ListPreference which lets users select from the most common options. The last, "custom", option is still a free form text to allow for flexibility. It is already populated with the string one had to copy over before. As before, you still need to replace the string "host" with the actual hostname or IP address of the developer machine you have MCS running on. Change-Id: Ib5c931f9a108a46bedd12302b624b9f8000dd826 --- M app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java M app/src/main/java/org/wikipedia/settings/Prefs.java M app/src/main/res/values/preference_keys.xml M app/src/main/res/values/preference_values.xml M app/src/main/res/xml/developer_preferences.xml 5 files changed, 96 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/90/311890/1 diff --git a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java index b82bd25..c3e90c1 100644 --- a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java +++ b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsPreferenceLoader.java @@ -1,17 +1,18 @@ package org.wikipedia.settings; -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceCategory; -import android.support.v7.preference.PreferenceFragmentCompat; -import android.support.v7.preference.TwoStatePreference; - import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.crash.RemoteLogException; import org.wikipedia.useroption.ui.UserOptionRowActivity; import org.wikipedia.util.log.L; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; +import android.support.v7.preference.PreferenceFragmentCompat; +import android.support.v7.preference.TwoStatePreference; import java.util.List; @@ -46,6 +47,7 @@ public void loadPreferences() { loadPreferences(R.xml.developer_preferences); setUpRestBaseCheckboxes(); + setUpRestBaseUriFormat(); setUpCookies((PreferenceCategory) findPreference(R.string.preferences_developer_cookies_key)); setUpEditTokens((PreferenceCategory) findPreference(R.string.preferences_developer_edit_tokens_key)); setUpCrashButton(findPreference(getCrashButtonKey())); @@ -78,6 +80,63 @@ return context.getString(R.string.preference_key_use_restbase); } + private void setUpRestBaseUriFormat() { + ListPreference preference = (ListPreference) findPreference(getRestBaseUriFormatListKey()); + preference.setOnPreferenceChangeListener(setRestBaseUriFormatChangeListener); + setRestBaseUriFormatEnabled(preference, preference.getValue()); + } + + private String getRestBaseUriFormatListKey() { + return context.getString(R.string.preference_key_restbase_uri_format_list); + } + + public String getRestBaseUriFormatKey() { + return context.getString(R.string.preference_key_restbase_uri_format); + } + + @NonNull private final Preference.OnPreferenceChangeListener setRestBaseUriFormatChangeListener + = new Preference.OnPreferenceChangeListener() { + /** + * Called when the RESTBase Uri Format 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) { + final String value = (String) newValue; + setRestBaseUriFormatEnabled((ListPreference) preference, value); + setRestBaseUriFormat(value); + return true; + } + }; + + private void setRestBaseUriFormat(String newValue) { + Prefs.setRestbaseUriFormat(newValue); + getRestBaseUriFormatPreference().callChangeListener(newValue); + getRestBaseUriFormatPreference().setDefaultValue(newValue); + } + + private void setRestBaseUriFormatEnabled(ListPreference preference, String newValue) { + setRestBaseUriFormatEnabled(isLastOptionSelected(preference, newValue)); + } + + private boolean isLastOptionSelected(ListPreference preference, String newValue) { + int index = preference.findIndexOfValue(newValue); + return index == preference.getEntries().length - 1; + } + + private void setRestBaseUriFormatEnabled(boolean visible) { + getRestBaseUriFormatPreference().setVisible(visible); + } + + private Preference getRestBaseUriFormatPreference() { + return findPreference(getRestBaseUriFormatKey()); + } + private String getCrashButtonKey() { return context.getString(R.string.preferences_developer_crash_key); } diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java b/app/src/main/java/org/wikipedia/settings/Prefs.java index 054d86c..efe60d9 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.java +++ b/app/src/main/java/org/wikipedia/settings/Prefs.java @@ -341,6 +341,11 @@ } @NonNull + public static void setRestbaseUriFormat(String newValue) { + setString(R.string.preference_key_restbase_uri_format, newValue); + } + + @NonNull public static Uri getMediaWikiBaseUri() { return Uri.parse(StringUtil.defaultIfBlank(getString(R.string.preference_key_mediawiki_base_uri, null), Constants.WIKIPEDIA_URL)); diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index dda1631..80f6b6c 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -23,6 +23,7 @@ <string name="preference_key_use_restbase_manual">useRestbase_setManually</string> <string name="preference_key_restbase_ticket">restbaseTicket</string> <string name="preference_key_request_successes">requestSuccesses</string> + <string name="preference_key_restbase_uri_format_list">RESTBaseUriFormatList</string> <string name="preference_key_restbase_uri_format">RESTBaseUriFormat</string> <string name="preference_key_mediawiki_base_uri">mediaWikiBaseUri</string> <string name="preference_key_mediawiki_base_uri_supports_lang_code">mediaWikiBaseUriSupportsLangCode</string> diff --git a/app/src/main/res/values/preference_values.xml b/app/src/main/res/values/preference_values.xml index d52d2ec..1472783 100644 --- a/app/src/main/res/values/preference_values.xml +++ b/app/src/main/res/values/preference_values.xml @@ -6,4 +6,16 @@ <item>HEADERS</item> <item>BODY</item> </string-array> + <string-array name="preference_names_restbase_uri_format_list"> + <item>Production cluster</item> + <item>Beta cluster</item> + <item>Labs machine (appservice.wmflabs.org)</item> + <item>Custom (e.g. for local dev box)</item> + </string-array> + <string-array name="preference_values_restbase_uri_format_list"> + <item>%1$s://%2$s.wikipedia.org/api/rest_v1/</item> + <item>%1$s://%2$s.wikipedia.beta.wmflabs.org/api/rest_v1/</item> + <item>http://appservice.wmflabs.org/%2$s.wikipedia.org/v1/</item> + <item>http://host:6927/%2$s.wikipedia.org/v1/</item> + </string-array> </resources> \ No newline at end of file diff --git a/app/src/main/res/xml/developer_preferences.xml b/app/src/main/res/xml/developer_preferences.xml index 482c61c..c884f70 100644 --- a/app/src/main/res/xml/developer_preferences.xml +++ b/app/src/main/res/xml/developer_preferences.xml @@ -26,15 +26,22 @@ android:key="@string/preference_key_request_successes" android:title="@string/preference_key_request_successes" /> + <ListPreference + android:key="@string/preference_key_restbase_uri_format_list" + android:title="@string/preference_key_restbase_uri_format_list" + android:entries="@array/preference_names_restbase_uri_format_list" + android:entryValues="@array/preference_values_restbase_uri_format_list" + android:defaultValue="%1$s://%2$s.wikipedia.org/api/rest_v1/" + android:summary="%s" /> + <org.wikipedia.settings.EditTextAutoSummarizePreference style="@style/DataStringPreference" android:key="@string/preference_key_restbase_uri_format" android:title="@string/preference_key_restbase_uri_format" - android:dialogMessage="Prod: %1$s://%2$s.wikipedia.org/api/rest_v1/ - \nBeta: https://%2$s.wikipedia.beta.wmflabs.org/api/rest_v1/ - \nLabs: http://appservice.wmflabs.org/%2$s.wikipedia.org/v1/ - \nDev: http://host:6927/%2$s.wikipedia.org/v1/ - \n%1$s ➛ http or https; %2$s ➛ WP sub domain; scroll down for input field" /> + android:dialogMessage="For local dev box use: http://host:6927/%2$s.wikipedia.org/v1/ + \n%1$s ➛ http or https + \n%2$s ➛ WP sub domain + \nPlease replace 'host' with your machine's hostname or IP address" /> <org.wikipedia.settings.EditTextAutoSummarizePreference style="@style/DataStringPreference" -- To view, visit https://gerrit.wikimedia.org/r/311890 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib5c931f9a108a46bedd12302b624b9f8000dd826 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: BearND <bsitzm...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits