aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-12-18 10:47:02 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-12-18 10:47:02 +0100
commit32b0322d35cc42c989778b7fece66ec2d47be5c7 (patch)
tree9c365f85f130296b83f748af66723655cf1e87a0 /main/src/cgeo/geocaching
parent542e63300e4f0d5f6a3dad4b3e69977d5db13eb6 (diff)
downloadcgeo-32b0322d35cc42c989778b7fece66ec2d47be5c7.zip
cgeo-32b0322d35cc42c989778b7fece66ec2d47be5c7.tar.gz
cgeo-32b0322d35cc42c989778b7fece66ec2d47be5c7.tar.bz2
refactoring: generalize GCConnector capabilities implementation
Diffstat (limited to 'main/src/cgeo/geocaching')
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java2
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java34
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java37
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java7
-rw-r--r--main/src/cgeo/geocaching/connector/capability/ISearchByCenter.java3
-rw-r--r--main/src/cgeo/geocaching/connector/capability/ISearchByKeyword.java8
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECConnector.java3
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java19
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java4
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java5
-rw-r--r--main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java13
-rw-r--r--main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java7
-rw-r--r--main/src/cgeo/geocaching/settings/CapabilitiesPreference.java11
14 files changed, 73 insertions, 85 deletions
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java
index 8226f38..575c0ba 100644
--- a/main/src/cgeo/geocaching/CacheListActivity.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -1631,7 +1631,7 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
}
if (coords != null) {
loader = new CoordsGeocacheListLoader(app, coords);
- }
+ }
else {
loader = new AddressGeocacheListLoader(app, address);
}
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 2989fb2..ffb1b1f 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public abstract class AbstractConnector implements IConnector {
@@ -142,9 +143,6 @@ public abstract class AbstractConnector implements IConnector {
return getCacheUrl(cache);
}
- /**
- * {@link IConnector}
- */
@Override
public boolean isActive() {
return false;
@@ -213,33 +211,31 @@ public abstract class AbstractConnector implements IConnector {
}
@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));
+ public final Collection<String> getCapabilities() {
+ ArrayList<String> builder = new ArrayList<String>();
+ builder.add(capability(ISearchByViewPort.class, R.string.feature_search_live_map));
+ builder.add(capability(ISearchByKeyword.class, R.string.feature_search_keyword));
+ builder.add(capability(ISearchByCenter.class, R.string.feature_search_center));
+ builder.add(capability(ISearchByGeocode.class, R.string.feature_search_geocode));
if (supportsUserActions()) {
- builder.append(feature(R.string.feature_search_user));
+ builder.add(feature(R.string.feature_search_user));
}
if (supportsLogging()) {
- builder.append(feature(R.string.feature_online_logging));
+ builder.add(feature(R.string.feature_online_logging));
}
if (supportsLogImages()) {
- builder.append(feature(R.string.feature_log_images));
+ builder.add(feature(R.string.feature_log_images));
}
if (supportsPersonalNote()) {
- builder.append(feature(R.string.feature_personal_notes));
+ builder.add(feature(R.string.feature_personal_notes));
}
if (supportsOwnCoordinates()) {
- builder.append(feature(R.string.feature_own_coordinates));
+ builder.add(feature(R.string.feature_own_coordinates));
}
if (supportsWatchList()) {
- builder.append(feature(R.string.feature_watch_list));
+ builder.add(feature(R.string.feature_watch_list));
}
- builder.append("</ul></p>");
- return builder.toString();
+ return builder;
}
private String capability(Class<? extends IConnector> clazz, final int featureResourceId) {
@@ -250,6 +246,6 @@ public abstract class AbstractConnector implements IConnector {
}
private static String feature(int featureResourceId) {
- return "<li>" + CgeoApplication.getInstance().getString(featureResourceId) + "</li>";
+ return CgeoApplication.getInstance().getString(featureResourceId);
}
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 8de6070..032d74c 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -24,6 +24,7 @@ import cgeo.geocaching.geopoint.Viewport;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
+import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
@@ -60,38 +61,22 @@ public final class ConnectorFactory {
UNKNOWN_TRACKABLE_CONNECTOR // must be last
};
- private static final ISearchByViewPort[] searchByViewPortConns;
+ private static final ISearchByViewPort[] searchByViewPortConns = getMatchingConnectors(ISearchByViewPort.class);
- private static final ISearchByCenter[] searchByCenterConns;
+ private static final ISearchByCenter[] searchByCenterConns = getMatchingConnectors(ISearchByCenter.class);
- private static final ISearchByKeyword[] searchByKeywordConns;
+ private static final ISearchByKeyword[] searchByKeywordConns = getMatchingConnectors(ISearchByKeyword.class);
- static {
- final List<ISearchByViewPort> vpConns = new ArrayList<ISearchByViewPort>();
+ @SuppressWarnings("unchecked")
+ private static <T extends IConnector> T[] getMatchingConnectors(final Class<T> clazz) {
+ final List<T> matching = new ArrayList<T>();
for (final IConnector conn : CONNECTORS) {
- if (conn instanceof ISearchByViewPort) {
- vpConns.add((ISearchByViewPort) conn);
+ if (clazz.isInstance(conn)) {
+ matching.add((T) conn);
}
}
- searchByViewPortConns = vpConns.toArray(new ISearchByViewPort[vpConns.size()]);
-
- final List<ISearchByCenter> centerConns = new ArrayList<ISearchByCenter>();
- for (final IConnector conn : CONNECTORS) {
- // GCConnector is handled specially, omit it here!
- if (conn instanceof ISearchByCenter && !(conn instanceof GCConnector)) {
- centerConns.add((ISearchByCenter) conn);
- }
- }
- searchByCenterConns = centerConns.toArray(new ISearchByCenter[centerConns.size()]);
-
- final List<ISearchByKeyword> keywordConns = new ArrayList<ISearchByKeyword>();
- for (final IConnector conn : CONNECTORS) {
- // GCConnector is handled specially, omit it here!
- if (conn instanceof ISearchByKeyword && !(conn instanceof GCConnector)) {
- keywordConns.add((ISearchByKeyword) conn);
- }
- }
- searchByKeywordConns = keywordConns.toArray(new ISearchByKeyword[keywordConns.size()]);
+ T[] result = (T[]) Array.newInstance(clazz, matching.size());
+ return matching.toArray(result);
}
public static IConnector[] getConnectors() {
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 04787b3..34922f5 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -8,6 +8,7 @@ import cgeo.geocaching.geopoint.Geopoint;
import org.eclipse.jdt.annotation.NonNull;
+import java.util.Collection;
import java.util.List;
public interface IConnector {
@@ -249,9 +250,9 @@ public interface IConnector {
public int getMaxTerrain();
/**
- * Creates a text listing all features of this connector to be displayed to the user.
- *
+ * Get a user readable collection of all online features of this connector.
+ *
* @return
*/
- public String getCapabilitiesMessage();
+ public Collection<String> getCapabilities();
}
diff --git a/main/src/cgeo/geocaching/connector/capability/ISearchByCenter.java b/main/src/cgeo/geocaching/connector/capability/ISearchByCenter.java
index 94e31cd..adc36c7 100644
--- a/main/src/cgeo/geocaching/connector/capability/ISearchByCenter.java
+++ b/main/src/cgeo/geocaching/connector/capability/ISearchByCenter.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.connector.capability;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import org.eclipse.jdt.annotation.NonNull;
@@ -11,5 +12,5 @@ import org.eclipse.jdt.annotation.NonNull;
*
*/
public interface ISearchByCenter extends IConnector {
- public SearchResult searchByCenter(final @NonNull Geopoint center);
+ public SearchResult searchByCenter(final @NonNull Geopoint center, final @NonNull RecaptchaReceiver recaptchaReceiver);
}
diff --git a/main/src/cgeo/geocaching/connector/capability/ISearchByKeyword.java b/main/src/cgeo/geocaching/connector/capability/ISearchByKeyword.java
index 07cb7b3..9b3e6eb 100644
--- a/main/src/cgeo/geocaching/connector/capability/ISearchByKeyword.java
+++ b/main/src/cgeo/geocaching/connector/capability/ISearchByKeyword.java
@@ -2,13 +2,15 @@ package cgeo.geocaching.connector.capability;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.IConnector;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import org.eclipse.jdt.annotation.NonNull;
/**
- * connector capability of searching online for a cache by name
- *
+ * Connector capability of searching online for a cache by keyword.
+ *
*/
public interface ISearchByKeyword extends IConnector {
- public SearchResult searchByName(final @NonNull String name);
+ // TODO: The recaptcha receiver is only needed for GC. Would be good to refactor this away from the generic interface.
+ public SearchResult searchByKeyword(final @NonNull String keyword, final @NonNull RecaptchaReceiver recaptchaReceiver);
}
diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
index 2535c61..9a1146e 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
@@ -16,6 +16,7 @@ import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.utils.CancellableHandler;
@@ -100,7 +101,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public SearchResult searchByCenter(@NonNull Geopoint center) {
+ public SearchResult searchByCenter(@NonNull Geopoint center, final @NonNull RecaptchaReceiver recaptchaReceiver) {
final Collection<Geocache> caches = ECApi.searchByCenter(center);
if (caches == null) {
return null;
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index aea0bca..0f4388a 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -17,6 +17,7 @@ import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.utils.CancellableHandler;
@@ -206,9 +207,9 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
/**
* Add a cache to the favorites list.
- *
+ *
* This must not be called from the UI thread.
- *
+ *
* @param cache
* the cache to add
* @return <code>true</code> if the cache was successfully added, <code>false</code> otherwise
@@ -224,9 +225,9 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
/**
* Remove a cache from the favorites list.
- *
+ *
* This must not be called from the UI thread.
- *
+ *
* @param cache
* the cache to add
* @return <code>true</code> if the cache was successfully added, <code>false</code> otherwise
@@ -268,9 +269,8 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public SearchResult searchByCenter(@NonNull Geopoint center) {
- // TODO make search by coordinate use this method. currently it is just a marker that this connector supports search by center
- return null;
+ public SearchResult searchByCenter(@NonNull Geopoint center, final @NonNull RecaptchaReceiver recaptchaReceiver) {
+ return GCParser.searchByCoords(center, Settings.getCacheType(), Settings.isShowCaptcha(), recaptchaReceiver);
}
@Override
@@ -357,8 +357,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public SearchResult searchByName(@NonNull String name) {
- // TODO make the connector use this method. Currently it is only a marker interface.
- return null;
+ public SearchResult searchByKeyword(@NonNull String keyword, final @NonNull RecaptchaReceiver recaptchaReceiver) {
+ return GCParser.searchByKeyword(keyword, Settings.getCacheType(), Settings.isShowCaptcha(), recaptchaReceiver);
}
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index ce1a74b..46f283a 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -871,12 +871,12 @@ public abstract class GCParser {
return search;
}
- public static SearchResult searchByCoords(final Geopoint coords, final CacheType cacheType, final boolean showCaptcha, RecaptchaReceiver recaptchaReceiver) {
+ public static SearchResult searchByCoords(final @NonNull Geopoint coords, final CacheType cacheType, final boolean showCaptcha, RecaptchaReceiver recaptchaReceiver) {
final Parameters params = new Parameters("lat", Double.toString(coords.getLatitude()), "lng", Double.toString(coords.getLongitude()));
return searchByAny(cacheType, false, showCaptcha, params, recaptchaReceiver);
}
- public static SearchResult searchByKeyword(final String keyword, final CacheType cacheType, final boolean showCaptcha, RecaptchaReceiver recaptchaReceiver) {
+ public static SearchResult searchByKeyword(final @NonNull String keyword, final CacheType cacheType, final boolean showCaptcha, RecaptchaReceiver recaptchaReceiver) {
if (StringUtils.isBlank(keyword)) {
Log.e("GCParser.searchByKeyword: No keyword given");
return null;
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
index 9ae1872..b038e8c 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
@@ -13,6 +13,7 @@ import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.connector.oc.UserInfo.UserInfoStatus;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CryptUtils;
@@ -50,7 +51,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
}
@Override
- public SearchResult searchByCenter(@NonNull Geopoint center) {
+ public SearchResult searchByCenter(@NonNull Geopoint center, final @NonNull RecaptchaReceiver recaptchaReceiver) {
return new SearchResult(OkapiClient.getCachesAround(center, this));
}
@@ -156,7 +157,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
}
@Override
- public SearchResult searchByName(final @NonNull String name) {
+ public SearchResult searchByKeyword(final @NonNull String name, final @NonNull RecaptchaReceiver recaptchaReceiver) {
final Geopoint currentPos = CgeoApplication.getInstance().currentGeo().getCoords();
return new SearchResult(OkapiClient.getCachesNamed(currentPos, name, this));
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
index 0cd49c3..81d491c 100644
--- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
@@ -10,6 +10,7 @@ import cgeo.geocaching.connector.capability.ISearchByKeyword;
import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CancellableHandler;
@@ -72,7 +73,7 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
@Override
- public SearchResult searchByCenter(@NonNull Geopoint center) {
+ public SearchResult searchByCenter(@NonNull Geopoint center, final @NonNull RecaptchaReceiver recaptchaReceiver) {
return createSearchResult(OpenCachingApi.searchByCenter(center));
}
@@ -92,7 +93,7 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
@Override
- public SearchResult searchByName(final @NonNull String name) {
+ public SearchResult searchByKeyword(final @NonNull String name, final @NonNull RecaptchaReceiver recaptchaReceiver) {
return createSearchResult(OpenCachingApi.searchByKeyword(name));
}
diff --git a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
index d070d71..3874b47 100644
--- a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
@@ -1,18 +1,18 @@
package cgeo.geocaching.loaders;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ISearchByCenter;
-import cgeo.geocaching.connector.gc.GCParser;
import cgeo.geocaching.geopoint.Geopoint;
+import org.eclipse.jdt.annotation.NonNull;
+
import android.content.Context;
public class CoordsGeocacheListLoader extends AbstractSearchLoader {
- private final Geopoint coords;
+ private final @NonNull Geopoint coords;
- public CoordsGeocacheListLoader(Context context, Geopoint coords) {
+ public CoordsGeocacheListLoader(final Context context, final @NonNull Geopoint coords) {
super(context);
this.coords = coords;
}
@@ -21,13 +21,10 @@ public class CoordsGeocacheListLoader extends AbstractSearchLoader {
public SearchResult runSearch() {
SearchResult search = new SearchResult();
- if (Settings.isGCConnectorActive()) {
- search = GCParser.searchByCoords(coords, Settings.getCacheType(), Settings.isShowCaptcha(), this);
- }
for (ISearchByCenter centerConn : ConnectorFactory.getSearchByCenterConnectors()) {
if (centerConn.isActive()) {
- search.addSearchResult(centerConn.searchByCenter(coords));
+ search.addSearchResult(centerConn.searchByCenter(coords, this));
}
}
diff --git a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
index 0d8fcb1..c8deb59 100644
--- a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
@@ -3,8 +3,6 @@ package cgeo.geocaching.loaders;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ISearchByKeyword;
-import cgeo.geocaching.connector.gc.GCParser;
-import cgeo.geocaching.settings.Settings;
import android.content.Context;
@@ -20,13 +18,10 @@ public class KeywordGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
SearchResult searchResult = new SearchResult();
- if (Settings.isGCConnectorActive()) {
- searchResult = GCParser.searchByKeyword(keyword, Settings.getCacheType(), Settings.isShowCaptcha(), this);
- }
for (ISearchByKeyword connector : ConnectorFactory.getSearchByKeywordConnectors()) {
if (connector.isActive()) {
- searchResult.addSearchResult(connector.searchByName(keyword));
+ searchResult.addSearchResult(connector.searchByKeyword(keyword, this));
}
}
diff --git a/main/src/cgeo/geocaching/settings/CapabilitiesPreference.java b/main/src/cgeo/geocaching/settings/CapabilitiesPreference.java
index d7e55a4..d2e19b7 100644
--- a/main/src/cgeo/geocaching/settings/CapabilitiesPreference.java
+++ b/main/src/cgeo/geocaching/settings/CapabilitiesPreference.java
@@ -1,5 +1,6 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
@@ -67,7 +68,15 @@ public class CapabilitiesPreference extends AbstractAttributeBasedPrefence {
if (connector == null) {
return StringUtils.EMPTY;
}
- return connector.getCapabilitiesMessage();
+ StringBuilder builder = new StringBuilder("<p>"
+ + CgeoApplication.getInstance().getString(R.string.feature_description) + "<ul>");
+
+ for (String capability : connector.getCapabilities()) {
+ builder.append("<li>").append(capability).append("</li>");
+ }
+
+ builder.append("</ul></p>");
+ return builder.toString();
}
@Override