diff options
| author | rsudev <rasch@munin-soft.de> | 2013-05-28 23:17:56 -0700 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2013-05-28 23:17:56 -0700 |
| commit | f6779ac30d6ac1357d67654ea17afa1f1d6fa770 (patch) | |
| tree | e1e84fca95948ef7ba13be7e12809388b24d3267 /main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java | |
| parent | d6f1bc648361076c3b2038a6ab9b175e1de39b3d (diff) | |
| parent | a7de49db675048db5ae0c05ccd730a8579e6876e (diff) | |
| download | cgeo-f6779ac30d6ac1357d67654ea17afa1f1d6fa770.zip cgeo-f6779ac30d6ac1357d67654ea17afa1f1d6fa770.tar.gz cgeo-f6779ac30d6ac1357d67654ea17afa1f1d6fa770.tar.bz2 | |
Merge pull request #2787 from rsudev/ocde_okapi_2
Implements OKAPI access for opencaching.de
Diffstat (limited to 'main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java new file mode 100644 index 0000000..4e57831 --- /dev/null +++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java @@ -0,0 +1,82 @@ +package cgeo.geocaching.connector.oc; + +import cgeo.geocaching.Geocache; +import cgeo.geocaching.SearchResult; +import cgeo.geocaching.cgData; +import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.connector.ILoggingManager; +import cgeo.geocaching.connector.capability.ISearchByCenter; +import cgeo.geocaching.connector.capability.ISearchByViewPort; +import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.geopoint.Viewport; +import cgeo.geocaching.utils.CryptUtils; + +import android.app.Activity; + +public class OCApiLiveConnector extends OCApiConnector implements ISearchByCenter, ISearchByViewPort { + + private String cS; + + public OCApiLiveConnector(String name, String host, String prefix, int cKResId, int cSResId) { + super(name, host, prefix, CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cKResId))); + + cS = CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cSResId)); + } + + @Override + public SearchResult searchByViewport(Viewport viewport, String[] tokens) { + return new SearchResult(OkapiClient.getCachesBBox(viewport, this)); + } + + @Override + public SearchResult searchByCenter(Geopoint center) { + + return new SearchResult(OkapiClient.getCachesAround(center, this)); + } + + public String getCS() { + return CryptUtils.rot13(cS); + } + + @Override + public boolean supportsWatchList() { + return true; + } + + @Override + public boolean addToWatchlist(Geocache cache) { + final boolean added = OkapiClient.setWatchState(cache, true, this); + + if (added) { + cgData.saveChangedCache(cache); + } + + return added; + } + + @Override + public boolean removeFromWatchlist(Geocache cache) { + final boolean removed = OkapiClient.setWatchState(cache, false, this); + + if (removed) { + cgData.saveChangedCache(cache); + } + + return removed; + } + + @Override + public boolean supportsLogging() { + return true; + } + + @Override + public ILoggingManager getLoggingManager(Activity activity, Geocache cache) { + return new OkapiLoggingManager(activity, this, cache); + } + + @Override + public boolean canLog(Geocache cache) { + return true; + } +} |
