aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/contacts/ContactsAddon.java24
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java9
-rw-r--r--main/src/cgeo/geocaching/Geocache.java4
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java6
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java54
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java8
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java12
-rw-r--r--main/src/cgeo/geocaching/connector/UserAction.java32
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java33
-rw-r--r--main/src/cgeo/geocaching/connector/trackable/AbstractTrackableConnector.java11
-rw-r--r--main/src/cgeo/geocaching/connector/trackable/TrackableConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/trackable/TravelBugConnector.java10
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractUserClickListener.java82
-rw-r--r--main/src/cgeo/geocaching/ui/OwnerActionsClickListener.java3
-rw-r--r--main/src/cgeo/geocaching/ui/UserActionsClickListener.java10
-rw-r--r--main/src/cgeo/geocaching/ui/UserNameClickListener.java9
-rw-r--r--main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java2
17 files changed, 212 insertions, 103 deletions
diff --git a/main/src/cgeo/contacts/ContactsAddon.java b/main/src/cgeo/contacts/ContactsAddon.java
new file mode 100644
index 0000000..f2498ea
--- /dev/null
+++ b/main/src/cgeo/contacts/ContactsAddon.java
@@ -0,0 +1,24 @@
+package cgeo.contacts;
+
+import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.utils.ProcessUtils;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+
+public class ContactsAddon {
+ public static void openContactCard(Activity context, String userName) {
+ final Parameters params = new Parameters(
+ IContacts.PARAM_NAME, userName
+ );
+
+ context.startActivity(new Intent(IContacts.INTENT,
+ Uri.parse(IContacts.URI_SCHEME + "://" + IContacts.URI_HOST + "?" + params.toString())));
+ }
+
+ public static boolean isAvailable() {
+ return ProcessUtils.isIntentAvailable(IContacts.INTENT, Uri.parse(IContacts.URI_SCHEME + "://" + IContacts.URI_HOST));
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java
index b5ed949..5b6527a 100644
--- a/main/src/cgeo/geocaching/CacheListActivity.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -2,6 +2,7 @@ package cgeo.geocaching;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.activity.AbstractListActivity;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.FilteredActivity;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
@@ -1463,7 +1464,7 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
context.startActivity(cachesIntent);
}
- public static void startActivityOwner(final AbstractActivity context, final String userName) {
+ public static void startActivityOwner(final Activity context, final String userName) {
if (!isValidUsername(context, userName)) {
return;
}
@@ -1473,15 +1474,15 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
context.startActivity(cachesIntent);
}
- private static boolean isValidUsername(AbstractActivity context, String username) {
+ private static boolean isValidUsername(final Activity context, final String username) {
if (StringUtils.isBlank(username)) {
- context.showToast(CgeoApplication.getInstance().getString(R.string.warn_no_username));
+ ActivityMixin.showToast(context, R.string.warn_no_username);
return false;
}
return true;
}
- public static void startActivityUserName(final AbstractActivity context, final String userName) {
+ public static void startActivityUserName(final Activity context, final String userName) {
if (!isValidUsername(context, userName)) {
return;
}
diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java
index a8662a2..156c4b6 100644
--- a/main/src/cgeo/geocaching/Geocache.java
+++ b/main/src/cgeo/geocaching/Geocache.java
@@ -705,10 +705,6 @@ public class Geocache implements ICache, IWaypoint {
return StringUtils.defaultIfBlank(personalNote, null);
}
- public boolean supportsUserActions() {
- return getConnector().supportsUserActions();
- }
-
public boolean supportsCachesAround() {
return getConnector() instanceof ISearchByCenter;
}
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index 973f8c2..dcfd80a 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -378,7 +378,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
final TextView owner = details.add(R.string.trackable_owner, res.getString(R.string.trackable_unknown));
if (StringUtils.isNotBlank(trackable.getOwner())) {
owner.setText(Html.fromHtml(trackable.getOwner()), TextView.BufferType.SPANNABLE);
- owner.setOnClickListener(new UserActionsClickListener());
+ owner.setOnClickListener(new UserActionsClickListener(trackable));
}
// trackable spotted
@@ -431,9 +431,9 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
}
});
} else if (Trackable.SPOTTED_USER == trackable.getSpottedType()) {
- spotted.setOnClickListener(new UserNameClickListener(Html.fromHtml(trackable.getSpottedName()).toString()));
+ spotted.setOnClickListener(new UserNameClickListener(trackable, Html.fromHtml(trackable.getSpottedName()).toString()));
} else if (Trackable.SPOTTED_OWNER == trackable.getSpottedType()) {
- spotted.setOnClickListener(new UserNameClickListener(Html.fromHtml(trackable.getOwner()).toString()));
+ spotted.setOnClickListener(new UserNameClickListener(trackable, Html.fromHtml(trackable.getOwner()).toString()));
}
}
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;
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 16f5e0e..41e4e37 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -33,7 +33,7 @@ import java.util.Collections;
import java.util.List;
public final class ConnectorFactory {
- private static final UnknownConnector UNKNOWN_CONNECTOR = new UnknownConnector();
+ private static final @NonNull UnknownConnector UNKNOWN_CONNECTOR = new UnknownConnector();
private static final Collection<IConnector> CONNECTORS = Collections.unmodifiableCollection(Arrays.asList(new IConnector[] {
GCConnector.getInstance(),
ECConnector.getInstance(),
@@ -119,7 +119,8 @@ public final class ConnectorFactory {
return false;
}
- public static IConnector getConnector(ICache cache) {
+ public static @NonNull
+ IConnector getConnector(ICache cache) {
return getConnector(cache.getGeocode());
}
@@ -137,7 +138,8 @@ public final class ConnectorFactory {
return UNKNOWN_TRACKABLE_CONNECTOR; // avoid null checks by returning a non implementing connector
}
- public static IConnector getConnector(final String geocodeInput) {
+ public static @NonNull
+ IConnector getConnector(final String geocodeInput) {
// this may come from user input
final String geocode = StringUtils.trim(geocodeInput);
if (geocode == null) {
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 34922f5..fbade5a 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -111,13 +111,6 @@ public interface IConnector {
public String getLicenseText(final @NonNull Geocache cache);
/**
- * enable/disable user actions in cache details
- *
- * @return
- */
- public boolean supportsUserActions();
-
- /**
* return true if this is a ZIP file containing a GPX file
*
* @param fileName
@@ -251,8 +244,11 @@ public interface IConnector {
/**
* Get a user readable collection of all online features of this connector.
- *
+ *
* @return
*/
public Collection<String> getCapabilities();
+
+ public @NonNull
+ List<UserAction> getUserActions();
}
diff --git a/main/src/cgeo/geocaching/connector/UserAction.java b/main/src/cgeo/geocaching/connector/UserAction.java
new file mode 100644
index 0000000..d0c97bb
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/UserAction.java
@@ -0,0 +1,32 @@
+package cgeo.geocaching.connector;
+
+import cgeo.geocaching.utils.RunnableWithArgument;
+
+import org.eclipse.jdt.annotation.NonNull;
+
+import android.app.Activity;
+
+public class UserAction {
+
+ public static class Context {
+ public final String userName;
+ public final Activity activity;
+
+ public Context(String userName, Activity activity) {
+ this.userName = userName;
+ this.activity = activity;
+ }
+ }
+
+ public final int displayResourceId;
+ private final @NonNull RunnableWithArgument<Context> runnable;
+
+ public UserAction(int displayResourceId, final @NonNull RunnableWithArgument<UserAction.Context> runnable) {
+ this.displayResourceId = displayResourceId;
+ this.runnable = runnable;
+ }
+
+ public void run(Context context) {
+ runnable.run(context);
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 5557954..4d304a3 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -9,6 +9,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.connector.ILoggingManager;
+import cgeo.geocaching.connector.UserAction;
import cgeo.geocaching.connector.capability.ICredentials;
import cgeo.geocaching.connector.capability.ILogin;
import cgeo.geocaching.connector.capability.ISearchByCenter;
@@ -19,10 +20,12 @@ import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.loaders.RecaptchaReceiver;
+import cgeo.geocaching.network.Network;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -30,8 +33,11 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
import android.os.Handler;
+import java.util.List;
import java.util.regex.Pattern;
public class GCConnector extends AbstractConnector implements ISearchByGeocode, ISearchByCenter, ISearchByViewPort, ISearchByKeyword, ILogin, ICredentials {
@@ -127,11 +133,6 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean supportsUserActions() {
- return true;
- }
-
- @Override
public SearchResult searchByGeocode(final @Nullable String geocode, final @Nullable String guid, final CancellableHandler handler) {
CancellableHandler.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_loadpage);
@@ -371,4 +372,26 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public int getPasswordPreferenceKey() {
return R.string.pref_password;
}
+
+ @Override
+ public @NonNull
+ List<UserAction> getUserActions() {
+ List<UserAction> actions = super.getUserActions();
+ actions.add(new UserAction(R.string.user_menu_open_browser, new RunnableWithArgument<UserAction.Context>() {
+
+ @Override
+ public void run(cgeo.geocaching.connector.UserAction.Context context) {
+ context.activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/profile/?u=" + Network.encode(context.userName))));
+ }
+ }));
+ actions.add(new UserAction(R.string.user_menu_send_message, new RunnableWithArgument<UserAction.Context>() {
+
+ @Override
+ public void run(cgeo.geocaching.connector.UserAction.Context context) {
+ context.activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/email/?u=" + Network.encode(context.userName))));
+ }
+ }));
+ return actions;
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/trackable/AbstractTrackableConnector.java b/main/src/cgeo/geocaching/connector/trackable/AbstractTrackableConnector.java
index f251efe..69efddc 100644
--- a/main/src/cgeo/geocaching/connector/trackable/AbstractTrackableConnector.java
+++ b/main/src/cgeo/geocaching/connector/trackable/AbstractTrackableConnector.java
@@ -1,7 +1,12 @@
package cgeo.geocaching.connector.trackable;
+import cgeo.geocaching.connector.AbstractConnector;
+import cgeo.geocaching.connector.UserAction;
+
import org.eclipse.jdt.annotation.NonNull;
+import java.util.List;
+
public abstract class AbstractTrackableConnector implements TrackableConnector {
@Override
@@ -13,4 +18,10 @@ public abstract class AbstractTrackableConnector implements TrackableConnector {
public String getTrackableCodeFromUrl(@NonNull String url) {
return null;
}
+
+ @Override
+ public @NonNull
+ List<UserAction> getUserActions() {
+ return AbstractConnector.getDefaultUserActions();
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/trackable/TrackableConnector.java b/main/src/cgeo/geocaching/connector/trackable/TrackableConnector.java
index d1dfd7c..0990d96 100644
--- a/main/src/cgeo/geocaching/connector/trackable/TrackableConnector.java
+++ b/main/src/cgeo/geocaching/connector/trackable/TrackableConnector.java
@@ -1,9 +1,12 @@
package cgeo.geocaching.connector.trackable;
import cgeo.geocaching.Trackable;
+import cgeo.geocaching.connector.UserAction;
import org.eclipse.jdt.annotation.NonNull;
+import java.util.List;
+
/**
* Methods to be implemented by any connector for handling trackables
*
@@ -20,4 +23,7 @@ public interface TrackableConnector {
public String getTrackableCodeFromUrl(final @NonNull String url);
+ public @NonNull
+ List<UserAction> getUserActions();
+
}
diff --git a/main/src/cgeo/geocaching/connector/trackable/TravelBugConnector.java b/main/src/cgeo/geocaching/connector/trackable/TravelBugConnector.java
index 72af0bb..dad285c 100644
--- a/main/src/cgeo/geocaching/connector/trackable/TravelBugConnector.java
+++ b/main/src/cgeo/geocaching/connector/trackable/TravelBugConnector.java
@@ -1,11 +1,14 @@
package cgeo.geocaching.connector.trackable;
import cgeo.geocaching.Trackable;
+import cgeo.geocaching.connector.UserAction;
+import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.gc.GCParser;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
+import java.util.List;
import java.util.regex.Pattern;
public class TravelBugConnector extends AbstractTrackableConnector {
@@ -54,4 +57,11 @@ public class TravelBugConnector extends AbstractTrackableConnector {
public String getTrackableCodeFromUrl(@NonNull String url) {
return StringUtils.substringAfterLast(url, "?tracker=");
}
+
+ @Override
+ public @NonNull
+ List<UserAction> getUserActions() {
+ // travel bugs should have the same actions as GC caches
+ return GCConnector.getInstance().getUserActions();
+ }
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
index 6d8a246..2a78f07 100644
--- a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
+++ b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
@@ -1,30 +1,26 @@
package cgeo.geocaching.ui;
-import cgeo.contacts.IContacts;
-import cgeo.geocaching.CacheListActivity;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.AbstractActivity;
-import cgeo.geocaching.network.Network;
-import cgeo.geocaching.network.Parameters;
-import cgeo.geocaching.utils.ProcessUtils;
+import cgeo.geocaching.connector.UserAction;
+import cgeo.geocaching.connector.UserAction.Context;
+
+import org.eclipse.jdt.annotation.NonNull;
import android.app.AlertDialog;
import android.content.DialogInterface;
-import android.content.Intent;
import android.content.res.Resources;
-import android.net.Uri;
import android.view.View;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
abstract class AbstractUserClickListener implements View.OnClickListener {
- private final boolean enabled;
+ private final List<UserAction> userActions;
- public AbstractUserClickListener(final boolean enabled) {
- this.enabled = enabled;
+ public AbstractUserClickListener(final @NonNull List<UserAction> userActions) {
+ this.userActions = userActions;
}
@Override
@@ -32,71 +28,39 @@ abstract class AbstractUserClickListener implements View.OnClickListener {
if (view == null) {
return;
}
- if (!enabled) {
- return;
- }
showUserActionsDialog(getUserName(view), view);
}
- protected abstract CharSequence getUserName(View view);
+ protected abstract String getUserName(View view);
/**
* Opens a dialog to do actions on an user name
*/
- protected static void showUserActionsDialog(final CharSequence name, final View view) {
- final AbstractActivity context = (AbstractActivity) view.getContext();
- final Resources res = context.getResources();
- List<String> actions = new ArrayList<String>(Arrays.asList(res.getString(R.string.user_menu_view_hidden),
- res.getString(R.string.user_menu_view_found),
- res.getString(R.string.user_menu_open_browser),
- res.getString(R.string.user_menu_send_message)));
- if (isContactsAddonAvailable()) {
- actions.add(res.getString(R.string.user_menu_open_contact));
+ private void showUserActionsDialog(final String userName, final View view) {
+ if (userActions.isEmpty()) {
+ return;
+ }
+
+ final AbstractActivity activity = (AbstractActivity) view.getContext();
+ final Resources res = activity.getResources();
+
+ ArrayList<String> labels = new ArrayList<String>(userActions.size());
+ for (UserAction action : userActions) {
+ labels.add(res.getString(action.displayResourceId));
}
- final CharSequence[] items = actions.toArray(new String[actions.size()]);
+ final CharSequence[] items = labels.toArray(new String[labels.size()]);
- final AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(res.getString(R.string.user_menu_title) + " " + name);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(res.getString(R.string.user_menu_title) + " " + userName);
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
- switch (item) {
- case 0:
- CacheListActivity.startActivityOwner(context, name.toString());
- return;
- case 1:
- CacheListActivity.startActivityUserName(context, name.toString());
- return;
- case 2:
- context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/profile/?u=" + Network.encode(name.toString()))));
- return;
- case 3:
- context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/email/?u=" + Network.encode(name.toString()))));
- return;
- case 4:
- openContactCard(context, name.toString());
- return;
- default:
- break;
- }
+ userActions.get(item).run(new Context(userName, activity));
}
});
final AlertDialog alert = builder.create();
alert.show();
}
- protected static void openContactCard(AbstractActivity context, String userName) {
- final Parameters params = new Parameters(
- IContacts.PARAM_NAME, userName
- );
-
- context.startActivity(new Intent(IContacts.INTENT,
- Uri.parse(IContacts.URI_SCHEME + "://" + IContacts.URI_HOST + "?" + params.toString())));
- }
-
- private static boolean isContactsAddonAvailable() {
- return ProcessUtils.isIntentAvailable(IContacts.INTENT, Uri.parse(IContacts.URI_SCHEME + "://" + IContacts.URI_HOST));
- }
-
}
diff --git a/main/src/cgeo/geocaching/ui/OwnerActionsClickListener.java b/main/src/cgeo/geocaching/ui/OwnerActionsClickListener.java
index 45ce237..acd43cb 100644
--- a/main/src/cgeo/geocaching/ui/OwnerActionsClickListener.java
+++ b/main/src/cgeo/geocaching/ui/OwnerActionsClickListener.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.connector.ConnectorFactory;
import org.apache.commons.lang3.StringUtils;
@@ -15,7 +16,7 @@ public class OwnerActionsClickListener extends AbstractUserClickListener {
private final Geocache cache;
public OwnerActionsClickListener(Geocache cache) {
- super(cache.supportsUserActions());
+ super(ConnectorFactory.getConnector(cache).getUserActions());
this.cache = cache;
}
diff --git a/main/src/cgeo/geocaching/ui/UserActionsClickListener.java b/main/src/cgeo/geocaching/ui/UserActionsClickListener.java
index 292074e..19946bc 100644
--- a/main/src/cgeo/geocaching/ui/UserActionsClickListener.java
+++ b/main/src/cgeo/geocaching/ui/UserActionsClickListener.java
@@ -1,6 +1,8 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.Trackable;
+import cgeo.geocaching.connector.ConnectorFactory;
import android.view.View;
import android.widget.TextView;
@@ -11,15 +13,15 @@ import android.widget.TextView;
public class UserActionsClickListener extends AbstractUserClickListener {
public UserActionsClickListener(Geocache cache) {
- super(cache.supportsUserActions());
+ super(ConnectorFactory.getConnector(cache).getUserActions());
}
- public UserActionsClickListener() {
- super(true);
+ public UserActionsClickListener(Trackable trackable) {
+ super(ConnectorFactory.getConnector(trackable).getUserActions());
}
@Override
- protected CharSequence getUserName(View view) {
+ protected String getUserName(View view) {
return ((TextView) view).getText().toString();
}
}
diff --git a/main/src/cgeo/geocaching/ui/UserNameClickListener.java b/main/src/cgeo/geocaching/ui/UserNameClickListener.java
index 190dfde..0cbabb0 100644
--- a/main/src/cgeo/geocaching/ui/UserNameClickListener.java
+++ b/main/src/cgeo/geocaching/ui/UserNameClickListener.java
@@ -1,18 +1,21 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.Trackable;
+import cgeo.geocaching.connector.ConnectorFactory;
+
import android.view.View;
public class UserNameClickListener extends AbstractUserClickListener {
final private String name;
- public UserNameClickListener(final String name) {
- super(true);
+ public UserNameClickListener(final Trackable trackable, final String name) {
+ super(ConnectorFactory.getConnector(trackable).getUserActions());
this.name = name;
}
@Override
- protected CharSequence getUserName(final View view) {
+ protected String getUserName(final View view) {
return name;
}
}
diff --git a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
index 4c57406..300f510 100644
--- a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
@@ -64,7 +64,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
@Override
protected UserActionsClickListener createUserActionsListener() {
- return new UserActionsClickListener();
+ return new UserActionsClickListener(trackable);
}
} \ No newline at end of file