aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java8
-rw-r--r--main/src/cgeo/geocaching/settings/OAuthPreference.java2
-rw-r--r--main/src/cgeo/geocaching/settings/OCPreferenceKeys.java37
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java96
4 files changed, 64 insertions, 79 deletions
diff --git a/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java b/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java
index e36e007..35df787 100644
--- a/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java
@@ -18,6 +18,7 @@ public class CheckBoxWithPopupPreference extends CheckBoxPreference {
private String text;
private String url;
private String urlButton;
+ private OnPreferenceChangeListener baseOnPrefChangeListener = null;
public CheckBoxWithPopupPreference(Context context) {
super(context);
@@ -53,10 +54,17 @@ public class CheckBoxWithPopupPreference extends CheckBoxPreference {
@Override
protected View onCreateView(ViewGroup parent) {
+ if (baseOnPrefChangeListener == null) {
+ baseOnPrefChangeListener = getOnPreferenceChangeListener();
+ }
+
// show dialog when checkbox enabled
setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(final Preference preference, Object newValue) {
+ if (baseOnPrefChangeListener != null) {
+ baseOnPrefChangeListener.onPreferenceChange(preference, newValue);
+ }
if (!(Boolean) newValue) {
return true;
}
diff --git a/main/src/cgeo/geocaching/settings/OAuthPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java
index 477af3f..54f8023 100644
--- a/main/src/cgeo/geocaching/settings/OAuthPreference.java
+++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java
@@ -60,7 +60,7 @@ public class OAuthPreference extends AbstractClickablePreference {
@Override
protected OnPreferenceClickListener getOnPreferenceClickListener(final SettingsActivity activity) {
- activity.setOcAuthTitle(oAuthMapping.prefKeyId);
+ activity.setAuthTitle(oAuthMapping.prefKeyId);
return new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
diff --git a/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java b/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java
index f9d2a27..96f49e2 100644
--- a/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java
+++ b/main/src/cgeo/geocaching/settings/OCPreferenceKeys.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.settings;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
+import cgeo.geocaching.connector.oc.OCAuthParams;
import android.util.SparseArray;
@@ -11,29 +12,46 @@ 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);
+ OC_DE("oc.de", R.string.pref_connectorOCActive, R.string.preference_screen_ocde,
+ R.string.pref_fakekey_ocde_authorization, R.string.pref_fakekey_ocde_website,
+ R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret, OCAuthParams.OC_DE_AUTH_PARAMS),
+ OC_PL("oc.pl", R.string.pref_connectorOCPLActive, R.string.preference_screen_ocpl,
+ R.string.pref_fakekey_ocpl_authorization, R.string.pref_fakekey_ocpl_website,
+ R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret, OCAuthParams.OC_PL_AUTH_PARAMS),
+ OC_US("oc.us", R.string.pref_connectorOCUSActive, R.string.preference_screen_ocus,
+ R.string.pref_fakekey_ocus_authorization, R.string.pref_fakekey_ocus_website,
+ R.string.pref_ocus_tokenpublic, R.string.pref_ocus_tokensecret, OCAuthParams.OC_US_AUTH_PARAMS),
+ OC_NL("oc.nl", R.string.pref_connectorOCNLActive, R.string.preference_screen_ocnl,
+ R.string.pref_fakekey_ocnl_authorization, R.string.pref_fakekey_ocnl_website,
+ R.string.pref_ocnl_tokenpublic, R.string.pref_ocnl_tokensecret, OCAuthParams.OC_NL_AUTH_PARAMS),
+ OC_RO("oc.ro", R.string.pref_connectorOCROActive, R.string.preference_screen_ocro,
+ R.string.pref_fakekey_ocro_authorization, R.string.pref_fakekey_ocro_website,
+ R.string.pref_ocro_tokenpublic, R.string.pref_ocro_tokensecret, OCAuthParams.OC_RO_AUTH_PARAMS);
- private OCPreferenceKeys(final String siteId, final int isActivePrefId, final int prefScreenId, final int publicTokenPrefId, final int privateTokenPrefId) {
+ private OCPreferenceKeys(final String siteId, final int isActivePrefId, final int prefScreenId, final int websitePrefId,
+ final int authPrefId, final int publicTokenPrefId, final int privateTokenPrefId, final OCAuthParams authParams) {
this.siteId = siteId;
this.isActivePrefId = isActivePrefId;
this.prefScreenId = prefScreenId;
+ this.websitePrefId = websitePrefId;
+ this.authPrefId = authPrefId;
this.publicTokenPrefId = publicTokenPrefId;
this.privateTokenPrefId = privateTokenPrefId;
+ this.authParams = authParams;
}
private static final SparseArray<OCPreferenceKeys> FIND_BY_ISACTIVE_ID;
private static final Map<String, OCPreferenceKeys> FIND_BY_ISACTIVE_KEY;
+ private static final SparseArray<OCPreferenceKeys> FIND_BY_AUTH_PREF_ID;
static {
FIND_BY_ISACTIVE_ID = new SparseArray<OCPreferenceKeys>(values().length);
+ FIND_BY_AUTH_PREF_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);
+ FIND_BY_AUTH_PREF_ID.put(key.authPrefId, key);
byIsactiveKey.put(CgeoApplication.getInstance().getString(key.isActivePrefId), key);
}
FIND_BY_ISACTIVE_KEY = Collections.unmodifiableMap(byIsactiveKey);
@@ -51,6 +69,10 @@ public enum OCPreferenceKeys {
return FIND_BY_ISACTIVE_ID.get(prefId);
}
+ public static OCPreferenceKeys getByAuthId(final int authPrefId) {
+ return FIND_BY_AUTH_PREF_ID.get(authPrefId);
+ }
+
public static OCPreferenceKeys getByKey(final String prefKey) {
return FIND_BY_ISACTIVE_KEY.get(prefKey);
}
@@ -58,7 +80,10 @@ public enum OCPreferenceKeys {
public final String siteId;
public final int isActivePrefId;
public final int prefScreenId;
+ public final int websitePrefId;
+ public final int authPrefId;
public final int publicTokenPrefId;
public final int privateTokenPrefId;
+ public final OCAuthParams authParams;
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index a3749cf..dc1a39d 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -10,7 +10,6 @@ import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.gc.GCLogin;
-import cgeo.geocaching.connector.oc.OCAuthParams;
import cgeo.geocaching.files.SimpleDirChooser;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.interfaces.MapSource;
@@ -155,25 +154,19 @@ public class SettingsActivity extends PreferenceActivity {
}
private void initServicePreferences() {
- getPreference(R.string.pref_connectorOCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
- getPreference(R.string.pref_connectorOCPLActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
- getPreference(R.string.pref_connectorOCNLActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
- getPreference(R.string.pref_connectorOCUSActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
- getPreference(R.string.pref_connectorOCROActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
+ for (OCPreferenceKeys key : OCPreferenceKeys.values()) {
+ getPreference(key.isActivePrefId).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
+ setWebsite(key.websitePrefId, key.authParams.host);
+ setServiceScreenSummary(getPreferenceManager(), key.isActivePrefId);
+ }
getPreference(R.string.pref_connectorGCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
+ getPreference(R.string.pref_connectorOXActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorECActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
setWebsite(R.string.pref_fakekey_gc_website, GCConnector.getInstance().getHost());
- setWebsite(R.string.pref_fakekey_ocde_website, OCAuthParams.OC_DE_AUTH_PARAMS.host);
- setWebsite(R.string.pref_fakekey_ocpl_website, OCAuthParams.OC_PL_AUTH_PARAMS.host);
- setWebsite(R.string.pref_fakekey_ocnl_website, OCAuthParams.OC_NL_AUTH_PARAMS.host);
- setWebsite(R.string.pref_fakekey_ocus_website, OCAuthParams.OC_US_AUTH_PARAMS.host);
- setWebsite(R.string.pref_fakekey_ocro_website, OCAuthParams.OC_RO_AUTH_PARAMS.host);
+ setWebsite(R.string.pref_fakekey_ox_website, "opencaching.com");
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);
@@ -451,23 +444,14 @@ public class SettingsActivity extends PreferenceActivity {
Settings.putString(R.string.pref_webDeviceName, Settings.getWebDeviceName());
}
- public void setOcAuthTitle(int prefKeyId) {
- //TODO: Generalize!
+ public void setAuthTitle(int prefKeyId) {
switch (prefKeyId) {
case R.string.pref_fakekey_ocde_authorization:
- setOCDEAuthTitle();
- break;
case R.string.pref_fakekey_ocpl_authorization:
- setOCPLAuthTitle();
- break;
case R.string.pref_fakekey_ocnl_authorization:
- setOCNLAuthTitle();
- break;
case R.string.pref_fakekey_ocus_authorization:
- setOCUSAuthTitle();
- break;
case R.string.pref_fakekey_ocro_authorization:
- setOCROAuthTitle();
+ setOCAuthTitle(OCPreferenceKeys.getByAuthId(prefKeyId));
break;
case R.string.pref_fakekey_twitter_authorization:
setTwitterAuthTitle();
@@ -477,39 +461,13 @@ public class SettingsActivity extends PreferenceActivity {
}
}
- void setOCDEAuthTitle() {
- getPreference(R.string.pref_fakekey_ocde_authorization)
- .setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret)
- ? R.string.settings_reauthorize
- : R.string.settings_authorize));
- }
-
- void setOCPLAuthTitle() {
- getPreference(R.string.pref_fakekey_ocpl_authorization)
- .setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret)
- ? R.string.settings_reauthorize
- : R.string.settings_authorize));
- }
-
- void setOCNLAuthTitle() {
- getPreference(R.string.pref_fakekey_ocnl_authorization)
- .setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocnl_tokenpublic, R.string.pref_ocnl_tokensecret)
- ? R.string.settings_reauthorize
- : R.string.settings_authorize));
- }
-
- void setOCUSAuthTitle() {
- getPreference(R.string.pref_fakekey_ocus_authorization)
- .setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocus_tokenpublic, R.string.pref_ocus_tokensecret)
- ? R.string.settings_reauthorize
- : R.string.settings_authorize));
- }
-
- void setOCROAuthTitle() {
- getPreference(R.string.pref_fakekey_ocro_authorization)
- .setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocro_tokenpublic, R.string.pref_ocro_tokensecret)
- ? R.string.settings_reauthorize
- : R.string.settings_authorize));
+ void setOCAuthTitle(final OCPreferenceKeys key) {
+ if (key != null) {
+ getPreference(key.authPrefId)
+ .setTitle(getString(Settings.hasOCAuthorization(key.publicTokenPrefId, key.privateTokenPrefId)
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
+ }
}
void setTwitterAuthTitle() {
@@ -564,24 +522,15 @@ public class SettingsActivity extends PreferenceActivity {
getPreference(R.string.pref_mapDirectory).setSummary(StringUtils.defaultString(Settings.getMapFileDirectory()));
break;
case R.string.pref_fakekey_ocde_authorization:
- setOCDEAuthTitle();
- redrawScreen(R.string.preference_screen_ocde);
- break;
case R.string.pref_fakekey_ocpl_authorization:
- setOCPLAuthTitle();
- redrawScreen(R.string.preference_screen_ocpl);
- break;
case R.string.pref_fakekey_ocnl_authorization:
- setOCNLAuthTitle();
- redrawScreen(R.string.preference_screen_ocnl);
- break;
case R.string.pref_fakekey_ocus_authorization:
- setOCUSAuthTitle();
- redrawScreen(R.string.preference_screen_ocus);
- break;
case R.string.pref_fakekey_ocro_authorization:
- setOCROAuthTitle();
- redrawScreen(R.string.preference_screen_ocro);
+ OCPreferenceKeys key = OCPreferenceKeys.getByAuthId(requestCode);
+ if (key != null) {
+ setOCAuthTitle(key);
+ redrawScreen(key.prefScreenId);
+ }
break;
case R.string.pref_fakekey_twitter_authorization:
setTwitterAuthTitle();
@@ -630,6 +579,7 @@ public class SettingsActivity extends PreferenceActivity {
|| isPreference(preference, R.string.pref_connectorOCUSActive)
|| isPreference(preference, R.string.pref_connectorOCROActive)
|| isPreference(preference, R.string.pref_connectorGCActive)
+ || isPreference(preference, R.string.pref_connectorOXActive)
|| isPreference(preference, R.string.pref_connectorECActive)) {
// update summary
boolean boolVal = ((Boolean) value).booleanValue();
@@ -639,6 +589,8 @@ public class SettingsActivity extends PreferenceActivity {
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_connectorOXActive)) {
+ preference.getPreferenceManager().findPreference(getKey(R.string.preference_screen_ox)).setSummary(summary);
} else if (isPreference(preference, R.string.pref_connectorECActive)) {
preference.getPreferenceManager().findPreference(getKey(R.string.preference_screen_ec)).setSummary(summary);
}