From d89d01c0a9f02972ebe910b04ff0b64f2fc64b35 Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sun, 26 Feb 2012 19:17:15 +0100 Subject: fix #1002: Filter Mysteries when solved --- main/src/cgeo/geocaching/cgeocaches.java | 6 +++++ .../src/cgeo/geocaching/filter/ModifiedFilter.java | 28 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 main/src/cgeo/geocaching/filter/ModifiedFilter.java (limited to 'main/src') diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index d6b37cd..b6324f0 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -13,6 +13,7 @@ import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.files.GPXImporter; import cgeo.geocaching.filter.AttributeFilter; import cgeo.geocaching.filter.IFilter; +import cgeo.geocaching.filter.ModifiedFilter; import cgeo.geocaching.filter.SizeFilter; import cgeo.geocaching.filter.StateFilter; import cgeo.geocaching.filter.TrackablesFilter; @@ -132,6 +133,7 @@ public class cgeocaches extends AbstractListActivity { private static final int SUBMENU_FILTER_ATTRIBUTES = 67; private static final int SUBMENU_FILTER_STATE = 68; private static final int MENU_NAVIGATION = 69; + private static final int MENU_FILTER_MODIFIED = 70; private String action = null; private CacheListType type = null; @@ -783,6 +785,7 @@ public class cgeocaches extends AbstractListActivity { subMenuFilter.add(0, SUBMENU_FILTER_ATTRIBUTES, 0, res.getString(R.string.cache_attributes)); subMenuFilter.add(0, SUBMENU_FILTER_STATE, 0, res.getString(R.string.cache_status)); subMenuFilter.add(0, MENU_FILTER_TRACKABLES, 0, res.getString(R.string.caches_filter_track)); + subMenuFilter.add(0, MENU_FILTER_MODIFIED, 0, res.getString(R.string.caches_filter_modified)); subMenuFilter.add(0, MENU_FILTER_CLEAR, 0, res.getString(R.string.caches_filter_clear)); SubMenu subMenuSort = menu.addSubMenu(0, SUBMENU_SORT, 0, res.getString(R.string.caches_sort)).setIcon(android.R.drawable.ic_menu_sort_alphabetically); @@ -1072,6 +1075,9 @@ public class cgeocaches extends AbstractListActivity { case MENU_FILTER_TRACKABLES: setFilter(new TrackablesFilter(res.getString(R.string.caches_filter_track))); return true; + case MENU_FILTER_MODIFIED: + setFilter(new ModifiedFilter(res.getString(R.string.caches_filter_modified))); + return true; case MENU_FILTER_CLEAR: if (adapter != null) { setFilter(null); diff --git a/main/src/cgeo/geocaching/filter/ModifiedFilter.java b/main/src/cgeo/geocaching/filter/ModifiedFilter.java new file mode 100644 index 0000000..cecd210 --- /dev/null +++ b/main/src/cgeo/geocaching/filter/ModifiedFilter.java @@ -0,0 +1,28 @@ +package cgeo.geocaching.filter; + +import cgeo.geocaching.cgCache; +import cgeo.geocaching.cgWaypoint; + +public class ModifiedFilter extends AbstractFilter { + + public ModifiedFilter(String name) { + super(name); + } + + @Override + public boolean accepts(final cgCache cache) { + // modified on GC + if (cache.hasUserModifiedCoords()) { + return true; + } + + // or with added/modified waypoints + for (cgWaypoint waypoint : cache.getWaypoints()) { + if (waypoint.isUserDefined()) { + return true; + } + } + + return false; + } +} -- cgit v1.1