diff options
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 6 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/sorting/StorageTimeComparator.java | 23 |
3 files changed, 30 insertions, 0 deletions
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 98f7c90..bf61370 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -283,6 +283,7 @@ <string name="caches_sort_date">Date</string> <string name="caches_sort_finds">Finds</string> <string name="caches_sort_state">State</string> + <string name="caches_sort_storage">Date stored on device</string> <string name="caches_select_mode">Select mode</string> <string name="caches_select_mode_exit">Exit select mode</string> <string name="caches_select_invert">Invert selection</string> diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 5e16109..ec0e173 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -33,6 +33,7 @@ import cgeo.geocaching.sorting.PopularityComparator; import cgeo.geocaching.sorting.RatingComparator; import cgeo.geocaching.sorting.SizeComparator; import cgeo.geocaching.sorting.StateComparator; +import cgeo.geocaching.sorting.StorageTimeComparator; import cgeo.geocaching.sorting.TerrainComparator; import cgeo.geocaching.sorting.VisitComparator; import cgeo.geocaching.sorting.VoteComparator; @@ -117,6 +118,7 @@ public class cgeocaches extends AbstractListActivity implements IObserver<Object private static final int MENU_NAVIGATION = 69; private static final int MENU_STORE_CACHE = 73; private static final int MENU_FILTER = 74; + private static final int MENU_SORT_STORAGE = 75; private static final int MSG_DONE = -1; private static final int MSG_RESTART_GEO_AND_DIR = -2; @@ -712,6 +714,7 @@ public class cgeocaches extends AbstractListActivity implements IObserver<Object comparators.put(res.getString(R.string.caches_sort_date), MENU_SORT_DATE); comparators.put(res.getString(R.string.caches_sort_finds), MENU_SORT_FINDS); comparators.put(res.getString(R.string.caches_sort_state), MENU_SORT_STATE); + comparators.put(res.getString(R.string.caches_sort_storage), MENU_SORT_STORAGE); List<String> sortedLabels = new ArrayList<String>(comparators.keySet()); Collections.sort(sortedLabels); @@ -918,6 +921,9 @@ public class cgeocaches extends AbstractListActivity implements IObserver<Object case MENU_SORT_GEOCODE: setComparator(item, new GeocodeComparator()); return false; + case MENU_SORT_STORAGE: + setComparator(item, new StorageTimeComparator()); + return false; case MENU_SWITCH_LIST: selectList(null); invalidateOptionsMenuCompatible(); diff --git a/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java b/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java new file mode 100644 index 0000000..32bef32 --- /dev/null +++ b/main/src/cgeo/geocaching/sorting/StorageTimeComparator.java @@ -0,0 +1,23 @@ +package cgeo.geocaching.sorting; + +import cgeo.geocaching.cgCache; + +public class StorageTimeComparator extends AbstractCacheComparator { + + @Override + protected boolean canCompare(cgCache cache1, cgCache cache2) { + return true; + } + + @Override + protected int compareCaches(cgCache cache1, cgCache cache2) { + if (cache1.getUpdated() < cache2.getUpdated()) { + return -1; + } + if (cache1.getUpdated() > cache2.getUpdated()) { + return 1; + } + return 0; + } + +} |
