diff options
| author | rsudev <rasch@munin-soft.de> | 2013-07-25 08:51:54 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2013-07-25 08:51:54 +0200 |
| commit | bc4f10436c1528884749cca99bb8d5c9290c5e34 (patch) | |
| tree | 53fe4a29a095353bdd2f456b3c52049a676788bd /main/src/cgeo | |
| parent | 4d117862620ac4947d19b4207efd2407fd915833 (diff) | |
| download | cgeo-bc4f10436c1528884749cca99bb8d5c9290c5e34.zip cgeo-bc4f10436c1528884749cca99bb8d5c9290c5e34.tar.gz cgeo-bc4f10436c1528884749cca99bb8d5c9290c5e34.tar.bz2 | |
Fixes #2988, New settings: Check and Save gc.com login not intuitive any more
- changing log-in info resets the login status and re-initiates log-in on return to MainActivity
Diffstat (limited to 'main/src/cgeo')
| -rw-r--r-- | main/src/cgeo/geocaching/MainActivity.java | 9 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeoapplication.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCConnector.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/Login.java | 18 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/settings/SettingsActivity.java | 22 |
5 files changed, 45 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java index b565431..2d488d6 100644 --- a/main/src/cgeo/geocaching/MainActivity.java +++ b/main/src/cgeo/geocaching/MainActivity.java @@ -328,6 +328,11 @@ public class MainActivity extends AbstractActivity { } private void init() { + + if (app.checkLogin) { + (new FirstLoginThread()).start(); + } + if (initialized) { return; } @@ -336,10 +341,6 @@ public class MainActivity extends AbstractActivity { Settings.setLanguage(Settings.isUseEnglish()); - if (app.firstRun) { - (new FirstLoginThread()).start(); - } - findOnMap.setClickable(true); findOnMap.setOnClickListener(new OnClickListener() { @Override diff --git a/main/src/cgeo/geocaching/cgeoapplication.java b/main/src/cgeo/geocaching/cgeoapplication.java index b227939..fd5f714 100644 --- a/main/src/cgeo/geocaching/cgeoapplication.java +++ b/main/src/cgeo/geocaching/cgeoapplication.java @@ -18,7 +18,7 @@ public class cgeoapplication extends Application { private volatile GeoDataProvider geo; private volatile DirectionProvider dir; - public boolean firstRun = true; // c:geo is just launched + public boolean checkLogin = true; // c:geo is just launched public boolean showLoginToast = true; //login toast shown just once. private boolean liveMapHintShown = false; // livemap hint has been shown final private StatusUpdater statusUpdater = new StatusUpdater(); diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index e6fff79..835359a 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -299,7 +299,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, final StatusCode status = Login.login(); if (status == StatusCode.NO_ERROR) { - cgeoapplication.getInstance().firstRun = false; + cgeoapplication.getInstance().checkLogin = false; Login.detectGcCustomDate(); } diff --git a/main/src/cgeo/geocaching/connector/gc/Login.java b/main/src/cgeo/geocaching/connector/gc/Login.java index 2b32ba9..2629339 100644 --- a/main/src/cgeo/geocaching/connector/gc/Login.java +++ b/main/src/cgeo/geocaching/connector/gc/Login.java @@ -69,7 +69,7 @@ public abstract class Login { final ImmutablePair<String, String> login = Settings.getGcLogin(); if (StringUtils.isEmpty(login.left) || StringUtils.isEmpty(login.right)) { - Login.setActualStatus(cgeoapplication.getInstance().getString(R.string.err_login)); + clearLoginInfo(); Log.e("Login.login: No login information stored"); return StatusCode.NO_LOGIN_INFO_STORED; } @@ -153,9 +153,23 @@ public abstract class Login { return StatusCode.MAINTENANCE; } + resetLoginStatus(); + + return StatusCode.NO_ERROR; + } + + private static void resetLoginStatus() { Cookies.clearCookies(); Settings.setCookieStore(null); - return StatusCode.NO_ERROR; + + setActualLoginStatus(false); + } + + private static void clearLoginInfo() { + resetLoginStatus(); + + setActualCachesFound(-1); + setActualStatus(cgeoapplication.getInstance().getString(R.string.err_login)); } static void setActualCachesFound(final int found) { diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 4b1c92b..7c0da1e 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -9,6 +9,7 @@ import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum; import cgeo.geocaching.compatibility.Compatibility; +import cgeo.geocaching.connector.gc.Login; import cgeo.geocaching.files.SimpleDirChooser; import cgeo.geocaching.maps.MapProviderFactory; import cgeo.geocaching.maps.interfaces.MapSource; @@ -124,6 +125,7 @@ public class SettingsActivity extends PreferenceActivity { initDebugPreference(); initBasicMemberPreferences(); initSend2CgeoPreferences(); + initServicePreferences(); for (int k : new int[] { R.string.pref_username, R.string.pref_password, R.string.pref_pass_vote, R.string.pref_signature, @@ -136,6 +138,11 @@ public class SettingsActivity extends PreferenceActivity { } } + private void initServicePreferences() { + getPreference(R.string.pref_connectorOCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER); + getPreference(R.string.pref_connectorGCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER); + } + private static String getKey(final int prefKeyId) { return cgeoapplication.getInstance().getString(prefKeyId); } @@ -493,6 +500,17 @@ public class SettingsActivity extends PreferenceActivity { // simple string representation. preference.setSummary(stringValue); } + // reset log-in if gc user or password is changed + if (isPreference(preference, R.string.pref_username) || isPreference(preference, R.string.pref_password)) { + if (Login.isActualLoginStatus()) { + Login.logout(); + } + cgeoapplication.getInstance().checkLogin = true; + } + // reset log-in status if connector activation was changed + if (isPreference(preference, R.string.pref_connectorOCActive) || isPreference(preference, R.string.pref_connectorGCActive)) { + cgeoapplication.getInstance().checkLogin = true; + } return true; } }; @@ -546,4 +564,8 @@ public class SettingsActivity extends PreferenceActivity { public static void addPreferencesFromResource(final PreferenceActivity preferenceActivity, final int preferencesResId) { preferenceActivity.addPreferencesFromResource(preferencesResId); } + + private static boolean isPreference(final Preference preference, int preferenceKeyId) { + return getKey(preferenceKeyId).equals(preference.getKey()); + } } |
