From a454bfd7012993fe85b7d0bc57fbe8fea94b45e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Thu, 18 Sep 2014 22:05:27 +0200 Subject: Use key icons in import, prettify items --- .../keychain/keyimport/ImportKeysListEntry.java | 1 + .../keychain/pgp/PgpSignEncrypt.java | 2 + .../keychain/remote/OpenPgpService.java | 16 +++++-- .../service/results/SignEncryptResult.java | 4 +- .../keychain/ui/adapter/ImportKeysAdapter.java | 23 +++++++-- .../src/main/res/layout/import_keys_list_entry.xml | 54 ++++++++++------------ 6 files changed, 60 insertions(+), 40 deletions(-) (limited to 'OpenKeychain/src') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java index b49442ec0..ff2a08c8e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -276,6 +276,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mKeyIdHex = KeyFormattingUtils.convertKeyIdToHex(mKeyId); mRevoked = key.isRevoked(); + mExpired = key.isExpired(); mFingerprintHex = KeyFormattingUtils.convertFingerprintToHex(key.getFingerprint()); mBitStrength = key.getBitStrength(); mCurveOid = key.getCurveOid(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java index 2c26c2da0..2e4620813 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpSignEncrypt.java @@ -31,6 +31,7 @@ import org.spongycastle.openpgp.PGPSignatureGenerator; import org.spongycastle.openpgp.operator.jcajce.JcePBEKeyEncryptionMethodGenerator; import org.spongycastle.openpgp.operator.jcajce.JcePGPDataEncryptorBuilder; import org.spongycastle.openpgp.operator.jcajce.NfcSyncPGPContentSignerBuilder; +import org.spongycastle.util.encoders.Hex; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; @@ -569,6 +570,7 @@ public class PgpSignEncrypt { SignEncryptResult result = new SignEncryptResult(SignEncryptResult.RESULT_PENDING_NFC, log); result.setNfcData(e.hashToSign, e.hashAlgo, e.creationTimestamp); + Log.d(Constants.TAG, "e.hashToSign"+ Hex.toHexString(e.hashToSign)); return result; } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 31427cce2..55354cdec 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -30,6 +30,7 @@ import org.openintents.openpgp.OpenPgpMetadata; import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.util.OpenPgpApi; +import org.spongycastle.util.encoders.Hex; import org.sufficientlysecure.keychain.nfc.NfcActivity; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.pgp.PassphraseCacheInterface; @@ -244,10 +245,17 @@ public class OpenPgpService extends RemoteService { } byte[] nfcSignedHash = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_SIGNED_HASH); + if (nfcSignedHash != null) { + Log.d(Constants.TAG, "nfcSignedHash:" + Hex.toHexString(nfcSignedHash)); + } else { + Log.d(Constants.TAG, "nfcSignedHash: null"); + } + // carefully: only set if timestamp exists Date nfcCreationDate = null; - long nfcCreationTimestamp = data.getLongExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, 0); - if (nfcCreationTimestamp != 0) { + long nfcCreationTimestamp = data.getLongExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, -1); + Log.d(Constants.TAG, "nfcCreationTimestamp: " + nfcCreationTimestamp); + if (nfcCreationTimestamp != -1) { nfcCreationDate = new Date(nfcCreationTimestamp); } @@ -406,8 +414,8 @@ public class OpenPgpService extends RemoteService { byte[] nfcSignedHash = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_SIGNED_HASH); // carefully: only set if timestamp exists Date nfcCreationDate = null; - long nfcCreationTimestamp = data.getLongExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, 0); - if (nfcCreationTimestamp != 0) { + long nfcCreationTimestamp = data.getLongExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, -1); + if (nfcCreationTimestamp != -1) { nfcCreationDate = new Date(nfcCreationTimestamp); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java index 167404b36..84eb29a62 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/results/SignEncryptResult.java @@ -44,8 +44,8 @@ public class SignEncryptResult extends OperationResult { mKeyIdPassphraseNeeded = keyIdPassphraseNeeded; } - public void setNfcData(byte[] sessionKey, int nfcAlgo, Date nfcTimestamp) { - mNfcHash = sessionKey; + public void setNfcData(byte[] nfcHash, int nfcAlgo, Date nfcTimestamp) { + mNfcHash = nfcHash; mNfcAlgo = nfcAlgo; mNfcTimestamp = nfcTimestamp; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java index 5abbdcc05..1c929e508 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java @@ -21,12 +21,14 @@ import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.Color; +import android.media.Image; import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -34,6 +36,7 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry; import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.ui.util.Highlighter; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import java.util.ArrayList; import java.util.Iterator; @@ -51,7 +54,8 @@ public class ImportKeysAdapter extends ArrayAdapter { public TextView keyId; public TextView fingerprint; public TextView algorithm; - public TextView status; + public ImageView status; + public View userIdsDivider; public LinearLayout userIdsList; public CheckBox checkBox; } @@ -114,7 +118,8 @@ public class ImportKeysAdapter extends ArrayAdapter { holder.keyId = (TextView) convertView.findViewById(R.id.subkey_item_key_id); holder.fingerprint = (TextView) convertView.findViewById(R.id.view_key_fingerprint); holder.algorithm = (TextView) convertView.findViewById(R.id.algorithm); - holder.status = (TextView) convertView.findViewById(R.id.status); + holder.status = (ImageView) convertView.findViewById(R.id.status); + holder.userIdsDivider = convertView.findViewById(R.id.user_ids_divider); holder.userIdsList = (LinearLayout) convertView.findViewById(R.id.user_ids_list); holder.checkBox = (CheckBox) convertView.findViewById(R.id.selected); convertView.setTag(holder); @@ -159,20 +164,30 @@ public class ImportKeysAdapter extends ArrayAdapter { holder.algorithm.setText(entry.getAlgorithm()); holder.algorithm.setVisibility(View.VISIBLE); } else { - holder.algorithm.setVisibility(View.INVISIBLE); + holder.algorithm.setVisibility(View.GONE); } if (entry.isRevoked()) { holder.status.setVisibility(View.VISIBLE); - holder.status.setText(R.string.revoked); + KeyFormattingUtils.setStatusImage(getContext(), holder.status, KeyFormattingUtils.STATE_REVOKED); + // no more space for algorithm display + holder.algorithm.setVisibility(View.GONE); + } else if (entry.isExpired()) { + holder.status.setVisibility(View.VISIBLE); + KeyFormattingUtils.setStatusImage(getContext(), holder.status, KeyFormattingUtils.STATE_EXPIRED); + // no more space for algorithm display + holder.algorithm.setVisibility(View.GONE); } else { holder.status.setVisibility(View.GONE); + holder.algorithm.setVisibility(View.VISIBLE); } if (entry.getUserIds().size() == 1) { holder.userIdsList.setVisibility(View.GONE); + holder.userIdsDivider.setVisibility(View.GONE); } else { holder.userIdsList.setVisibility(View.VISIBLE); + holder.userIdsDivider.setVisibility(View.VISIBLE); // destroyLoader view from holder holder.userIdsList.removeAllViews(); diff --git a/OpenKeychain/src/main/res/layout/import_keys_list_entry.xml b/OpenKeychain/src/main/res/layout/import_keys_list_entry.xml index 74de77172..ddf3d1bb4 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_list_entry.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_list_entry.xml @@ -1,20 +1,5 @@ - + + - + android:layout_gravity="center" + android:src="@drawable/status_signature_revoked_cutout" + android:padding="16dp" /> + android:textAppearance="?android:attr/textAppearanceSmall" /> + + - - + -- cgit v1.2.3