aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-07-25 08:51:54 +0200
committerrsudev <rasch@munin-soft.de>2013-07-25 08:51:54 +0200
commitbc4f10436c1528884749cca99bb8d5c9290c5e34 (patch)
tree53fe4a29a095353bdd2f456b3c52049a676788bd /main/src/cgeo
parent4d117862620ac4947d19b4207efd2407fd915833 (diff)
downloadcgeo-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.java9
-rw-r--r--main/src/cgeo/geocaching/cgeoapplication.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Login.java18
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java22
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());
+ }
}