diff options
| -rw-r--r-- | main/res/values-de/strings.xml | 1 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterUserInterface.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/OriginFilter.java | 47 |
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()]); + } + + } +} |
