aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/res/menu/main_activity_options.xml1
-rw-r--r--main/res/values/strings.xml3
-rw-r--r--main/src/cgeo/contacts/IContacts.java12
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java6
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractUserClickListener.java34
5 files changed, 48 insertions, 8 deletions
diff --git a/main/res/menu/main_activity_options.xml b/main/res/menu/main_activity_options.xml
index 68fd227..fc949dc 100644
--- a/main/res/menu/main_activity_options.xml
+++ b/main/res/menu/main_activity_options.xml
@@ -31,5 +31,4 @@
android:icon="@drawable/ic_menu_info_details"
android:title="@string/menu_about">
</item>
-
</menu> \ No newline at end of file
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index f72fa06..247988c 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -914,7 +914,8 @@
<string name="user_menu_view_found">Caches found</string>
<string name="user_menu_open_browser">Open profile in browser</string>
<string name="user_menu_send_message">Send message</string>
-
+ <string name="user_menu_open_contact">Open contact card</string>
+
<!-- navigation -->
<string name="navigation">Navigation</string>
<string name="compass_title">Compass</string>
diff --git a/main/src/cgeo/contacts/IContacts.java b/main/src/cgeo/contacts/IContacts.java
new file mode 100644
index 0000000..d46a5a4
--- /dev/null
+++ b/main/src/cgeo/contacts/IContacts.java
@@ -0,0 +1,12 @@
+package cgeo.contacts;
+
+public interface IContacts {
+ static final String CALENDAR_ADDON_URI = "market://details?id=cgeo.contacts";
+
+ static final String INTENT = "cgeo.contacts.FIND";
+
+ static final String URI_SCHEME = "find";
+ static final String URI_HOST = "cgeo.org";
+
+ static final String PARAM_NAME = "name"; // user name
+}
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index d3f78cf..e8ad049 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -1,5 +1,8 @@
package cgeo.geocaching;
+import butterknife.ButterKnife;
+import butterknife.InjectView;
+
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.capability.ILogin;
@@ -19,10 +22,9 @@ import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
import cgeo.geocaching.utils.Version;
-import butterknife.ButterKnife;
-import butterknife.InjectView;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
+
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
diff --git a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
index f8cfb8a..6d8a246 100644
--- a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
+++ b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
@@ -1,9 +1,12 @@
package cgeo.geocaching.ui;
-import cgeo.geocaching.R;
+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 android.app.AlertDialog;
import android.content.DialogInterface;
@@ -12,6 +15,10 @@ 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;
@@ -40,11 +47,14 @@ abstract class AbstractUserClickListener implements View.OnClickListener {
protected static void showUserActionsDialog(final CharSequence name, final View view) {
final AbstractActivity context = (AbstractActivity) view.getContext();
final Resources res = context.getResources();
- final CharSequence[] items = { res.getString(R.string.user_menu_view_hidden),
+ 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)
- };
+ res.getString(R.string.user_menu_send_message)));
+ if (isContactsAddonAvailable()) {
+ actions.add(res.getString(R.string.user_menu_open_contact));
+ }
+ final CharSequence[] items = actions.toArray(new String[actions.size()]);
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(res.getString(R.string.user_menu_title) + " " + name);
@@ -64,6 +74,9 @@ abstract class AbstractUserClickListener implements View.OnClickListener {
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;
}
@@ -73,4 +86,17 @@ abstract class AbstractUserClickListener implements View.OnClickListener {
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));
+ }
+
}