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/src | |
| 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/src')
| -rw-r--r-- | main/src/cgeo/geocaching/filter/FilterUserInterface.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/filter/OriginFilter.java | 47 |
2 files changed, 48 insertions, 0 deletions
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()]); + } + + } +} |
