diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2014-01-04 13:08:15 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2014-01-04 13:08:15 +0100 |
| commit | 01de707ee0f6f47cfcb576f0e82e0c65ed8e418a (patch) | |
| tree | 96ebc206fa71d1864b32107685f2754bdcde3c69 /main/src/cgeo | |
| parent | fd2664c70770a1670330b488eb01b3a976a06433 (diff) | |
| download | cgeo-01de707ee0f6f47cfcb576f0e82e0c65ed8e418a.zip cgeo-01de707ee0f6f47cfcb576f0e82e0c65ed8e418a.tar.gz cgeo-01de707ee0f6f47cfcb576f0e82e0c65ed8e418a.tar.bz2 | |
refactoring: make user actions depend on the connector
This enables the contacts addon and search by user/owner for all user
names (independent of the kind of cache). Of course, search by
user/owner still only works for GC, so one cannot find EC owner caches
that way.
Diffstat (limited to 'main/src/cgeo')
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 |
