aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java6
-rw-r--r--main/src/cgeo/geocaching/filter/ModifiedFilter.java28
2 files changed, 34 insertions, 0 deletions
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;
+ }
+}