diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 11 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/CacheListAdapter.java | 16 |
2 files changed, 18 insertions, 9 deletions
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 00c10d0..d29b924 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -749,9 +749,18 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity showFilterMenu(null); return true; case MENU_SORT: - new ComparatorUserInterface(this).selectComparator(adapter.getCacheComparator(), new RunnableWithArgument<CacheComparator>() { + final CacheComparator oldComparator = adapter.getCacheComparator(); + new ComparatorUserInterface(this).selectComparator(oldComparator, new RunnableWithArgument<CacheComparator>() { @Override public void run(CacheComparator selectedComparator) { + // selecting the same sorting twice will toggle the order + if (selectedComparator != null && oldComparator != null && selectedComparator.getClass().equals(oldComparator.getClass())) { + adapter.toggleInverseSort(); + } + else { + // always reset the inversion for a new sorting criteria + adapter.resetInverseSort(); + } setComparator(selectedComparator); } }); diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java index 41e27a6..4965e0b 100644 --- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java +++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java @@ -152,18 +152,18 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> { * @param comparator */ public void setComparator(final CacheComparator comparator) { - // selecting the same sorting twice will toggle the order - if (cacheComparator != null && comparator != null && cacheComparator.getClass().equals(comparator.getClass())) { - inverseSort = !inverseSort; - } - else { - // always reset the inversion for a new sorting criteria - inverseSort = false; - } cacheComparator = comparator; forceSort(); } + public void resetInverseSort() { + inverseSort = false; + } + + public void toggleInverseSort() { + inverseSort = !inverseSort; + } + public CacheComparator getCacheComparator() { return cacheComparator; } |
