aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/AbstractConnector.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/AbstractConnector.java')
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 4edb6d6..ea37553 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -1,8 +1,13 @@
package cgeo.geocaching.connector;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
+import cgeo.geocaching.connector.capability.ISearchByCenter;
+import cgeo.geocaching.connector.capability.ISearchByGeocode;
+import cgeo.geocaching.connector.capability.ISearchByKeyword;
+import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -10,6 +15,8 @@ import cgeo.geocaching.geopoint.Geopoint;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
+import android.text.Html;
+
import java.util.ArrayList;
import java.util.List;
@@ -206,4 +213,45 @@ public abstract class AbstractConnector implements IConnector {
public int getMaxTerrain() {
return 5;
}
+
+ @Override
+ public final String getCapabilitiesMessage() {
+ StringBuilder builder = new StringBuilder("<p>"
+ + CgeoApplication.getInstance().getString(R.string.feature_description) + "<ul>");
+ builder.append(capability(ISearchByViewPort.class, R.string.feature_search_live_map));
+ builder.append(capability(ISearchByKeyword.class, R.string.feature_search_keyword));
+ builder.append(capability(ISearchByCenter.class, R.string.feature_search_center));
+ builder.append(capability(ISearchByGeocode.class, R.string.feature_search_geocode));
+ if (supportsUserActions()) {
+ builder.append(feature(R.string.feature_search_user));
+ }
+ if (supportsLogging()) {
+ builder.append(feature(R.string.feature_online_logging));
+ }
+ if (supportsLogImages()) {
+ builder.append(feature(R.string.feature_log_images));
+ }
+ if (supportsPersonalNote()) {
+ builder.append(feature(R.string.feature_personal_notes));
+ }
+ if (supportsOwnCoordinates()) {
+ builder.append(feature(R.string.feature_own_coordinates));
+ }
+ if (supportsWatchList()) {
+ builder.append(feature(R.string.feature_watch_list));
+ }
+ builder.append("</ul></p>");
+ return builder.toString();
+ }
+
+ private String capability(Class<? extends IConnector> clazz, final int featureResourceId) {
+ if (clazz.isInstance(this)) {
+ return feature(featureResourceId);
+ }
+ return StringUtils.EMPTY;
+ }
+
+ private static String feature(int featureResourceId) {
+ return "<li>" + Html.escapeHtml(CgeoApplication.getInstance().getString(featureResourceId)) + "</li>";
+ }
}