aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-11-14 07:19:03 +0100
committerBananeweizen <bananeweizen@gmx.de>2012-11-14 07:19:03 +0100
commit68686b9ea3afaf5df945081fc02533d8919b4a4c (patch)
tree29d0f6622b06f70e34defe1adfa7a8b09a854400
parent9e6af14cc19ae161b838cd78c172e930b42ada79 (diff)
downloadcgeo-68686b9ea3afaf5df945081fc02533d8919b4a4c.zip
cgeo-68686b9ea3afaf5df945081fc02533d8919b4a4c.tar.gz
cgeo-68686b9ea3afaf5df945081fc02533d8919b4a4c.tar.bz2
fix #1999: Filter "Only non PM caches"
-rw-r--r--main/res/values-de/strings.xml1
-rw-r--r--main/res/values/strings.xml1
-rw-r--r--main/src/cgeo/geocaching/filter/StateFilter.java12
-rw-r--r--tests/src/cgeo/geocaching/filter/StateNonPremiumFilterTest.java26
4 files changed, 40 insertions, 0 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index beb069c..d563608 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -588,6 +588,7 @@
<string name="cache_status_archived">Archiviert</string>
<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_geocode">GC-Code</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 de12fff..f3f6b0e 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -601,6 +601,7 @@
<string name="cache_status_archived">Archived</string>
<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_geocode">GC-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 b086477..f51329a 100644
--- a/main/src/cgeo/geocaching/filter/StateFilter.java
+++ b/main/src/cgeo/geocaching/filter/StateFilter.java
@@ -64,6 +64,17 @@ abstract class StateFilter extends AbstractFilter {
}
}
+ static class StateNonPremiumFilter extends StateFilter {
+ public StateNonPremiumFilter() {
+ super(res.getString(R.string.cache_status_not_premium));
+ }
+
+ @Override
+ public boolean accepts(cgCache cache) {
+ return !cache.isPremiumMembersOnly();
+ }
+ }
+
private static class StateOfflineLogFilter extends StateFilter {
public StateOfflineLogFilter() {
super(res.getString(R.string.cache_status_offline_log));
@@ -84,6 +95,7 @@ abstract class StateFilter extends AbstractFilter {
filters.add(new StateArchivedFilter());
filters.add(new StateDisabledFilter());
filters.add(new StatePremiumFilter());
+ filters.add(new StateNonPremiumFilter());
filters.add(new StateOfflineLogFilter());
Collections.sort(filters, new Comparator<StateFilter>() {
diff --git a/tests/src/cgeo/geocaching/filter/StateNonPremiumFilterTest.java b/tests/src/cgeo/geocaching/filter/StateNonPremiumFilterTest.java
new file mode 100644
index 0000000..98d9e63
--- /dev/null
+++ b/tests/src/cgeo/geocaching/filter/StateNonPremiumFilterTest.java
@@ -0,0 +1,26 @@
+package cgeo.geocaching.filter;
+
+import cgeo.CGeoTestCase;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.filter.StateFilter.StateNonPremiumFilter;
+
+public class StateNonPremiumFilterTest extends CGeoTestCase {
+
+ private StateFilter.StateNonPremiumFilter nonPremiumFilter;
+ private cgCache premiumCache;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ nonPremiumFilter = new StateNonPremiumFilter();
+ premiumCache = new cgCache();
+ premiumCache.setPremiumMembersOnly(true);
+ }
+
+ public void testAccepts() {
+ assertFalse(nonPremiumFilter.accepts(premiumCache));
+ assertTrue(nonPremiumFilter.accepts(new cgCache()));
+ }
+
+}