diff options
31 files changed, 182 insertions, 124 deletions
diff --git a/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java b/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java new file mode 100644 index 000000000..1151818b6 --- /dev/null +++ b/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java @@ -0,0 +1,33 @@ +package android.support.v4.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.View; + +/** + * Fix for NullPointerException at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840) + * <p/> + * http://stackoverflow.com/a/18107942 + */ +public class FixedDrawerLayout extends DrawerLayout { + public FixedDrawerLayout(Context context) { + super(context); + } + + public FixedDrawerLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FixedDrawerLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + boolean isContentView(View child) { + if (child == null) { + return false; + } + return ((LayoutParams) child.getLayoutParams()).gravity == Gravity.NO_GRAVITY; + } +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java index 77a11165d..f90250f57 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java @@ -392,15 +392,29 @@ public class PgpKeyHelper { return isCertificationKey(key.getPublicKey()); } - public static String getAlgorithmInfo(PGPPublicKey key) { - return getAlgorithmInfo(key.getAlgorithm(), key.getBitStrength()); + public static String getAlgorithmInfo(Context context, PGPPublicKey key) { + return getAlgorithmInfo(context, key.getAlgorithm(), key.getBitStrength()); } - public static String getAlgorithmInfo(PGPSecretKey key) { - return getAlgorithmInfo(key.getPublicKey()); + public static String getAlgorithmInfo(Context context, PGPSecretKey key) { + return getAlgorithmInfo(context, key.getPublicKey()); } - public static String getAlgorithmInfo(int algorithm, int keySize) { + /** + * TODO: Only used in HkpKeyServer. Get rid of this one! + */ + public static String getAlgorithmInfo(int algorithm) { + return getAlgorithmInfo(null, algorithm, 0); + } + + public static String getAlgorithmInfo(Context context, int algorithm) { + return getAlgorithmInfo(context, algorithm, 0); + } + + /** + * Based on <a href="http://tools.ietf.org/html/rfc2440#section-9.1">OpenPGP Message Format</a> + */ + public static String getAlgorithmInfo(Context context, int algorithm, int keySize) { String algorithmStr; switch (algorithm) { @@ -421,8 +435,19 @@ public class PgpKeyHelper { break; } + case PGPPublicKey.ECDSA: + case PGPPublicKey.ECDH: { + algorithmStr = "ECC"; + break; + } + default: { - algorithmStr = "Unknown"; + if (context != null) { + algorithmStr = context.getResources().getString(R.string.unknown_algorithm); + } else { + // TODO + algorithmStr = "unknown"; + } break; } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java index 3d3e48c30..1dc822ac2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java @@ -691,7 +691,7 @@ public class KeychainProvider extends ContentProvider { public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { Log.v(Constants.TAG, "update(uri=" + uri + ", values=" + values.toString() + ")"); - final SQLiteDatabase db = mKeychainDatabase.getWritableDatabase(); + final SQLiteDatabase db = getDb().getWritableDatabase(); int count = 0; try { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java index 088f593d4..9a5050eba 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java @@ -26,6 +26,7 @@ import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; +import android.support.v4.widget.FixedDrawerLayout; import android.support.v7.app.ActionBarActivity; import android.view.LayoutInflater; import android.view.Menu; @@ -43,7 +44,7 @@ import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; public class DrawerActivity extends ActionBarActivity { - private DrawerLayout mDrawerLayout; + private FixedDrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; @@ -58,7 +59,7 @@ public class DrawerActivity extends ActionBarActivity { protected void setupDrawerNavigation(Bundle savedInstanceState) { mDrawerTitle = getString(R.string.app_name); - mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + mDrawerLayout = (FixedDrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); ViewGroup viewGroup = (ViewGroup) findViewById(R.id.content_frame); int leftMarginLoaded = ((ViewGroup.MarginLayoutParams) viewGroup.getLayoutParams()).leftMargin; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java index 046c3431e..6c71c641f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -71,7 +71,7 @@ public class EncryptActivity extends DrawerActivity implements private static final int PAGER_CONTENT_MESSAGE = 0; private static final int PAGER_CONTENT_FILE = 1; - // model useb by message and file fragment + // model used by message and file fragments private long mEncryptionKeyIds[] = null; private long mSigningKeyId = Constants.key.none; private String mPassphrase; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index 46da6257a..0fccd668f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -17,7 +17,7 @@ package org.sufficientlysecure.keychain.ui; -import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; @@ -25,6 +25,7 @@ import android.content.Intent; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NfcAdapter; +import android.os.Build; import android.os.Bundle; import android.os.Message; import android.os.Messenger; @@ -211,7 +212,8 @@ public class ImportKeysActivity extends ActionBarActivity implements ActionBar.O } else { Log.e(Constants.TAG, "IMPORT_KEY_FROM_KEYSERVER action needs to contain the 'query', 'key_id', or " + - "'fingerprint' extra!"); + "'fingerprint' extra!" + ); return; } } else if (ACTION_IMPORT_KEY_FROM_FILE.equals(action)) { @@ -458,9 +460,13 @@ public class ImportKeysActivity extends ActionBarActivity implements ActionBar.O @Override public void onResume() { super.onResume(); - // Check to see that the Activity started due to an Android Beam - if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { + + // Check to see if the Activity started due to an Android Beam + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN + && NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { handleActionNdefDiscovered(getIntent()); + } else { + Log.e(Constants.TAG, "Android Beam not supported by Android < 4.1"); } } @@ -476,7 +482,7 @@ public class ImportKeysActivity extends ActionBarActivity implements ActionBar.O /** * NFC: Parses the NDEF Message from the intent and prints to the TextView */ - @SuppressLint("NewApi") + @TargetApi(Build.VERSION_CODES.JELLY_BEAN) void handleActionNdefDiscovered(Intent intent) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); // only one message sent during the beam diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java index 899d9864e..f740cfc22 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewCertActivity.java @@ -176,7 +176,7 @@ public class ViewCertActivity extends ActionBarActivity mStatus.setTextColor(getResources().getColor(R.color.black)); } - String algorithmStr = PgpKeyHelper.getAlgorithmInfo(sig.getKeyAlgorithm(), 0); + String algorithmStr = PgpKeyHelper.getAlgorithmInfo(this, sig.getKeyAlgorithm(), 0); mAlgorithm.setText(algorithmStr); mRowReason.setVisibility(View.GONE); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyCertsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyCertsFragment.java index 5418f4033..3c4135715 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyCertsFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyCertsFragment.java @@ -50,21 +50,23 @@ public class ViewKeyCertsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>, AdapterView.OnItemClickListener { // These are the rows that we will retrieve. - static final String[] PROJECTION = new String[] { - Certs._ID, - Certs.MASTER_KEY_ID, - Certs.VERIFIED, - Certs.TYPE, - Certs.RANK, - Certs.KEY_ID_CERTIFIER, - Certs.USER_ID, - Certs.SIGNER_UID + static final String[] PROJECTION = new String[]{ + Certs._ID, + Certs.MASTER_KEY_ID, + Certs.VERIFIED, + Certs.TYPE, + Certs.RANK, + Certs.KEY_ID_CERTIFIER, + Certs.USER_ID, + Certs.SIGNER_UID }; // sort by our user id, static final String SORT_ORDER = - Tables.CERTS + "." + Certs.RANK + " ASC, " - + Certs.VERIFIED + " DESC, " + Certs.TYPE + " DESC, " + Certs.SIGNER_UID + " ASC"; + Tables.CERTS + "." + Certs.RANK + " ASC, " + + Certs.VERIFIED + " DESC, " + + Certs.TYPE + " DESC, " + + Certs.SIGNER_UID + " ASC"; public static final String ARG_DATA_URI = "data_uri"; @@ -106,10 +108,6 @@ public class ViewKeyCertsFragment extends Fragment mStickyList.setEmptyView(getActivity().findViewById(R.id.empty)); - // TODO this view is made visible if no data is available - // mStickyList.setEmptyView(getActivity().findViewById(R.id.empty)); - - // Create an empty adapter we will use to display the loaded data. mAdapter = new CertListAdapter(getActivity(), null); mStickyList.setAdapter(mAdapter); @@ -138,7 +136,7 @@ public class ViewKeyCertsFragment extends Fragment */ @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { - if(view.getTag(R.id.tag_mki) != null) { + if (view.getTag(R.id.tag_mki) != null) { long masterKeyId = (Long) view.getTag(R.id.tag_mki); long rank = (Long) view.getTag(R.id.tag_rank); long certifierId = (Long) view.getTag(R.id.tag_certifierId); @@ -215,17 +213,22 @@ public class ViewKeyCertsFragment extends Fragment String signerKeyId = PgpKeyHelper.convertKeyIdToHex(cursor.getLong(mIndexSignerKeyId)); String signerUserId = cursor.getString(mIndexSignerUserId); - switch(cursor.getInt(mIndexType)) { + switch (cursor.getInt(mIndexType)) { case PGPSignature.DEFAULT_CERTIFICATION: // 0x10 - wSignStatus.setText(R.string.cert_default); break; + wSignStatus.setText(R.string.cert_default); + break; case PGPSignature.NO_CERTIFICATION: // 0x11 - wSignStatus.setText(R.string.cert_none); break; + wSignStatus.setText(R.string.cert_none); + break; case PGPSignature.CASUAL_CERTIFICATION: // 0x12 - wSignStatus.setText(R.string.cert_casual); break; + wSignStatus.setText(R.string.cert_casual); + break; case PGPSignature.POSITIVE_CERTIFICATION: // 0x13 - wSignStatus.setText(R.string.cert_positive); break; + wSignStatus.setText(R.string.cert_positive); + break; case PGPSignature.CERTIFICATION_REVOCATION: // 0x30 - wSignStatus.setText(R.string.cert_revoke); break; + wSignStatus.setText(R.string.cert_revoke); + break; } wSignerUserId.setText(signerUserId); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java index 39eceda81..5b1ed5866 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java @@ -278,7 +278,10 @@ public class ViewKeyMainFragment extends Fragment implements } String algorithmStr = PgpKeyHelper.getAlgorithmInfo( - data.getInt(INDEX_UNIFIED_ALGORITHM), data.getInt(INDEX_UNIFIED_KEY_SIZE)); + getActivity(), + data.getInt(INDEX_UNIFIED_ALGORITHM), + data.getInt(INDEX_UNIFIED_KEY_SIZE) + ); mAlgorithm.setText(algorithmStr); byte[] fingerprintBlob = data.getBlob(INDEX_UNIFIED_FINGERPRINT); 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 c571831cd..f4fa7f3bf 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 @@ -17,7 +17,7 @@ package org.sufficientlysecure.keychain.ui.adapter; -import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.Color; @@ -61,14 +61,14 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> { mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } - @SuppressLint("NewApi") + @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void setData(List<ImportKeysListEntry> data) { clear(); if (data != null) { this.mData = data; // add data to extended ArrayAdapter - if (Build.VERSION.SDK_INT >= 11) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { addAll(data); } else { for (ImportKeysListEntry entry : data) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java index 201cda2e8..b06852af4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListEntry.java @@ -17,6 +17,7 @@ package org.sufficientlysecure.keychain.ui.adapter; +import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import android.util.SparseArray; @@ -213,7 +214,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { * Constructor based on key object, used for import from NFC, QR Codes, files */ @SuppressWarnings("unchecked") - public ImportKeysListEntry(PGPKeyRing pgpKeyRing) { + public ImportKeysListEntry(Context context, PGPKeyRing pgpKeyRing) { // save actual key object into entry, used to import it later try { this.mBytes = pgpKeyRing.getEncoded(); @@ -263,32 +264,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable { this.fingerPrintHex = PgpKeyHelper.convertFingerprintToHex(key.getFingerprint()); this.bitStrength = key.getBitStrength(); final int algorithm = key.getAlgorithm(); - this.algorithm = getAlgorithmFromId(algorithm); - } - - /** - * Based on <a href="http://tools.ietf.org/html/rfc2440#section-9.1">OpenPGP Message Format</a> - */ - private static final SparseArray<String> ALGORITHM_IDS = new SparseArray<String>() {{ - put(-1, "unknown"); // TODO: with resources - put(0, "unencrypted"); - put(PGPPublicKey.RSA_GENERAL, "RSA"); - put(PGPPublicKey.RSA_ENCRYPT, "RSA"); - put(PGPPublicKey.RSA_SIGN, "RSA"); - put(PGPPublicKey.ELGAMAL_ENCRYPT, "ElGamal"); - put(PGPPublicKey.ELGAMAL_GENERAL, "ElGamal"); - put(PGPPublicKey.DSA, "DSA"); - put(PGPPublicKey.EC, "ECC"); - put(PGPPublicKey.ECDSA, "ECC"); - put(PGPPublicKey.ECDH, "ECC"); - }}; - - /** - * Based on <a href="http://tools.ietf.org/html/rfc2440#section-9.1">OpenPGP Message Format</a> - */ - public static String getAlgorithmFromId(int algorithmId) { - return (ALGORITHM_IDS.get(algorithmId) != null ? - ALGORITHM_IDS.get(algorithmId) : - ALGORITHM_IDS.get(-1)); + this.algorithm = PgpKeyHelper.getAlgorithmInfo(context, algorithm); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java index e7a045294..3fd5d5daf 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java @@ -165,7 +165,7 @@ public class ImportKeysListLoader } private void addToData(PGPKeyRing keyring) { - ImportKeysListEntry item = new ImportKeysListEntry(keyring); + ImportKeysListEntry item = new ImportKeysListEntry(getContext(), keyring); mData.add(item); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java index 259e14319..838aeefee 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListServerLoader.java @@ -101,7 +101,7 @@ public class ImportKeysListServerLoader String fingerprint = query.substring(2); Log.d(Constants.TAG, "fingerprint: " + fingerprint); // query must return only one result! - if (searchResult.size() > 0) { + if (searchResult.size() == 1) { ImportKeysListEntry uniqueEntry = searchResult.get(0); /* * set fingerprint explicitly after query diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyValueSpinnerAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyValueSpinnerAdapter.java index c3d6024c7..80d605fb9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyValueSpinnerAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyValueSpinnerAdapter.java @@ -39,7 +39,8 @@ public class KeyValueSpinnerAdapter extends ArrayAdapter<String> { public int compare(Map.Entry<K, V> e1, Map.Entry<K, V> e2) { return e1.getValue().compareTo(e2.getValue()); } - }); + } + ); sortedEntries.addAll(map.entrySet()); return sortedEntries; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java index 2210975fe..cde008175 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java @@ -65,8 +65,8 @@ abstract public class SelectKeyCursorAdapter extends HighlightQueryCursorAdapter if (cursor != null) { mIndexUserId = cursor.getColumnIndexOrThrow(KeyRings.USER_ID); mIndexMasterKeyId = cursor.getColumnIndexOrThrow(KeyRings.MASTER_KEY_ID); - mIndexExpiry= cursor.getColumnIndexOrThrow(KeyRings.EXPIRY); - mIndexRevoked= cursor.getColumnIndexOrThrow(KeyRings.IS_REVOKED); + mIndexExpiry = cursor.getColumnIndexOrThrow(KeyRings.EXPIRY); + mIndexRevoked = cursor.getColumnIndexOrThrow(KeyRings.IS_REVOKED); } } @@ -122,7 +122,7 @@ abstract public class SelectKeyCursorAdapter extends HighlightQueryCursorAdapter h.keyId.setText(PgpKeyHelper.convertKeyIdToHex(masterKeyId)); boolean enabled = true; - if(cursor.getInt(mIndexRevoked) != 0) { + if (cursor.getInt(mIndexRevoked) != 0) { h.status.setText(R.string.revoked); enabled = false; } else if (!cursor.isNull(mIndexExpiry) @@ -134,7 +134,6 @@ abstract public class SelectKeyCursorAdapter extends HighlightQueryCursorAdapter } h.status.setTag(enabled); - } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyKeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyKeysAdapter.java index 27ba19233..9e26e559f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyKeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyKeysAdapter.java @@ -73,7 +73,7 @@ public class ViewKeyKeysAdapter extends CursorAdapter { hasAnySecret = true; break; } - } while(newCursor.moveToNext()); + } while (newCursor.moveToNext()); } return super.swapCursor(newCursor); @@ -112,8 +112,11 @@ public class ViewKeyKeysAdapter extends CursorAdapter { ImageView revokedKeyIcon = (ImageView) view.findViewById(R.id.ic_revokedKey); String keyIdStr = PgpKeyHelper.convertKeyIdToHex(cursor.getLong(mIndexKeyId)); - String algorithmStr = PgpKeyHelper.getAlgorithmInfo(cursor.getInt(mIndexAlgorithm), - cursor.getInt(mIndexKeySize)); + String algorithmStr = PgpKeyHelper.getAlgorithmInfo( + context, + cursor.getInt(mIndexAlgorithm), + cursor.getInt(mIndexKeySize) + ); keyId.setText(keyIdStr); // may be set with additional "stripped" later on @@ -173,6 +176,7 @@ public class ViewKeyKeysAdapter extends CursorAdapter { } else { keyExpiry.setVisibility(View.GONE); } + // if key is expired or revoked, strike through text if (!valid) { keyId.setText(OtherHelper.strikeOutText(keyId.getText())); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyUserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyUserIdsAdapter.java index 29883d750..52e6dec92 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyUserIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ViewKeyUserIdsAdapter.java @@ -46,8 +46,12 @@ public class ViewKeyUserIdsAdapter extends CursorAdapter implements AdapterView. private final ArrayList<Boolean> mCheckStates; public static final String[] USER_IDS_PROJECTION = new String[]{ - UserIds._ID, UserIds.USER_ID, UserIds.RANK, - UserIds.VERIFIED, UserIds.IS_PRIMARY, UserIds.IS_REVOKED + UserIds._ID, + UserIds.USER_ID, + UserIds.RANK, + UserIds.VERIFIED, + UserIds.IS_PRIMARY, + UserIds.IS_REVOKED }; public ViewKeyUserIdsAdapter(Context context, Cursor c, int flags, boolean showCheckBoxes) { @@ -102,7 +106,6 @@ public class ViewKeyUserIdsAdapter extends CursorAdapter implements AdapterView. @Override public void bindView(View view, Context context, Cursor cursor) { - TextView vRank = (TextView) view.findViewById(R.id.rank); TextView vUserId = (TextView) view.findViewById(R.id.userId); TextView vAddress = (TextView) view.findViewById(R.id.address); @@ -137,12 +140,16 @@ public class ViewKeyUserIdsAdapter extends CursorAdapter implements AdapterView. int verified = cursor.getInt(mVerifiedId); // TODO introduce own resources for this :) - if (verified == Certs.VERIFIED_SECRET) { - vVerified.setImageResource(R.drawable.key_certify_ok_depth0); - } else if (verified == Certs.VERIFIED_SELF) { - vVerified.setImageResource(R.drawable.key_certify_ok_self); - } else { - vVerified.setImageResource(R.drawable.key_certify_error); + switch (verified) { + case Certs.VERIFIED_SECRET: + vVerified.setImageResource(R.drawable.key_certify_ok_depth0); + break; + case Certs.VERIFIED_SELF: + vVerified.setImageResource(R.drawable.key_certify_ok_self); + break; + default: + vVerified.setImageResource(R.drawable.key_certify_error); + break; } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java index 7913df6c8..93cdef5e3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteKeyDialogFragment.java @@ -68,7 +68,6 @@ public class DeleteKeyDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - final FragmentActivity activity = getActivity(); mMessenger = getArguments().getParcelable(ARG_MESSENGER); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareNfcDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareNfcDialogFragment.java index 01079b44e..15df53dcc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareNfcDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareNfcDialogFragment.java @@ -88,13 +88,11 @@ public class ShareNfcDialogFragment extends DialogFragment { Settings.ACTION_NFCSHARING_SETTINGS); startActivity(intentSettings); } - }); + } + ); } } - - // no flickering when clicking textview for Android < 4 - // aboutTextView.setTextColor(getResources().getColor(android.R.color.black)); - + return alert.create(); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java index 37b219b02..fe50c759b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/ShareQrCodeDialogFragment.java @@ -92,7 +92,7 @@ public class ShareQrCodeDialogFragment extends DialogFragment { mText = (TextView) view.findViewById(R.id.share_qr_code_dialog_text); ProviderHelper providerHelper = new ProviderHelper(getActivity()); - String content = null; + String content; try { if (mFingerprintOnly) { alert.setPositiveButton(R.string.btn_okay, null); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java index c401ca62e..1628c9e95 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeyEditor.java @@ -216,7 +216,7 @@ public class KeyEditor extends LinearLayout implements Editor, OnClickListener { mDeleteButton.setVisibility(View.INVISIBLE); } - mAlgorithm.setText(PgpKeyHelper.getAlgorithmInfo(key)); + mAlgorithm.setText(PgpKeyHelper.getAlgorithmInfo(getContext(), key)); String keyIdStr = PgpKeyHelper.convertKeyIdToHex(key.getKeyID()); mKeyId.setText(keyIdStr); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java index b7f021646..cf658b0b6 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/HkpKeyServer.java @@ -31,6 +31,7 @@ import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.pgp.PgpHelper; +import org.sufficientlysecure.keychain.pgp.PgpKeyHelper; import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry; import java.io.ByteArrayOutputStream; @@ -256,7 +257,7 @@ public class HkpKeyServer extends KeyServer { entry.setBitStrength(Integer.parseInt(matcher.group(3))); final int algorithmId = Integer.decode(matcher.group(2)); - entry.setAlgorithm(ImportKeysListEntry.getAlgorithmFromId(algorithmId)); + entry.setAlgorithm(PgpKeyHelper.getAlgorithmInfo(algorithmId)); // group 1 contains the full fingerprint (v4) or the long key id if available // see http://bit.ly/1d4bxbk and http://bit.ly/1gD1wwr diff --git a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml index c0021261e..88686bbbc 100644 --- a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml +++ b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml @@ -4,7 +4,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > - <android.support.v4.widget.DrawerLayout + <android.support.v4.widget.FixedDrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" @@ -13,7 +13,7 @@ <include layout="@layout/drawer_list"/> - </android.support.v4.widget.DrawerLayout> + </android.support.v4.widget.FixedDrawerLayout> <include layout="@layout/api_apps_list_content"/> diff --git a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml index 26aed0831..9e9f37391 100644 --- a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml +++ b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml @@ -4,7 +4,7 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> - <android.support.v4.widget.DrawerLayout + <android.support.v4.widget.FixedDrawerLayout xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" @@ -12,7 +12,7 @@ <include layout="@layout/drawer_list"/> - </android.support.v4.widget.DrawerLayout> + </android.support.v4.widget.FixedDrawerLayout> <include layout="@layout/decrypt_content"/> diff --git a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml index 7d0d44074..355580fad 100644 --- a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml +++ b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml @@ -4,7 +4,7 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> - <android.support.v4.widget.DrawerLayout + <android.support.v4.widget.FixedDrawerLayout xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto" xmlns:fontawesometext="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" @@ -13,7 +13,7 @@ <include layout="@layout/drawer_list"/> - </android.support.v4.widget.DrawerLayout> + </android.support.v4.widget.FixedDrawerLayout> <include layout="@layout/encrypt_content"/> </FrameLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml index 6636f12ff..6abbea13f 100644 --- a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml +++ b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml @@ -4,14 +4,14 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> - <android.support.v4.widget.DrawerLayout + <android.support.v4.widget.FixedDrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/drawer_list"/> - </android.support.v4.widget.DrawerLayout> + </android.support.v4.widget.FixedDrawerLayout> <include layout="@layout/key_list_content"/> diff --git a/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml b/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml index 9f95e9f3b..df187e0a5 100644 --- a/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml +++ b/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > @@ -8,4 +8,4 @@ <include layout="@layout/drawer_list" /> -</android.support.v4.widget.DrawerLayout>
\ No newline at end of file +</android.support.v4.widget.FixedDrawerLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/decrypt_activity.xml b/OpenKeychain/src/main/res/layout/decrypt_activity.xml index c4709a67e..94d82fe1d 100644 --- a/OpenKeychain/src/main/res/layout/decrypt_activity.xml +++ b/OpenKeychain/src/main/res/layout/decrypt_activity.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" @@ -9,4 +9,4 @@ <include layout="@layout/drawer_list" /> -</android.support.v4.widget.DrawerLayout>
\ No newline at end of file +</android.support.v4.widget.FixedDrawerLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/encrypt_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_activity.xml index 6484c9b7b..65c2ee8fd 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_activity.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_activity.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto" xmlns:fontawesometext="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" @@ -10,4 +10,4 @@ <include layout="@layout/drawer_list" /> -</android.support.v4.widget.DrawerLayout>
\ No newline at end of file +</android.support.v4.widget.FixedDrawerLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/key_list_activity.xml b/OpenKeychain/src/main/res/layout/key_list_activity.xml index fcb376fa8..c4c2c35cb 100644 --- a/OpenKeychain/src/main/res/layout/key_list_activity.xml +++ b/OpenKeychain/src/main/res/layout/key_list_activity.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > @@ -8,4 +8,4 @@ <include layout="@layout/drawer_list" /> -</android.support.v4.widget.DrawerLayout>
\ No newline at end of file +</android.support.v4.widget.FixedDrawerLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index aa96ac29b..330bc349d 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -140,6 +140,8 @@ <string name="no_key"><no key></string> <string name="can_encrypt">can encrypt</string> <string name="can_sign">can sign</string> + <string name="can_certify">can certify</string> + <string name="can_certify_not">cannot certify</string> <string name="expired">expired</string> <string name="revoked">revoked</string> @@ -368,6 +370,7 @@ <!-- Help --> <string name="help_tab_start">Start</string> <string name="help_tab_faq">FAQ</string> + <string name="help_tab_wot">Web of Trust</string> <string name="help_tab_nfc_beam">NFC Beam</string> <string name="help_tab_changelog">Changelog</string> <string name="help_tab_about">About</string> @@ -468,34 +471,34 @@ <string name="encrypt_content_edit_text_hint">Write message here to encrypt and/or sign…</string> <string name="decrypt_content_edit_text_hint">Enter ciphertext here to decrypt and/or verify…</string> - <!-- unsorted --> - <string name="section_signer_id">Signer</string> - <string name="section_cert">Certificate Details</string> - <string name="label_user_id">User ID</string> - <string name="unknown_uid"><unknown></string> - <string name="empty_certs">No certificates for this key</string> - <string name="section_uids_to_sign">User IDs to sign</string> + <!-- certifications --> <string name="cert_default">default</string> <string name="cert_none">none</string> <string name="cert_casual">casual</string> <string name="cert_positive">positive</string> <string name="cert_revoke">revoke</string> - <string name="help_tab_wot">Web of Trust</string> <string name="cert_verify_ok">ok</string> <string name="cert_verify_failed">failed!</string> <string name="cert_verify_error">error!</string> <string name="cert_verify_unavailable">key unavailable</string> + + <!-- unsorted --> + <string name="section_signer_id">Signer</string> + <string name="section_cert">Certificate Details</string> + <string name="label_user_id">User ID</string> + <string name="unknown_uid"><unknown></string> + <string name="empty_certs">No certificates for this key</string> + <string name="section_uids_to_sign">User IDs to sign</string> <string name="label_revocation">Revocation Reason</string> <string name="label_verify_status">Verification Status</string> <string name="label_cert_type">Type</string> - <string name="can_certify">can certify</string> - <string name="can_certify_not">cannot certify</string> <string name="error_key_not_found">Key not found!</string> <string name="error_key_processing">Error processing key!</string> <string name="no_subkey">subkey unavailable</string> <string name="key_stripped">stripped</string> <string name="secret_cannot_multiple">Secret keys can only be deleted individually!</string> <string name="title_view_cert">View Certificate Details</string> + <string name="unknown_algorithm">unknown</string> <string name="can_sign_not">cannot sign</string> </resources> |