diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-02-13 18:42:42 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-02-13 18:42:42 +0100 |
| commit | c0d1eeeeb3721c49f989cb256cad0a196ad0ed1d (patch) | |
| tree | 59ca43ec291247ef1030461fb4828113e597cdc5 /main | |
| parent | 0ca4a72628258d4b91c54e61f6e7e9c32a605bae (diff) | |
| download | cgeo-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.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()]); + } + + } +} |
