aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/Geocache.java34
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java42
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java12
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCConnector.java14
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java23
5 files changed, 77 insertions, 48 deletions
diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java
index 09a3734..35d6c17 100644
--- a/main/src/cgeo/geocaching/Geocache.java
+++ b/main/src/cgeo/geocaching/Geocache.java
@@ -491,39 +491,7 @@ public class Geocache implements ICache, IWaypoint {
}
public List<LogType> getPossibleLogTypes() {
- final List<LogType> logTypes = new ArrayList<LogType>();
- if (isEventCache()) {
- logTypes.add(LogType.WILL_ATTEND);
- logTypes.add(LogType.ATTENDED);
- if (isOwner()) {
- logTypes.add(LogType.ANNOUNCEMENT);
- }
- } else if (CacheType.WEBCAM == cacheType.getValue()) {
- logTypes.add(LogType.WEBCAM_PHOTO_TAKEN);
- } else {
- logTypes.add(LogType.FOUND_IT);
- }
- if (!isEventCache()) {
- logTypes.add(LogType.DIDNT_FIND_IT);
- }
- logTypes.add(LogType.NOTE);
- if (!isEventCache()) {
- logTypes.add(LogType.NEEDS_MAINTENANCE);
- }
- if (isOwner()) {
- logTypes.add(LogType.OWNER_MAINTENANCE);
- if (isDisabled()) {
- logTypes.add(LogType.ENABLE_LISTING);
- }
- else {
- logTypes.add(LogType.TEMP_DISABLE_LISTING);
- }
- logTypes.add(LogType.ARCHIVE);
- }
- if (!isArchived() && !isOwner()) {
- logTypes.add(LogType.NEEDS_ARCHIVE);
- }
- return logTypes;
+ return getConnector().getPossibleLogTypes(this);
}
public void openInBrowser(Activity fromActivity) {
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index b93cda0..3ec0580 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -3,10 +3,15 @@ package cgeo.geocaching.connector;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
+import cgeo.geocaching.enumerations.CacheType;
+import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
import org.apache.commons.lang3.StringUtils;
+import java.util.ArrayList;
+import java.util.List;
+
public abstract class AbstractConnector implements IConnector {
@Override
@@ -146,4 +151,41 @@ public abstract class AbstractConnector implements IConnector {
}
return R.drawable.marker_other;
}
+
+ @Override
+ public List<LogType> getPossibleLogTypes(Geocache geocache) {
+ final List<LogType> logTypes = new ArrayList<LogType>();
+ if (geocache.isEventCache()) {
+ logTypes.add(LogType.WILL_ATTEND);
+ logTypes.add(LogType.ATTENDED);
+ if (geocache.isOwner()) {
+ logTypes.add(LogType.ANNOUNCEMENT);
+ }
+ } else if (CacheType.WEBCAM == geocache.getType()) {
+ logTypes.add(LogType.WEBCAM_PHOTO_TAKEN);
+ } else {
+ logTypes.add(LogType.FOUND_IT);
+ }
+ if (!geocache.isEventCache()) {
+ logTypes.add(LogType.DIDNT_FIND_IT);
+ }
+ logTypes.add(LogType.NOTE);
+ if (!geocache.isEventCache()) {
+ logTypes.add(LogType.NEEDS_MAINTENANCE);
+ }
+ if (geocache.isOwner()) {
+ logTypes.add(LogType.OWNER_MAINTENANCE);
+ if (geocache.isDisabled()) {
+ logTypes.add(LogType.ENABLE_LISTING);
+ }
+ else {
+ logTypes.add(LogType.TEMP_DISABLE_LISTING);
+ }
+ logTypes.add(LogType.ARCHIVE);
+ }
+ if (!geocache.isArchived() && !geocache.isOwner()) {
+ logTypes.add(LogType.NEEDS_ARCHIVE);
+ }
+ return logTypes;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 4ab7bde..2262e47 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -3,8 +3,11 @@ package cgeo.geocaching.connector;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import cgeo.geocaching.LogCacheActivity;
+import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
+import java.util.List;
+
public interface IConnector {
/**
* get name for display (currently only used in links)
@@ -208,4 +211,13 @@ public interface IConnector {
* Whether to return the enabled or disabled marker type
*/
public int getCacheMapMarkerId(boolean disabled);
+
+ /**
+ * Get the list of <b>potentially</b> possible log types for a cache. Those may still be filter further during the
+ * actual logging activity.
+ *
+ * @param geocache
+ * @return
+ */
+ public List<LogType> getPossibleLogTypes(Geocache geocache);
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCConnector.java b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
index 29cdd10..b5c62ea 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
@@ -4,7 +4,10 @@ import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import cgeo.geocaching.R;
import cgeo.geocaching.connector.AbstractConnector;
+import cgeo.geocaching.enumerations.LogType;
+import java.util.Arrays;
+import java.util.List;
import java.util.regex.Pattern;
public class OCConnector extends AbstractConnector {
@@ -14,6 +17,9 @@ public class OCConnector extends AbstractConnector {
private final Pattern codePattern;
private static final Pattern GPX_ZIP_FILE_PATTERN = Pattern.compile("oc[a-z]{2,3}\\d{5,}\\.zip", Pattern.CASE_INSENSITIVE);
+ private static final List<LogType> STANDARD_LOG_TYPES = Arrays.asList(LogType.FOUND_IT, LogType.DIDNT_FIND_IT, LogType.NOTE);
+ private static final List<LogType> EVENT_LOG_TYPES = Arrays.asList(LogType.WILL_ATTEND, LogType.ATTENDED, LogType.NOTE);
+
public OCConnector(final String name, final String host, final String prefix) {
this.name = name;
this.host = host;
@@ -66,4 +72,12 @@ public class OCConnector extends AbstractConnector {
return R.drawable.marker_oc;
}
+ @Override
+ public final List<LogType> getPossibleLogTypes(Geocache cache) {
+ if (cache.isEventCache()) {
+ return EVENT_LOG_TYPES;
+ }
+
+ return STANDARD_LOG_TYPES;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java b/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
index 9ffe7a2..c6be3cb 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
@@ -11,7 +11,6 @@ import cgeo.geocaching.enumerations.StatusCode;
import android.net.Uri;
-import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
@@ -22,48 +21,42 @@ public class OkapiLoggingManager implements ILoggingManager {
private final Geocache cache;
private LogCacheActivity activity;
- private final static List<LogType> standardLogTypes = Arrays.asList(LogType.FOUND_IT, LogType.DIDNT_FIND_IT, LogType.NOTE);
- private final static List<LogType> eventLogTypes = Arrays.asList(LogType.WILL_ATTEND, LogType.ATTENDED, LogType.NOTE);
-
- public OkapiLoggingManager(final LogCacheActivity activity, OCApiLiveConnector connector, Geocache cache) {
+ public OkapiLoggingManager(final LogCacheActivity activity, final OCApiLiveConnector connector, final Geocache cache) {
this.connector = connector;
this.cache = cache;
this.activity = activity;
}
@Override
- public void init() {
+ public final void init() {
activity.onLoadFinished();
}
@Override
- public LogResult postLog(Geocache cache, LogType logType, Calendar date, String log, String logPassword, List<TrackableLog> trackableLogs) {
+ public final LogResult postLog(final Geocache cache, final LogType logType, final Calendar date, final String log, final String logPassword, final List<TrackableLog> trackableLogs) {
final LogResult result = OkapiClient.postLog(cache, logType, date, log, logPassword, connector);
connector.login(null, null);
return result;
}
@Override
- public ImageResult postLogImage(String logId, String imageCaption, String imageDescription, Uri imageUri) {
+ public final ImageResult postLogImage(final String logId, final String imageCaption, final String imageDescription, final Uri imageUri) {
return new ImageResult(StatusCode.LOG_POST_ERROR, "");
}
@Override
- public boolean hasLoaderError() {
+ public final boolean hasLoaderError() {
return false;
}
@Override
- public List<TrackableLog> getTrackables() {
+ public final List<TrackableLog> getTrackables() {
return Collections.emptyList();
}
@Override
public List<LogType> getPossibleLogTypes() {
- if (cache.isEventCache()) {
- return eventLogTypes;
- }
-
- return standardLogTypes;
+ return connector.getPossibleLogTypes(cache);
}
+
}