aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/MainActivity.java')
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java78
1 files changed, 57 insertions, 21 deletions
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 9c3e89f..ff24322 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -4,7 +4,10 @@ import butterknife.InjectView;
import butterknife.Views;
import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.connector.gc.Login;
+import cgeo.geocaching.connector.oc.OCApiLiveConnector;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
@@ -50,7 +53,8 @@ import java.util.List;
import java.util.Locale;
public class MainActivity extends AbstractActivity {
- @InjectView(R.id.user_info) protected TextView userInfoView;
+ @InjectView(R.id.user_info_gc) protected TextView userInfoViewGc;
+ @InjectView(R.id.user_info_ocde) protected TextView userInfoViewOcDe;
@InjectView(R.id.nav_satellites) protected TextView navSatellites;
@InjectView(R.id.filter_button_title)protected TextView filterTitle;
@InjectView(R.id.map) protected ImageView findOnMap;
@@ -82,8 +86,8 @@ public class MainActivity extends AbstractActivity {
@Override
public void handleMessage(Message msg) {
- StringBuilder userInfo = new StringBuilder("geocaching.com").append(Formatter.SEPARATOR);
if (Settings.isGCConnectorActive()) {
+ StringBuilder userInfo = new StringBuilder("geocaching.com").append(Formatter.SEPARATOR);
if (Login.isActualLoginStatus()) {
userInfo.append(Login.getActualUserName());
if (Login.getActualCachesFound() >= 0) {
@@ -92,12 +96,36 @@ public class MainActivity extends AbstractActivity {
userInfo.append(Formatter.SEPARATOR);
}
userInfo.append(Login.getActualStatus());
+
+ userInfoViewGc.setText(userInfo.toString());
+ userInfoViewGc.setVisibility(View.VISIBLE);
+ }
+ else {
+ userInfoViewGc.setVisibility(View.GONE);
+ }
+
+ if (Settings.isOCConnectorActive()) {
+ StringBuilder userInfo = new StringBuilder("opencaching.de").append(Formatter.SEPARATOR);
+ IConnector conn = ConnectorFactory.getConnector("OCXXXX");
+ if (conn instanceof OCApiLiveConnector) {
+ OCApiLiveConnector ocapiConn = (OCApiLiveConnector) conn;
+ if (ocapiConn.supportsPersonalization()) {
+ userInfo.append(ocapiConn.getUserName());
+ int count = ocapiConn.getCachesFound();
+ if (count >= 0) {
+ userInfo.append(" (").append(String.valueOf(count)).append(')');
+ }
+ } else {
+ userInfo.append("Anonymous");
+ }
+ }
+ userInfoViewOcDe.setText(userInfo.toString());
+ userInfoViewOcDe.setVisibility(View.VISIBLE);
}
else {
- userInfo.append("<disabled>"); // TODO this is just a quick fix. We need some better status implementation showing multiple connectors.
+ userInfoViewOcDe.setVisibility(View.GONE);
}
- userInfoView.setText(userInfo.toString());
}
};
@@ -699,26 +727,34 @@ public class MainActivity extends AbstractActivity {
return;
}
- if (!Settings.isGCConnectorActive()) {
- return;
- }
-
- // login
- final StatusCode status = Login.login();
+ if (Settings.isGCConnectorActive()) {
+ // login
+ final StatusCode status = Login.login();
- if (status == StatusCode.NO_ERROR) {
- app.firstRun = false;
- Login.detectGcCustomDate();
- updateUserInfoHandler.sendEmptyMessage(-1);
- }
+ if (status == StatusCode.NO_ERROR) {
+ app.firstRun = false;
+ Login.detectGcCustomDate();
+ updateUserInfoHandler.sendEmptyMessage(-1);
+ }
- if (app.showLoginToast) {
- firstLoginHandler.sendMessage(firstLoginHandler.obtainMessage(0, status));
- app.showLoginToast = false;
+ if (app.showLoginToast) {
+ firstLoginHandler.sendMessage(firstLoginHandler.obtainMessage(0, status));
+ app.showLoginToast = false;
- // invoke settings activity to insert login details
- if (status == StatusCode.NO_LOGIN_INFO_STORED) {
- SettingsActivity.startActivity(MainActivity.this);
+ // invoke settings activity to insert login details
+ if (status == StatusCode.NO_LOGIN_INFO_STORED) {
+ SettingsActivity.startActivity(MainActivity.this);
+ }
+ }
+ }
+ if (Settings.isOCConnectorActive()) {
+ IConnector conn = ConnectorFactory.getConnector("OCXXXX");
+ if (conn instanceof OCApiLiveConnector) {
+ OCApiLiveConnector ocapiConn = (OCApiLiveConnector) conn;
+ if (ocapiConn.supportsPersonalization()) {
+ ocapiConn.retrieveUserInfo();
+ }
+ updateUserInfoHandler.sendEmptyMessage(-1);
}
}
}