aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-02-13 18:42:42 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-02-13 18:42:42 +0100
commitc0d1eeeeb3721c49f989cb256cad0a196ad0ed1d (patch)
tree59ca43ec291247ef1030461fb4828113e597cdc5 /main
parent0ca4a72628258d4b91c54e61f6e7e9c32a605bae (diff)
downloadcgeo-c0d1eeeeb3721c49f989cb256cad0a196ad0ed1d.zip
cgeo-c0d1eeeeb3721c49f989cb256cad0a196ad0ed1d.tar.gz
cgeo-c0d1eeeeb3721c49f989cb256cad0a196ad0ed1d.tar.bz2
new: filter by cache origin (website)
Diffstat (limited to 'main')
-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/FilterUserInterface.java1
-rw-r--r--main/src/cgeo/geocaching/filter/OriginFilter.java47
4 files changed, 50 insertions, 0 deletions
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index 1167df9..ca2af61 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -307,6 +307,7 @@
<string name="caches_filter_track">Mit Trackables</string>
<string name="caches_filter_clear">Filter zurücksetzen</string>
<string name="caches_filter_modified">Mit geänderten Koordinaten</string>
+ <string name="caches_filter_origin">Herkunft</string>
<string name="caches_removing_from_history">Lösche aus Verlauf…</string>
<!-- caches lists -->
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 53a20ed..5b273ca 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -309,6 +309,7 @@
<string name="caches_filter_track">With Trackables</string>
<string name="caches_filter_clear">Clear filters</string>
<string name="caches_filter_modified">With modified coordinates</string>
+ <string name="caches_filter_origin">Origin</string>
<string name="caches_removing_from_history">Removing from History…</string>
<!-- caches lists -->
diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
index e2472fd..be63a08 100644
--- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java
+++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
@@ -53,6 +53,7 @@ public final class FilterUserInterface {
register(R.string.cache_status, StateFilter.Factory.class);
register(R.string.caches_filter_track, TrackablesFilter.class);
register(R.string.caches_filter_modified, ModifiedFilter.class);
+ register(R.string.caches_filter_origin, OriginFilter.Factory.class);
// sort by localized names
Collections.sort(registry, new Comparator<FactoryEntry>() {
diff --git a/main/src/cgeo/geocaching/filter/OriginFilter.java b/main/src/cgeo/geocaching/filter/OriginFilter.java
new file mode 100644
index 0000000..a880092
--- /dev/null
+++ b/main/src/cgeo/geocaching/filter/OriginFilter.java
@@ -0,0 +1,47 @@
+package cgeo.geocaching.filter;
+
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+public class OriginFilter extends AbstractFilter {
+
+ private final IConnector connector;
+
+ public OriginFilter(IConnector connector) {
+ super(connector.getName());
+ this.connector = connector;
+ }
+
+ @Override
+ public boolean accepts(Geocache cache) {
+ return ConnectorFactory.getConnector(cache) == connector;
+ }
+
+ public static final class Factory implements IFilterFactory {
+
+ @Override
+ public IFilter[] getFilters() {
+ final ArrayList<OriginFilter> filters = new ArrayList<OriginFilter>();
+ for (IConnector connector : ConnectorFactory.getConnectors()) {
+ filters.add(new OriginFilter(connector));
+ }
+
+ // sort connectors by name
+ Collections.sort(filters, new Comparator<OriginFilter>() {
+
+ @Override
+ public int compare(OriginFilter lhs, OriginFilter rhs) {
+ return lhs.getName().compareToIgnoreCase(rhs.getName());
+ }
+ });
+
+ return filters.toArray(new OriginFilter[filters.size()]);
+ }
+
+ }
+}