aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-11-10 09:34:00 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-11-10 09:34:00 +0100
commit2fd3060213c74747d76cb104a3ecb693a3352781 (patch)
treef4b1b2b1f4b2307cc3788d27ec627b4ce2a44579
parent9ef9950fc27d0099bd4a482a2cf623deea56d4ea (diff)
parent653c85552f87a47218330a65642a2a4515255538 (diff)
downloadcgeo-2fd3060213c74747d76cb104a3ecb693a3352781.zip
cgeo-2fd3060213c74747d76cb104a3ecb693a3352781.tar.gz
cgeo-2fd3060213c74747d76cb104a3ecb693a3352781.tar.bz2
Merge remote-tracking branch 'KiwiStone/popularity_filter'
Conflicts: main/res/values/strings.xml main/src/cgeo/geocaching/filter/FilterUserInterface.java
-rw-r--r--main/res/values-de/strings.xml5
-rw-r--r--main/res/values/strings.xml5
-rw-r--r--main/src/cgeo/geocaching/filter/FilterUserInterface.java1
-rw-r--r--main/src/cgeo/geocaching/filter/PopularityFilter.java43
4 files changed, 54 insertions, 0 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index deacfb1..ec8a852 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -289,6 +289,7 @@
<string name="caches_filter_modified">Mit geänderten Koordinaten</string>
<string name="caches_filter_origin">Herkunft</string>
<string name="caches_filter_distance">Entfernung</string>
+ <string name="caches_filter_popularity">Beliebtheit</string>
<string name="caches_removing_from_history">Lösche aus Verlauf…</string>
<string name="caches_clear_offlinelogs">Offline-Logs löschen</string>
<string name="caches_clear_offlinelogs_progress">Lösche Offline-Logs</string>
@@ -1065,4 +1066,8 @@
<item quantity="one">gestern</item>
<item quantity="other">vor %d Tagen</item>
</plurals>
+ <plurals name="favorite_points">
+ <item quantity="one">%s Favorit</item>
+ <item quantity="other">%s Favoriten</item>
+ </plurals>
</resources>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 1adabc4..79ba638 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -330,6 +330,7 @@
<string name="caches_filter_origin">Origin</string>
<string name="caches_filter_distance">Distance</string>
<string name="caches_filter_personal_note">With personal note</string>
+ <string name="caches_filter_popularity">Popularity</string>
<string name="caches_removing_from_history">Removing from History…</string>
<string name="caches_clear_offlinelogs">Clear offline logs</string>
<string name="caches_clear_offlinelogs_progress">Clearing offline logs</string>
@@ -1192,5 +1193,9 @@
<item quantity="one">yesterday</item>
<item quantity="other">%d days ago</item>
</plurals>
+ <plurals name="favorite_points">
+ <item quantity="one">%s favorite</item>
+ <item quantity="other">%s favorites</item>
+ </plurals>
</resources>
diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
index 88bf8c3..7813e69 100644
--- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java
+++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
@@ -57,6 +57,7 @@ public final class FilterUserInterface {
register(R.string.caches_filter_origin, OriginFilter.Factory.class);
register(R.string.caches_filter_distance, DistanceFilter.Factory.class);
register(R.string.caches_filter_personal_note, PersonalNoteFilter.class);
+ register(R.string.caches_filter_popularity, PopularityFilter.Factory.class);
// sort by localized names
Collections.sort(registry, new Comparator<FactoryEntry>() {
diff --git a/main/src/cgeo/geocaching/filter/PopularityFilter.java b/main/src/cgeo/geocaching/filter/PopularityFilter.java
new file mode 100644
index 0000000..d4f54ef
--- /dev/null
+++ b/main/src/cgeo/geocaching/filter/PopularityFilter.java
@@ -0,0 +1,43 @@
+package cgeo.geocaching.filter;
+
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class PopularityFilter extends AbstractFilter {
+ private final int minFavorites;
+ private final int maxFavorites;
+
+ public PopularityFilter(String name, final int minFavorites, final int maxFavorites) {
+ super(name);
+ this.minFavorites = minFavorites;
+ this.maxFavorites = maxFavorites;
+ }
+
+ @Override
+ public boolean accepts(final Geocache cache) {
+ return (cache.getFavoritePoints() > minFavorites) && (cache.getFavoritePoints() <= maxFavorites);
+ }
+
+ public static class Factory implements IFilterFactory {
+
+ private static final int[] FAVORITES = { 10, 20, 50, 100, 200, 500 };
+
+ @Override
+ public List<IFilter> getFilters() {
+ final List<IFilter> filters = new ArrayList<IFilter>(FAVORITES.length);
+ for (int i = 0; i < FAVORITES.length; i++) {
+ final int minRange = FAVORITES[i];
+ final int maxRange = Integer.MAX_VALUE;
+ final String range = "> " + minRange;
+ final String name = CgeoApplication.getInstance().getResources().getQuantityString(R.plurals.favorite_points, minRange, range);
+ filters.add(new PopularityFilter(name, minRange, maxRange));
+ }
+ return filters;
+ }
+
+ }
+}