diff options
Diffstat (limited to 'main/src')
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); } + } |
