diff options
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/values-de/strings.xml | 5 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 5 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterUserInterface.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/PopularityFilter.java | 43 |
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; + } + + } +} |
