diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-15 15:29:06 +0100 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-15 15:29:06 +0100 | 
| commit | f4cb254404fd1194dda2995fa1ddab85ea0a28d3 (patch) | |
| tree | cd3ec5aa2e78478d08b6aaf853405331bf0ff7ca /OpenKeychain/src | |
| parent | 0b654bdfe5c05f1707c04f3d6c56c8ee9fe52e28 (diff) | |
| download | open-keychain-f4cb254404fd1194dda2995fa1ddab85ea0a28d3.tar.gz open-keychain-f4cb254404fd1194dda2995fa1ddab85ea0a28d3.tar.bz2 open-keychain-f4cb254404fd1194dda2995fa1ddab85ea0a28d3.zip | |
Dont display key ids in KeySpinner, display creation date when user ids duplicate
Diffstat (limited to 'OpenKeychain/src')
4 files changed, 39 insertions, 16 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java index fc912fccb..53d1eb7e7 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java @@ -68,7 +68,9 @@ public class CertifyKeySpinner extends KeySpinner {                  KeychainContract.KeyRings.IS_REVOKED,                  KeychainContract.KeyRings.IS_EXPIRED,                  KeychainContract.KeyRings.HAS_CERTIFY, -                KeychainContract.KeyRings.HAS_ANY_SECRET +                KeychainContract.KeyRings.HAS_ANY_SECRET, +                KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID, +                KeychainContract.KeyRings.CREATION          };          String where = KeychainContract.KeyRings.HAS_ANY_SECRET + " = 1 AND " diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java index c8eceea50..ab5b02301 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java @@ -25,6 +25,7 @@ import android.support.v4.app.LoaderManager;  import android.support.v4.content.Loader;  import android.support.v4.widget.CursorAdapter;  import android.support.v7.internal.widget.TintSpinner; +import android.text.format.DateFormat;  import android.util.AttributeSet;  import android.view.View;  import android.view.ViewGroup; @@ -41,6 +42,10 @@ import org.sufficientlysecure.keychain.provider.KeychainContract;  import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;  import org.sufficientlysecure.keychain.util.Log; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +  /**   * Use TintSpinner from AppCompat lib instead of Spinner. Fixes white dropdown icon.   * Related: http://stackoverflow.com/a/27713090 @@ -139,11 +144,12 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo      protected class SelectKeyAdapter extends BaseAdapter implements SpinnerAdapter {          private CursorAdapter inner;          private int mIndexUserId; -        private int mIndexKeyId; +        private int mIndexDuplicate;          private int mIndexMasterKeyId; +        private int mIndexCreationDate;          public SelectKeyAdapter() { -            inner = new CursorAdapter(null, null, 0) { +            inner = new CursorAdapter(getContext(), null, 0) {                  @Override                  public View newView(Context context, Cursor cursor, ViewGroup parent) {                      return View.inflate(getContext(), R.layout.keyspinner_item, null); @@ -154,12 +160,26 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo                      TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);                      ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);                      TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email); -                    TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id); +                    TextView vDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);                      String[] userId = KeyRing.splitUserId(cursor.getString(mIndexUserId));                      vKeyName.setText(userId[2] == null ? userId[0] : (userId[0] + " (" + userId[2] + ")"));                      vKeyEmail.setText(userId[1]); -                    vKeyId.setText(KeyFormattingUtils.beautifyKeyIdWithPrefix(getContext(), cursor.getLong(mIndexKeyId))); + +                    boolean duplicate = cursor.getLong(mIndexDuplicate) > 0; +                    if (duplicate) { +                        Date creationDate = new Date(cursor.getLong(mIndexCreationDate) * 1000); +                        Calendar creationCal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); +                        creationCal.setTime(creationDate); +                        // convert from UTC to time zone of device +                        creationCal.setTimeZone(TimeZone.getDefault()); + +                        vDuplicate.setText(context.getString(R.string.label_creation) + ": " +                                + DateFormat.getDateFormat(context).format(creationCal.getTime())); +                        vDuplicate.setVisibility(View.VISIBLE); +                    } else { +                        vDuplicate.setVisibility(View.GONE); +                    }                      boolean valid = setStatus(getContext(), cursor, vKeyStatus);                      setItemEnabled(view, valid); @@ -181,18 +201,18 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo              TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);              ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);              TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email); -            TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id); +            TextView vKeyDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);              if (enabled) {                  vKeyName.setTextColor(Color.BLACK);                  vKeyEmail.setTextColor(Color.BLACK); -                vKeyId.setTextColor(Color.BLACK); +                vKeyDuplicate.setTextColor(Color.BLACK);                  vKeyStatus.setVisibility(View.GONE);                  view.setClickable(false);              } else {                  vKeyName.setTextColor(Color.GRAY);                  vKeyEmail.setTextColor(Color.GRAY); -                vKeyId.setTextColor(Color.GRAY); +                vKeyDuplicate.setTextColor(Color.GRAY);                  vKeyStatus.setVisibility(View.VISIBLE);                  // this is a HACK. the trick is, if the element itself is clickable, the                  // click is not passed on to the view list @@ -203,9 +223,10 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo          public Cursor swapCursor(Cursor newCursor) {              if (newCursor == null) return inner.swapCursor(null); -            mIndexKeyId = newCursor.getColumnIndex(KeychainContract.KeyRings.KEY_ID); +            mIndexDuplicate = newCursor.getColumnIndex(KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID);              mIndexUserId = newCursor.getColumnIndex(KeychainContract.KeyRings.USER_ID);              mIndexMasterKeyId = newCursor.getColumnIndex(KeychainContract.KeyRings.MASTER_KEY_ID); +            mIndexCreationDate = newCursor.getColumnIndex(KeychainContract.KeyRings.CREATION);              if (newCursor.moveToFirst()) {                  do {                      if (newCursor.getLong(mIndexMasterKeyId) == mSelectedKeyId) { @@ -257,19 +278,17 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo                  TextView vKeyName = (TextView) view.findViewById(R.id.keyspinner_key_name);                  ImageView vKeyStatus = (ImageView) view.findViewById(R.id.keyspinner_key_status);                  TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email); -                TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id); +                TextView vKeyDuplicate = (TextView) view.findViewById(R.id.keyspinner_duplicate);                  vKeyName.setText(R.string.choice_none);                  vKeyEmail.setVisibility(View.GONE); -                vKeyId.setVisibility(View.GONE); +                vKeyDuplicate.setVisibility(View.GONE);                  vKeyStatus.setVisibility(View.GONE);                  setItemEnabled(view, true);              } else {                  view = inner.getView(position - 1, convertView, parent);                  TextView vKeyEmail = (TextView) view.findViewById(R.id.keyspinner_key_email); -                TextView vKeyId = (TextView) view.findViewById(R.id.keyspinner_key_id);                  vKeyEmail.setVisibility(View.VISIBLE); -                vKeyId.setVisibility(View.VISIBLE);              }              return view;          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java index 10327a6a4..df7347fa4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java @@ -59,7 +59,9 @@ public class SignKeySpinner extends KeySpinner {                  KeychainContract.KeyRings.IS_REVOKED,                  KeychainContract.KeyRings.IS_EXPIRED,                  KeychainContract.KeyRings.HAS_SIGN, -                KeychainContract.KeyRings.HAS_ANY_SECRET +                KeychainContract.KeyRings.HAS_ANY_SECRET, +                KeychainContract.KeyRings.HAS_DUPLICATE_USER_ID, +                KeychainContract.KeyRings.CREATION          };          String where = KeychainContract.KeyRings.HAS_ANY_SECRET + " = 1"; diff --git a/OpenKeychain/src/main/res/layout/keyspinner_item.xml b/OpenKeychain/src/main/res/layout/keyspinner_item.xml index 45147e7b1..eea81eba5 100644 --- a/OpenKeychain/src/main/res/layout/keyspinner_item.xml +++ b/OpenKeychain/src/main/res/layout/keyspinner_item.xml @@ -36,8 +36,8 @@              android:textAppearance="?android:attr/textAppearanceSmall" />          <TextView -            android:id="@+id/keyspinner_key_id" -            android:text="12345" +            android:id="@+id/keyspinner_duplicate" +            android:text="creation: bla"              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:singleLine="true" | 
