aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-04-07 14:45:42 +0200
committerBananeweizen <bananeweizen@gmx.de>2013-04-07 14:45:42 +0200
commit97b10e667d2fdfd9abb56be8e5bfaee259e27f65 (patch)
treed204a06ed665b2cd9ddba70db2995d0fd16a7444
parent154d9869c3972939cff5d95cb2b2343dc5e76309 (diff)
downloadcgeo-97b10e667d2fdfd9abb56be8e5bfaee259e27f65.zip
cgeo-97b10e667d2fdfd9abb56be8e5bfaee259e27f65.tar.gz
cgeo-97b10e667d2fdfd9abb56be8e5bfaee259e27f65.tar.bz2
fix #2640: Filter out stored caches
-rw-r--r--main/res/values-de/strings.xml2
-rw-r--r--main/res/values/strings.xml2
-rw-r--r--main/src/cgeo/geocaching/filter/StateFilter.java24
-rw-r--r--tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java27
4 files changed, 55 insertions, 0 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index d011ce8..aa27553 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -584,6 +584,8 @@
<string name="cache_status_disabled">Deaktiviert</string>
<string name="cache_status_premium">Nur für Premium-Mitglieder</string>
<string name="cache_status_not_premium">Für alle Mitglieder</string>
+ <string name="cache_status_stored">Gespeichert</string>
+ <string name="cache_status_not_stored">Nicht gespeichert</string>
<string name="cache_geocode">Geocode</string>
<string name="cache_name">Name</string>
<string name="cache_type">Typ</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index c539915..218c22b 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -596,6 +596,8 @@
<string name="cache_status_disabled">Disabled</string>
<string name="cache_status_premium">Premium Members only</string>
<string name="cache_status_not_premium">All Members Access</string>
+ <string name="cache_status_stored">Stored</string>
+ <string name="cache_status_not_stored">Not stored</string>
<string name="cache_geocode">Geo code</string>
<string name="cache_name">Name</string>
<string name="cache_type">Type</string>
diff --git a/main/src/cgeo/geocaching/filter/StateFilter.java b/main/src/cgeo/geocaching/filter/StateFilter.java
index ae3fac2..e18128d 100644
--- a/main/src/cgeo/geocaching/filter/StateFilter.java
+++ b/main/src/cgeo/geocaching/filter/StateFilter.java
@@ -87,6 +87,28 @@ abstract class StateFilter extends AbstractFilter {
}
}
+ static class StateStoredFilter extends StateFilter {
+ public StateStoredFilter() {
+ super(res.getString(R.string.cache_status_stored));
+ }
+
+ @Override
+ public boolean accepts(Geocache cache) {
+ return cache.isOffline();
+ }
+ }
+
+ static class StateNotStoredFilter extends StateFilter {
+ public StateNotStoredFilter() {
+ super(res.getString(R.string.cache_status_not_stored));
+ }
+
+ @Override
+ public boolean accepts(Geocache cache) {
+ return !cache.isOffline();
+ }
+ }
+
public static class Factory implements IFilterFactory {
@Override
@@ -98,6 +120,8 @@ abstract class StateFilter extends AbstractFilter {
filters.add(new StatePremiumFilter());
filters.add(new StateNonPremiumFilter());
filters.add(new StateOfflineLogFilter());
+ filters.add(new StateStoredFilter());
+ filters.add(new StateNotStoredFilter());
Collections.sort(filters, new Comparator<StateFilter>() {
diff --git a/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java b/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java
new file mode 100644
index 0000000..2f65a6b
--- /dev/null
+++ b/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java
@@ -0,0 +1,27 @@
+package cgeo.geocaching.filter;
+
+import cgeo.CGeoTestCase;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.filter.StateFilter.StateNotStoredFilter;
+import cgeo.geocaching.filter.StateFilter.StateStoredFilter;
+
+public class StateStoredFilterTest extends CGeoTestCase {
+
+ private StateFilter.StateStoredFilter storedFilter;
+ private StateFilter.StateNotStoredFilter notStoredFilter;
+ private Geocache cache;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ storedFilter = new StateStoredFilter();
+ notStoredFilter = new StateNotStoredFilter();
+ cache = new Geocache();
+ }
+
+ public void testAccepts() {
+ assertFalse(storedFilter.accepts(cache));
+ assertTrue(notStoredFilter.accepts(cache));
+ }
+
+}