aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values/preference_keys.xml1
-rw-r--r--main/res/values/strings.xml1
-rw-r--r--main/res/xml/preferences.xml2
-rw-r--r--main/src/cgeo/geocaching/settings/OCPreferenceKeys.java64
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java54
5 files changed, 120 insertions, 2 deletions
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml
index dc151e7..91b2c67 100644
--- a/main/res/values/preference_keys.xml
+++ b/main/res/values/preference_keys.xml
@@ -16,6 +16,7 @@
<string name="preference_screen_ocus">preference_screen_ocus</string>
<string name="preference_screen_ocro">preference_screen_ocro</string>
<string name="preference_screen_ec">preference_screen_ec</string>
+ <string name="preference_screen_ox">preference_screen_ox</string>
<string name="preference_screen_twitter">preference_screen_twitter</string>
<string name="preference_screen_navigation_menu">fakekey_navigation_menu_screen</string>
<string name="pref_fakekey_ocde_authorization">fakekey_ocde_authorization</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index f4c9d14..62c3bbf 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -434,6 +434,7 @@
<string name="init_login_popup_not_authorized">Not authorized</string>
<string name="init_login_popup_invalid_timestamp">Local time invalid, adjust device time</string>
<string name="init_login_popup_invalid_token">Authorization invalid, re-authorize</string>
+ <string name="settings_service_active">Active</string>
<string name="init_signature">Signature</string>
<string name="init_template_help">Placeholder strings like [NAME] will be expanded later when this template is used.</string>
<string name="init_signature_template_button">Insert Template</string>
diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml
index 1836dbe..fb17fb8 100644
--- a/main/res/xml/preferences.xml
+++ b/main/res/xml/preferences.xml
@@ -266,7 +266,7 @@
android:title="@string/settings_open_website" />
</PreferenceCategory>
</PreferenceScreen>
- <PreferenceScreen android:title="@string/settings_title_ox" >
+ <PreferenceScreen android:title="@string/settings_title_ox" android:key="@string/preference_screen_ox">
<PreferenceCategory android:title="@string/settings_settings" >
<CheckBoxPreference
android:defaultValue="false"
diff --git a/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java b/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java
new file mode 100644
index 0000000..f9d2a27
--- /dev/null
+++ b/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java
@@ -0,0 +1,64 @@
+package cgeo.geocaching.settings;
+
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.R;
+
+import android.util.SparseArray;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public enum OCPreferenceKeys {
+
+ OC_DE("oc.de", R.string.pref_connectorOCActive, R.string.preference_screen_ocde, R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret),
+ OC_PL("oc.pl", R.string.pref_connectorOCPLActive, R.string.preference_screen_ocpl, R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret),
+ OC_US("oc.us", R.string.pref_connectorOCUSActive, R.string.preference_screen_ocus, R.string.pref_ocus_tokenpublic, R.string.pref_ocus_tokensecret),
+ OC_NL("oc.nl", R.string.pref_connectorOCNLActive, R.string.preference_screen_ocnl, R.string.pref_ocnl_tokenpublic, R.string.pref_ocnl_tokensecret),
+ OC_RO("oc.ro", R.string.pref_connectorOCROActive, R.string.preference_screen_ocro, R.string.pref_ocro_tokenpublic, R.string.pref_ocro_tokensecret);
+
+
+ private OCPreferenceKeys(final String siteId, final int isActivePrefId, final int prefScreenId, final int publicTokenPrefId, final int privateTokenPrefId) {
+ this.siteId = siteId;
+ this.isActivePrefId = isActivePrefId;
+ this.prefScreenId = prefScreenId;
+ this.publicTokenPrefId = publicTokenPrefId;
+ this.privateTokenPrefId = privateTokenPrefId;
+ }
+
+ private static final SparseArray<OCPreferenceKeys> FIND_BY_ISACTIVE_ID;
+ private static final Map<String, OCPreferenceKeys> FIND_BY_ISACTIVE_KEY;
+
+ static {
+ FIND_BY_ISACTIVE_ID = new SparseArray<OCPreferenceKeys>(values().length);
+ Map<String, OCPreferenceKeys> byIsactiveKey = new HashMap<String, OCPreferenceKeys>();
+ for (OCPreferenceKeys key : values()) {
+ FIND_BY_ISACTIVE_ID.put(key.isActivePrefId, key);
+ byIsactiveKey.put(CgeoApplication.getInstance().getString(key.isActivePrefId), key);
+ }
+ FIND_BY_ISACTIVE_KEY = Collections.unmodifiableMap(byIsactiveKey);
+ }
+
+ public static boolean isOCPreference(final int prefId) {
+ return FIND_BY_ISACTIVE_ID.get(prefId) != null;
+ }
+
+ public static boolean isOCPreference(final String prefKey) {
+ return FIND_BY_ISACTIVE_KEY.containsKey(prefKey);
+ }
+
+ public static OCPreferenceKeys getById(final int prefId) {
+ return FIND_BY_ISACTIVE_ID.get(prefId);
+ }
+
+ public static OCPreferenceKeys getByKey(final String prefKey) {
+ return FIND_BY_ISACTIVE_KEY.get(prefKey);
+ }
+
+ public final String siteId;
+ public final int isActivePrefId;
+ public final int prefScreenId;
+ public final int publicTokenPrefId;
+ public final int privateTokenPrefId;
+
+}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index 3fdf161..a5b525e 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -171,6 +171,12 @@ public class SettingsActivity extends PreferenceActivity {
setWebsite(R.string.pref_fakekey_ec_website, "extremcaching.com");
setWebsite(R.string.pref_fakekey_gcvote_website, "gcvote.com");
setWebsite(R.string.pref_fakekey_sendtocgeo_website, "send2.cgeo.org");
+ for (OCPreferenceKeys key : OCPreferenceKeys.values()) {
+ setServiceScreenSummary(getPreferenceManager(), key.isActivePrefId);
+ }
+ setServiceScreenSummary(getPreferenceManager(), R.string.pref_connectorGCActive);
+ setServiceScreenSummary(getPreferenceManager(), R.string.pref_connectorOXActive);
+ setServiceScreenSummary(getPreferenceManager(), R.string.pref_connectorECActive);
}
private void setWebsite(final int preferenceKey, final String host) {
@@ -184,6 +190,36 @@ public class SettingsActivity extends PreferenceActivity {
});
}
+ private static String getServiceSummary(boolean status) {
+ return status ? CgeoApplication.getInstance().getString(R.string.settings_service_active) : StringUtils.EMPTY;
+ }
+
+ private static void setServiceScreenSummary(PreferenceManager preferenceManager, final int preferenceKey) {
+
+ String summary = StringUtils.EMPTY;
+
+ switch (preferenceKey) {
+ case R.string.pref_connectorGCActive:
+ summary = getServiceSummary(Settings.isGCConnectorActive());
+ preferenceManager.findPreference(getKey(R.string.preference_screen_gc)).setSummary(summary);
+ break;
+ case R.string.pref_connectorOXActive:
+ summary = getServiceSummary(Settings.isOXConnectorActive());
+ preferenceManager.findPreference(getKey(R.string.preference_screen_ox)).setSummary(summary);
+ break;
+ case R.string.pref_connectorECActive:
+ summary = getServiceSummary(Settings.isECConnectorActive());
+ preferenceManager.findPreference(getKey(R.string.preference_screen_ec)).setSummary(summary);
+ break;
+ default:
+ if (OCPreferenceKeys.isOCPreference(preferenceKey)) {
+ OCPreferenceKeys prefKey = OCPreferenceKeys.getById(preferenceKey);
+ summary = getServiceSummary(Settings.isOCConnectorActive(prefKey.isActivePrefId));
+ preferenceManager.findPreference(getKey(prefKey.prefScreenId)).setSummary(summary);
+ }
+ }
+ }
+
private static String getKey(final int prefKeyId) {
return CgeoApplication.getInstance().getString(prefKeyId);
}
@@ -397,6 +433,10 @@ public class SettingsActivity extends PreferenceActivity {
*/
void redrawScreen(final int key) {
final Preference preference = getPreference(key);
+ redrawScreen(preference);
+ }
+
+ static void redrawScreen(final Preference preference) {
if (!(preference instanceof PreferenceScreen)) {
return;
}
@@ -591,7 +631,19 @@ public class SettingsActivity extends PreferenceActivity {
|| isPreference(preference, R.string.pref_connectorOCROActive)
|| isPreference(preference, R.string.pref_connectorGCActive)
|| isPreference(preference, R.string.pref_connectorECActive)) {
- // // reset log-in status if connector activation was changed
+ // update summary
+ boolean boolVal = ((Boolean) value).booleanValue();
+ String summary = getServiceSummary(boolVal);
+ if (OCPreferenceKeys.isOCPreference(preference.getKey())) {
+ OCPreferenceKeys prefKey = OCPreferenceKeys.getByKey(preference.getKey());
+ preference.getPreferenceManager().findPreference(getKey(prefKey.prefScreenId)).setSummary(summary);
+ } else if (isPreference(preference, R.string.pref_connectorGCActive)) {
+ preference.getPreferenceManager().findPreference(getKey(R.string.preference_screen_gc)).setSummary(summary);
+ } else if (isPreference(preference, R.string.pref_connectorECActive)) {
+ preference.getPreferenceManager().findPreference(getKey(R.string.preference_screen_ec)).setSummary(summary);
+ }
+ redrawScreen(preference.getPreferenceManager().findPreference(getKey(R.string.preference_screen_services)));
+ // reset log-in status if connector activation was changed
CgeoApplication.getInstance().forceRelog();
} else if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in