From 019567e6a81f09542d3331f9856c82bc043bcffe Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Wed, 27 Mar 2013 09:45:57 +0100 Subject: #2593: wrong inverse sorting in history and other lists --- main/src/cgeo/geocaching/cgeocaches.java | 11 ++++++++++- main/src/cgeo/geocaching/ui/CacheListAdapter.java | 16 ++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) (limited to 'main') 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() { + final CacheComparator oldComparator = adapter.getCacheComparator(); + new ComparatorUserInterface(this).selectComparator(oldComparator, new RunnableWithArgument() { @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 { * @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; } -- cgit v1.1