aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java84
1 files changed, 61 insertions, 23 deletions
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 c2a882fdb..d457e75bd 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
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.adapter;
import android.content.Context;
import android.content.res.ColorStateList;
import android.database.Cursor;
+import android.graphics.Typeface;
import android.support.v4.widget.CursorAdapter;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
@@ -89,6 +90,20 @@ public class SubkeysAdapter extends CursorAdapter {
return mCursor.getLong(INDEX_KEY_ID);
}
+ public long getCreationDate(int position) {
+ mCursor.moveToPosition(position);
+ return mCursor.getLong(INDEX_CREATION);
+ }
+
+ public Long getExpiryDate(int position) {
+ mCursor.moveToPosition(position);
+ if (mCursor.isNull(INDEX_EXPIRY)) {
+ return null;
+ } else {
+ return mCursor.getLong(INDEX_EXPIRY);
+ }
+ }
+
@Override
public Cursor swapCursor(Cursor newCursor) {
hasAnySecret = false;
@@ -106,15 +121,18 @@ public class SubkeysAdapter extends CursorAdapter {
@Override
public void bindView(View view, Context context, Cursor cursor) {
- TextView vKeyId = (TextView) view.findViewById(R.id.keyId);
- TextView vKeyDetails = (TextView) view.findViewById(R.id.keyDetails);
- TextView vKeyExpiry = (TextView) view.findViewById(R.id.keyExpiry);
- ImageView vMasterKeyIcon = (ImageView) view.findViewById(R.id.ic_masterKey);
- ImageView vCertifyIcon = (ImageView) view.findViewById(R.id.ic_certifyKey);
- ImageView vEncryptIcon = (ImageView) view.findViewById(R.id.ic_encryptKey);
- ImageView vSignIcon = (ImageView) view.findViewById(R.id.ic_signKey);
- ImageView vRevokedKeyIcon = (ImageView) view.findViewById(R.id.ic_revokedKey);
- ImageView vEditImage = (ImageView) view.findViewById(R.id.user_id_item_edit_image);
+ TextView vKeyId = (TextView) view.findViewById(R.id.subkey_item_key_id);
+ TextView vKeyDetails = (TextView) view.findViewById(R.id.subkey_item_details);
+ TextView vKeyExpiry = (TextView) view.findViewById(R.id.subkey_item_expiry);
+ ImageView vCertifyIcon = (ImageView) view.findViewById(R.id.subkey_item_ic_certify);
+ ImageView vEncryptIcon = (ImageView) view.findViewById(R.id.subkey_item_ic_encrypt);
+ ImageView vSignIcon = (ImageView) view.findViewById(R.id.subkey_item_ic_sign);
+ ImageView vRevokedIcon = (ImageView) view.findViewById(R.id.subkey_item_ic_revoked);
+ ImageView vEditImage = (ImageView) view.findViewById(R.id.subkey_item_edit_image);
+
+ // not used:
+ ImageView deleteImage = (ImageView) view.findViewById(R.id.subkey_item_delete_button);
+ deleteImage.setVisibility(View.GONE);
long keyId = cursor.getLong(INDEX_KEY_ID);
String keyIdStr = PgpKeyHelper.convertKeyIdToHex(keyId);
@@ -133,14 +151,26 @@ public class SubkeysAdapter extends CursorAdapter {
vKeyDetails.setText(algorithmStr);
}
+ boolean isMasterKey = cursor.getInt(INDEX_RANK) == 0;
+ if (isMasterKey) {
+ vKeyId.setTypeface(null, Typeface.BOLD);
+ } else {
+ vKeyId.setTypeface(null, Typeface.NORMAL);
+ }
+
// Set icons according to properties
- vMasterKeyIcon.setVisibility(cursor.getInt(INDEX_RANK) == 0 ? View.VISIBLE : View.INVISIBLE);
vCertifyIcon.setVisibility(cursor.getInt(INDEX_CAN_CERTIFY) != 0 ? View.VISIBLE : View.GONE);
vEncryptIcon.setVisibility(cursor.getInt(INDEX_CAN_ENCRYPT) != 0 ? View.VISIBLE : View.GONE);
vSignIcon.setVisibility(cursor.getInt(INDEX_CAN_SIGN) != 0 ? View.VISIBLE : View.GONE);
+ // TODO: missing icon for authenticate
boolean isRevoked = cursor.getInt(INDEX_IS_REVOKED) > 0;
+ Date expiryDate = null;
+ if (!cursor.isNull(INDEX_EXPIRY)) {
+ expiryDate = new Date(cursor.getLong(INDEX_EXPIRY) * 1000);
+ }
+
// for edit key
if (mSaveKeyringParcel != null) {
boolean revokeThisSubkey = (mSaveKeyringParcel.mRevokeSubKeys.contains(keyId));
@@ -151,24 +181,22 @@ public class SubkeysAdapter extends CursorAdapter {
}
}
+ SaveKeyringParcel.SubkeyChange subkeyChange = mSaveKeyringParcel.getSubkeyChange(keyId);
+ if (subkeyChange != null) {
+ if (subkeyChange.mExpiry == null) {
+ expiryDate = null;
+ } else {
+ expiryDate = new Date(subkeyChange.mExpiry * 1000);
+ }
+ }
+
vEditImage.setVisibility(View.VISIBLE);
} else {
vEditImage.setVisibility(View.GONE);
}
- if (isRevoked) {
- vRevokedKeyIcon.setVisibility(View.VISIBLE);
- } else {
- vKeyId.setTextColor(mDefaultTextColor);
- vKeyDetails.setTextColor(mDefaultTextColor);
- vKeyExpiry.setTextColor(mDefaultTextColor);
-
- vRevokedKeyIcon.setVisibility(View.GONE);
- }
-
boolean isExpired;
- if (!cursor.isNull(INDEX_EXPIRY)) {
- Date expiryDate = new Date(cursor.getLong(INDEX_EXPIRY) * 1000);
+ if (expiryDate != null) {
isExpired = expiryDate.before(new Date());
vKeyExpiry.setText(context.getString(R.string.label_expiry) + ": "
@@ -179,6 +207,16 @@ public class SubkeysAdapter extends CursorAdapter {
vKeyExpiry.setText(context.getString(R.string.label_expiry) + ": " + context.getString(R.string.none));
}
+ if (isRevoked) {
+ vRevokedIcon.setVisibility(View.VISIBLE);
+ } else {
+ vKeyId.setTextColor(mDefaultTextColor);
+ vKeyDetails.setTextColor(mDefaultTextColor);
+ vKeyExpiry.setTextColor(mDefaultTextColor);
+
+ vRevokedIcon.setVisibility(View.GONE);
+ }
+
// if key is expired or revoked, strike through text
boolean isInvalid = isRevoked || isExpired;
if (isInvalid) {
@@ -195,7 +233,7 @@ public class SubkeysAdapter extends CursorAdapter {
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.view_key_subkey_item, null);
if (mDefaultTextColor == null) {
- TextView keyId = (TextView) view.findViewById(R.id.keyId);
+ TextView keyId = (TextView) view.findViewById(R.id.subkey_item_key_id);
mDefaultTextColor = keyId.getTextColors();
}
return view;