aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-08-31 19:58:42 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-08-31 19:58:42 +0200
commit384a3bf7c0102f4fd9f593d089c7d41d79331aca (patch)
treeec86f0613bdafb886faf4a86ebfa2b2629014b18
parentcd51f9ec96c1842ca15343491c93de2cb50f5bb9 (diff)
downloadcgeo-384a3bf7c0102f4fd9f593d089c7d41d79331aca.zip
cgeo-384a3bf7c0102f4fd9f593d089c7d41d79331aca.tar.gz
cgeo-384a3bf7c0102f4fd9f593d089c7d41d79331aca.tar.bz2
new: sort by state, fixes #324
-rw-r--r--res/values-de/strings.xml1
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/cgeo/geocaching/cgeocaches.java12
-rw-r--r--src/cgeo/geocaching/sorting/StateComparator.java32
4 files changed, 43 insertions, 3 deletions
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 1b21a31..5cb7d31 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -287,6 +287,7 @@
<string name="caches_sort_inventory">Inventaranzahl</string>
<string name="caches_sort_date">Datum</string>
<string name="caches_sort_finds">Funde</string>
+ <string name="caches_sort_state">Status</string>
<string name="caches_select">Wähle von Liste</string>
<string name="caches_select_mode">Auswahlmodus</string>
<string name="caches_select_mode_exit">Auswahlmodus beenden</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a246e0a..5aea870 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -288,6 +288,7 @@
<string name="caches_sort_inventory">count of inventory</string>
<string name="caches_sort_date">date</string>
<string name="caches_sort_finds">finds</string>
+ <string name="caches_sort_state">state</string>
<string name="caches_select">Select from list</string>
<string name="caches_select_mode">Select mode</string>
<string name="caches_select_mode_exit">Exit select mode</string>
diff --git a/src/cgeo/geocaching/cgeocaches.java b/src/cgeo/geocaching/cgeocaches.java
index c01ae72..642336d 100644
--- a/src/cgeo/geocaching/cgeocaches.java
+++ b/src/cgeo/geocaching/cgeocaches.java
@@ -59,6 +59,7 @@ import cgeo.geocaching.sorting.NameComparator;
import cgeo.geocaching.sorting.PopularityComparator;
import cgeo.geocaching.sorting.RatingComparator;
import cgeo.geocaching.sorting.SizeComparator;
+import cgeo.geocaching.sorting.StateComparator;
import cgeo.geocaching.sorting.TerrainComparator;
import cgeo.geocaching.sorting.VoteComparator;
@@ -125,6 +126,7 @@ public class cgeocaches extends AbstractListActivity {
private static final int SUBMENU_MANAGE_HISTORY = 60;
private static final int MENU_SORT_DATE = 61;
private static final int MENU_SORT_FINDS = 62;
+ private static final int MENU_SORT_STATE = 63;
private static final int CONTEXT_MENU_MOVE_TO_LIST = 1000;
private static final int MENU_MOVE_SELECTED_OR_ALL_TO_LIST = 1200;
@@ -752,6 +754,7 @@ public class cgeocaches extends AbstractListActivity {
comparators.put(res.getString(R.string.caches_sort_inventory), MENU_SORT_INVENTORY);
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);
ArrayList<String> sortedLabels = new ArrayList<String>(comparators.keySet());
Collections.sort(sortedLabels);
@@ -983,6 +986,9 @@ public class cgeocaches extends AbstractListActivity {
case MENU_SORT_FINDS:
setComparator(item, new FindsComparator(app));
return true;
+ case MENU_SORT_STATE:
+ setComparator(item, new StateComparator());
+ return true;
case SUBMENU_FILTER_TYPE:
selectedFilter = res.getString(R.string.caches_filter_type);
openContextMenu(getListView());
@@ -2547,7 +2553,7 @@ public class cgeocaches extends AbstractListActivity {
cachesIntent.putExtra(EXTRAS_LIST_TYPE, "offline");
context.startActivity(cachesIntent);
}
-
+
public static void startActivityCachesAround(final AbstractActivity context, final Double latitude, final Double longitude) {
cgeocaches cachesActivity = new cgeocaches();
@@ -2559,7 +2565,7 @@ public class cgeocaches extends AbstractListActivity {
context.startActivity(cachesIntent);
}
-
+
public static void startActivityCacheOwner(final AbstractActivity context, final String userName) {
final Intent cachesIntent = new Intent(context, cgeocaches.class);
@@ -2569,7 +2575,7 @@ public class cgeocaches extends AbstractListActivity {
context.startActivity(cachesIntent);
}
-
+
public static void startActivityCacheUser(final AbstractActivity context, final String userName) {
final Intent cachesIntent = new Intent(context, cgeocaches.class);
diff --git a/src/cgeo/geocaching/sorting/StateComparator.java b/src/cgeo/geocaching/sorting/StateComparator.java
new file mode 100644
index 0000000..787af5a
--- /dev/null
+++ b/src/cgeo/geocaching/sorting/StateComparator.java
@@ -0,0 +1,32 @@
+package cgeo.geocaching.sorting;
+
+import cgeo.geocaching.cgCache;
+
+/**
+ * sort caches by state (normal, disabled, archived)
+ *
+ */
+public class StateComparator extends AbstractCacheComparator implements
+ CacheComparator {
+
+ @Override
+ protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
+ return true;
+ }
+
+ @Override
+ protected int compareCaches(final cgCache cache1, final cgCache cache2) {
+ return getState(cache1) - getState(cache2);
+ }
+
+ private static int getState(final cgCache cache) {
+ if (cache.disabled) {
+ return 1;
+ }
+ if (cache.archived) {
+ return 2;
+ }
+ return 0;
+ }
+
+}