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.java54
1 files changed, 46 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 9e1d17a..ac9246e 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -1,9 +1,12 @@
package cgeo.geocaching.connector;
+import cgeo.contacts.ContactsAddon;
+import cgeo.geocaching.CacheListActivity;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
+import cgeo.geocaching.connector.UserAction.Context;
import cgeo.geocaching.connector.capability.ISearchByCenter;
import cgeo.geocaching.connector.capability.ISearchByGeocode;
import cgeo.geocaching.connector.capability.ISearchByKeyword;
@@ -11,6 +14,7 @@ import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
@@ -99,11 +103,6 @@ public abstract class AbstractConnector implements IConnector {
return null;
}
- @Override
- public boolean supportsUserActions() {
- return false;
- }
-
protected static boolean isNumericId(final String string) {
try {
return Integer.parseInt(string) > 0;
@@ -218,9 +217,6 @@ public abstract class AbstractConnector implements IConnector {
addCapability(builder, ISearchByKeyword.class, R.string.feature_search_keyword);
addCapability(builder, ISearchByCenter.class, R.string.feature_search_center);
addCapability(builder, ISearchByGeocode.class, R.string.feature_search_geocode);
- if (supportsUserActions()) {
- builder.add(feature(R.string.feature_search_user));
- }
if (supportsLogging()) {
builder.add(feature(R.string.feature_online_logging));
}
@@ -248,4 +244,46 @@ public abstract class AbstractConnector implements IConnector {
private static String feature(int featureResourceId) {
return CgeoApplication.getInstance().getString(featureResourceId);
}
+
+ @Override
+ public @NonNull
+ List<UserAction> getUserActions() {
+ return getDefaultUserActions();
+ }
+
+ /**
+ * @return user actions which are always available (independent of cache or trackable)
+ */
+ static @NonNull
+ public List<UserAction> getDefaultUserActions() {
+ final ArrayList<UserAction> actions = new ArrayList<UserAction>();
+ if (ContactsAddon.isAvailable()) {
+ actions.add(new UserAction(R.string.user_menu_open_contact, new RunnableWithArgument<UserAction.Context>() {
+
+ @Override
+ public void run(Context context) {
+ ContactsAddon.openContactCard(context.activity, context.userName);
+ }
+ }));
+ }
+
+ actions.add(new UserAction(R.string.user_menu_view_hidden, new RunnableWithArgument<UserAction.Context>() {
+
+ @Override
+ public void run(Context context) {
+ CacheListActivity.startActivityOwner(context.activity, context.userName);
+ }
+ }));
+
+ actions.add(new UserAction(R.string.user_menu_view_found, new RunnableWithArgument<UserAction.Context>() {
+
+ @Override
+ public void run(Context context) {
+ CacheListActivity.startActivityUserName(context.activity, context.userName);
+ }
+ }));
+
+ return actions;
+ }
+
}