diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/TrustIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/TrustIdsAdapter.java
index 8fd427b31..f5560ac15 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/TrustIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/TrustIdsAdapter.java
@@ -21,7 +21,9 @@ package org.sufficientlysecure.keychain.ui.adapter;
import java.util.HashMap;
import android.app.Activity;
+import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.database.Cursor;
@@ -31,10 +33,12 @@ import android.support.v4.content.CursorLoader;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.provider.KeychainContract.ApiTrustIdentity;
@@ -59,16 +63,35 @@ public class TrustIdsAdapter extends CursorAdapter {
}
@Override
- public void bindView(View view, Context context, Cursor cursor) {
- String packageName = cursor.getString(INDEX_PACKAGE_NAME);
- String trustId = cursor.getString(INDEX_TRUST_ID);
+ public void bindView(View view, final Context context, Cursor cursor) {
+ final String packageName = cursor.getString(INDEX_PACKAGE_NAME);
+ final String trustId = cursor.getString(INDEX_TRUST_ID);
TextView vTrustId = (TextView) view.findViewById(R.id.trust_id_name);
ImageView vAppIcon = (ImageView) view.findViewById(R.id.trust_id_app_icon);
+ ImageView vActionIcon = (ImageView) view.findViewById(R.id.trust_id_action);
Drawable drawable = getDrawableForPackageName(packageName);
vTrustId.setText(trustId);
vAppIcon.setImageDrawable(drawable);
+ vActionIcon.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ launchTrustIdActivity(packageName, trustId, context);
+ }
+ });
+ }
+
+ private void launchTrustIdActivity(String packageName, String trustId, Context context) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(packageName + ".TRUST_ID_ACTION");
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(OpenPgpApi.EXTRA_TRUST_IDENTITY, trustId);
+ context.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ // can't help it
+ }
}
private Drawable getDrawableForPackageName(String packageName) {
diff --git a/OpenKeychain/src/main/res/drawable/ic_chat_black_24dp.xml b/OpenKeychain/src/main/res/drawable/ic_chat_black_24dp.xml
new file mode 100644
index 000000000..e3489bdea
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable/ic_chat_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/OpenKeychain/src/main/res/layout/view_key_trust_id_item.xml b/OpenKeychain/src/main/res/layout/view_key_trust_id_item.xml
index 97b7d2968..1c155d56e 100644
--- a/OpenKeychain/src/main/res/layout/view_key_trust_id_item.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_trust_id_item.xml
@@ -27,4 +27,14 @@
tools:text="alice@example.com"
/>
+
+