aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgCache.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-08-22 21:35:58 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-08-22 21:35:58 +0200
commitf77547b483d75af86f50397dd7ca43ab8b087422 (patch)
tree5f0534619ecf11d8f731f1a03a0f1c8c82c86a67 /src/cgeo/geocaching/cgCache.java
parentcab37df9f0ba2cda06d7a63ec61892c3084d37a4 (diff)
downloadcgeo-f77547b483d75af86f50397dd7ca43ab8b087422.zip
cgeo-f77547b483d75af86f50397dd7ca43ab8b087422.tar.gz
cgeo-f77547b483d75af86f50397dd7ca43ab8b087422.tar.bz2
first steps towards supporting other cache databases, see also comments
from #259
Diffstat (limited to 'src/cgeo/geocaching/cgCache.java')
-rw-r--r--src/cgeo/geocaching/cgCache.java37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/cgeo/geocaching/cgCache.java b/src/cgeo/geocaching/cgCache.java
index de0dace..8de5a5d 100644
--- a/src/cgeo/geocaching/cgCache.java
+++ b/src/cgeo/geocaching/cgCache.java
@@ -14,6 +14,8 @@ import android.net.Uri;
import android.text.Spannable;
import android.util.Log;
import cgeo.geocaching.activity.IAbstractActivity;
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
public class cgCache {
@@ -290,19 +292,19 @@ public class cgCache {
return true;
}
-
+
public boolean logOffline(final IAbstractActivity fromActivity, final int logType) {
logOffline(fromActivity, "", Calendar.getInstance(), logType);
return true;
}
-
+
void logOffline(final IAbstractActivity fromActivity, final String log, Calendar date, final int logType) {
if (logType <= 0) {
return;
}
cgeoapplication app = (cgeoapplication)((Activity)fromActivity).getApplication();
final boolean status = app.saveLogOffline(geocode, date.getTime(), logType, log);
-
+
Resources res = ((Activity)fromActivity).getResources();
if (status) {
fromActivity.showToast(res.getString(R.string.info_log_saved));
@@ -311,7 +313,7 @@ public class cgCache {
fromActivity.showToast(res.getString(R.string.err_log_post_failed));
}
}
-
+
public ArrayList<Integer> getPossibleLogTypes(cgSettings settings) {
boolean isOwner = owner != null && owner.equalsIgnoreCase(settings.getUsername());
ArrayList<Integer> types = new ArrayList<Integer>();
@@ -347,14 +349,31 @@ public class cgCache {
}
public void openInBrowser(Activity fromActivity) {
- fromActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getCacheUrl() + geocode)));
+ fromActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getCacheUrl())));
}
private String getCacheUrl() {
- if (geocode.startsWith("OC")) { // TODO refactor method into connectors, once available
- return "http://www.opencaching.de/viewcache.php?wp=";
- }
- return "http://www.geocaching.com/seek/cache_details.aspx?wp=";
+ return getConnector().getCacheUrl(this);
+ }
+
+ private IConnector getConnector() {
+ return ConnectorFactory.getConnector(this);
+ }
+
+ public boolean canOpenInBrowser() {
+ return getCacheUrl() != null;
+ }
+
+ public boolean supportsRefresh() {
+ return getConnector().supportsRefreshCache(this);
+ }
+
+ public boolean supportsWatchList() {
+ return getConnector().supportsWatchList();
+ }
+
+ public boolean supportsLogging() {
+ return getConnector().supportsLogging();
}
}