From 4e834d78335d8d375a8918be05ccd89a86d50863 Mon Sep 17 00:00:00 2001
From: Vincent Breitmoser <valodim@mugenguild.com>
Date: Thu, 11 Sep 2014 22:50:44 +0200
Subject: add ui support for stripping subkeys

---
 .../keychain/ui/EditKeyFragment.java               |  8 +++++
 .../keychain/ui/adapter/SubkeysAdapter.java        | 39 +++++++++++++---------
 .../ui/dialog/EditSubkeyDialogFragment.java        |  4 +++
 3 files changed, 35 insertions(+), 16 deletions(-)

(limited to 'OpenKeychain/src/main/java')

diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
index 703755457..8feef5e46 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
@@ -420,6 +420,14 @@ public class EditKeyFragment extends LoaderFragment implements
                             mSaveKeyringParcel.mRevokeSubKeys.add(keyId);
                         }
                         break;
+                    case EditSubkeyDialogFragment.MESSAGE_STRIP:
+                        // toggle
+                        if (mSaveKeyringParcel.mStripSubKeys.contains(keyId)) {
+                            mSaveKeyringParcel.mStripSubKeys.remove(keyId);
+                        } else {
+                            mSaveKeyringParcel.mStripSubKeys.add(keyId);
+                        }
+                        break;
                 }
                 getLoaderManager().getLoader(LOADER_ID_SUBKEYS).forceLoad();
             }
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java
index 78bbf80dd..f25c49508 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java
@@ -22,6 +22,7 @@ import android.content.res.ColorStateList;
 import android.database.Cursor;
 import android.graphics.Typeface;
 import android.support.v4.widget.CursorAdapter;
+import android.text.Html;
 import android.text.format.DateFormat;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -142,6 +143,8 @@ public class SubkeysAdapter extends CursorAdapter {
 
         long keyId = cursor.getLong(INDEX_KEY_ID);
         String keyIdStr = PgpKeyHelper.convertKeyIdToHex(keyId);
+
+        // may be set with additional "stripped" later on
         String algorithmStr = PgpKeyHelper.getAlgorithmInfo(
                 context,
                 cursor.getInt(INDEX_ALGORITHM),
@@ -150,23 +153,27 @@ public class SubkeysAdapter extends CursorAdapter {
         );
 
         vKeyId.setText(keyIdStr);
-        // may be set with additional "stripped" later on
-        switch (SecretKeyType.fromNum(cursor.getInt(INDEX_HAS_SECRET))) {
-            case GNU_DUMMY:
-                algorithmStr += ", " + context.getString(R.string.key_stripped);
-                break;
-            case DIVERT_TO_CARD:
-                algorithmStr += ", " + context.getString(R.string.key_divert);
-                break;
-            case PASSPHRASE_EMPTY:
-                algorithmStr += ", " + context.getString(R.string.key_no_passphrase);
-                break;
-            case UNAVAILABLE:
-                // don't show this on pub keys
-                //algorithmStr += ", " + context.getString(R.string.key_unavailable);
-                break;
+
+        if (mSaveKeyringParcel != null && mSaveKeyringParcel.mStripSubKeys.contains(keyId)) {
+            algorithmStr += ", <b>" + context.getString(R.string.key_stripped) + "</b>";
+        } else {
+            switch (SecretKeyType.fromNum(cursor.getInt(INDEX_HAS_SECRET))) {
+                case GNU_DUMMY:
+                    algorithmStr += ", " + context.getString(R.string.key_stripped);
+                    break;
+                case DIVERT_TO_CARD:
+                    algorithmStr += ", " + context.getString(R.string.key_divert);
+                    break;
+                case PASSPHRASE_EMPTY:
+                    algorithmStr += ", " + context.getString(R.string.key_no_passphrase);
+                    break;
+                case UNAVAILABLE:
+                    // don't show this on pub keys
+                    //algorithmStr += ", " + context.getString(R.string.key_unavailable);
+                    break;
+            }
         }
-        vKeyDetails.setText(algorithmStr);
+        vKeyDetails.setText(Html.fromHtml(algorithmStr));
 
         boolean isMasterKey = cursor.getInt(INDEX_RANK) == 0;
         if (isMasterKey) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyDialogFragment.java
index 9fef88a78..9568312f5 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyDialogFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyDialogFragment.java
@@ -34,6 +34,7 @@ public class EditSubkeyDialogFragment extends DialogFragment {
 
     public static final int MESSAGE_CHANGE_EXPIRY = 1;
     public static final int MESSAGE_REVOKE = 2;
+    public static final int MESSAGE_STRIP = 3;
 
     private Messenger mMessenger;
 
@@ -72,6 +73,9 @@ public class EditSubkeyDialogFragment extends DialogFragment {
                     case 1:
                         sendMessageToHandler(MESSAGE_REVOKE, null);
                         break;
+                    case 2:
+                        sendMessageToHandler(MESSAGE_STRIP, null);
+                        break;
                     default:
                         break;
                 }
-- 
cgit v1.2.3