aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-10-23 23:31:28 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-10-23 23:31:28 +0200
commit76a1e99d7e30679722ffe2cb0c8c12b048adc369 (patch)
treed488809449e0465d82f187f54d083b042ab930a8 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain
parent214b60cd0049c90ea120401646c9d9ae707dc4ad (diff)
parentecfa2288eb58c631900261270a99c8dcf27b4b4d (diff)
downloadopen-keychain-76a1e99d7e30679722ffe2cb0c8c12b048adc369.tar.gz
open-keychain-76a1e99d7e30679722ffe2cb0c8c12b048adc369.tar.bz2
open-keychain-76a1e99d7e30679722ffe2cb0c8c12b048adc369.zip
Merge branch 'development' of github.com:open-keychain/open-keychain into development
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java27
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java16
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java19
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java9
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java32
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SelectKeyCursorAdapter.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java6
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/SignKeySpinner.java6
10 files changed, 81 insertions, 47 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
index ec9509768..cacceb5d0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
@@ -23,6 +23,7 @@ import android.app.Application;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Build;
@@ -139,16 +140,20 @@ public class KeychainApplication extends Application {
}
static void brandGlowEffect(Context context, int brandColor) {
- // terrible hack to brand the edge overscroll glow effect
- // https://gist.github.com/menny/7878762#file-brandgloweffect_full-java
-
- //glow
- int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
- Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
- androidGlow.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
- //edge
- int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable", "android");
- Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId);
- androidEdge.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
+ try {
+ // terrible hack to brand the edge overscroll glow effect
+ // https://gist.github.com/menny/7878762#file-brandgloweffect_full-java
+
+ //glow
+ int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
+ Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
+ androidGlow.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
+ //edge
+ int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable", "android");
+ Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId);
+ androidEdge.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
+ } catch (Resources.NotFoundException e) {
+ // no hack on Android 5
+ }
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
index 2b2fbf4c2..a3ddd5325 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
@@ -41,6 +41,7 @@ import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Utf8Util;
+import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -160,11 +161,15 @@ public class UncachedKeyRing {
}
try {
- while(stream.available() > 0) {
+ while (stream.available() > 0) {
// if there are no objects left from the last factory, create a new one
if (mObjectFactory == null) {
- mObjectFactory = new PGPObjectFactory(PGPUtil.getDecoderStream(stream),
- new JcaKeyFingerprintCalculator());
+ InputStream in = PGPUtil.getDecoderStream(stream);
+ if (!BufferedInputStream.class.isInstance(in)) {
+ in = new BufferedInputStream(in);
+ }
+
+ mObjectFactory = new PGPObjectFactory(in, new JcaKeyFingerprintCalculator());
}
// go through all objects in this block
@@ -184,9 +189,10 @@ public class UncachedKeyRing {
mObjectFactory = null;
}
} catch (IOException e) {
- Log.e(Constants.TAG, "IOException while processing stream", e);
+ Log.e(Constants.TAG, "IOException while processing stream. ArmoredInputStream CRC check failed?", e);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ Log.e(Constants.TAG, "ArmoredInputStream decode failed, symbol is not in decodingTable!", e);
}
-
}
@Override
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
index b886fc69c..0b28a2594 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
+import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -51,11 +52,10 @@ import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView.MultiChoiceModeListener;
import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
-import android.widget.Spinner;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
@@ -84,7 +84,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
-import java.util.List;
import edu.cmu.cylab.starslinger.exchange.ExchangeActivity;
import edu.cmu.cylab.starslinger.exchange.ExchangeConfig;
@@ -585,18 +584,22 @@ public class KeyListFragment extends LoaderFragment
TextView mMainUserIdRest;
ImageView mStatus;
View mSlinger;
+ ImageButton mSlingerButton;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.key_list_item, parent, false);
final ItemViewHolder holder = new ItemViewHolder();
- holder.mMainUserId = (TextView) view.findViewById(R.id.mainUserId);
- holder.mMainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest);
- holder.mStatus = (ImageView) view.findViewById(R.id.status_icon);
- holder.mSlinger = view.findViewById(R.id.slinger_view);
+ holder.mMainUserId = (TextView) view.findViewById(R.id.key_list_item_name);
+ holder.mMainUserIdRest = (TextView) view.findViewById(R.id.key_list_item_email);
+ holder.mStatus = (ImageView) view.findViewById(R.id.key_list_item_status_icon);
+ holder.mSlinger = view.findViewById(R.id.key_list_item_slinger_view);
+ holder.mSlingerButton = (ImageButton) view.findViewById(R.id.key_list_item_slinger_button);
+ holder.mSlingerButton.setColorFilter(context.getResources().getColor(R.color.tertiary_text_light),
+ PorterDuff.Mode.SRC_IN);
view.setTag(holder);
- view.findViewById(R.id.slinger_button).setOnClickListener(new OnClickListener() {
+ view.findViewById(R.id.key_list_item_slinger_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (holder.mMasterKeyId != null) {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
index 1efd2c935..e7f1be3f2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java
@@ -21,6 +21,7 @@ import android.annotation.TargetApi;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
+import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
@@ -33,6 +34,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -68,7 +70,7 @@ public class ViewKeyShareFragment extends LoaderFragment implements
private View mFingerprintClipboardButton;
private View mKeyShareButton;
private View mKeyClipboardButton;
- private View mKeySafeSlingerButton;
+ private ImageButton mKeySafeSlingerButton;
private View mNfcHelpButton;
private View mNfcPrefsButton;
private View mKeyUploadButton;
@@ -96,11 +98,14 @@ public class ViewKeyShareFragment extends LoaderFragment implements
mFingerprintClipboardButton = view.findViewById(R.id.view_key_action_fingerprint_clipboard);
mKeyShareButton = view.findViewById(R.id.view_key_action_key_share);
mKeyClipboardButton = view.findViewById(R.id.view_key_action_key_clipboard);
- mKeySafeSlingerButton = view.findViewById(R.id.view_key_action_key_safeslinger);
+ mKeySafeSlingerButton = (ImageButton) view.findViewById(R.id.view_key_action_key_safeslinger);
mNfcHelpButton = view.findViewById(R.id.view_key_action_nfc_help);
mNfcPrefsButton = view.findViewById(R.id.view_key_action_nfc_prefs);
mKeyUploadButton = view.findViewById(R.id.view_key_action_upload);
+ mKeySafeSlingerButton.setColorFilter(getResources().getColor(R.color.tertiary_text_light),
+ PorterDuff.Mode.SRC_IN);
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mNfcPrefsButton.setVisibility(View.VISIBLE);
} else {
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 aabb310d0..a9795cdd1 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
@@ -169,18 +169,27 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
}
if (entry.isRevoked()) {
- holder.status.setVisibility(View.VISIBLE);
- KeyFormattingUtils.setStatusImage(getContext(), holder.status, KeyFormattingUtils.STATE_REVOKED);
- // no more space for algorithm display
- holder.algorithm.setVisibility(View.GONE);
+ KeyFormattingUtils.setStatusImage(getContext(), holder.status, null, KeyFormattingUtils.STATE_REVOKED, true);
} else if (entry.isExpired()) {
+ KeyFormattingUtils.setStatusImage(getContext(), holder.status, null, KeyFormattingUtils.STATE_EXPIRED, true);
+ }
+
+ if (entry.isRevoked() || 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);
+
+ holder.mainUserId.setTextColor(getContext().getResources().getColor(R.color.bg_gray));
+ holder.mainUserIdRest.setTextColor(getContext().getResources().getColor(R.color.bg_gray));
+ holder.keyId.setTextColor(getContext().getResources().getColor(R.color.bg_gray));
} else {
holder.status.setVisibility(View.GONE);
holder.algorithm.setVisibility(View.VISIBLE);
+
+ holder.mainUserId.setTextColor(getContext().getResources().getColor(R.color.black));
+ holder.mainUserIdRest.setTextColor(getContext().getResources().getColor(R.color.black));
+ holder.keyId.setTextColor(getContext().getResources().getColor(R.color.black));
}
if (entry.getUserIds().size() == 1) {
@@ -203,6 +212,12 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
uidView.setText(highlighter.highlight(cUserId));
uidView.setPadding(0, 0, FormattingUtils.dpToPx(getContext(), 8), 0);
+ if (entry.isRevoked() || entry.isExpired()) {
+ uidView.setTextColor(getContext().getResources().getColor(R.color.bg_gray));
+ } else {
+ uidView.setTextColor(getContext().getResources().getColor(R.color.black));
+ }
+
holder.userIdsList.addView(uidView);
for (String email : cEmails) {
@@ -212,6 +227,13 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
FormattingUtils.dpToPx(getContext(), 16), 0,
FormattingUtils.dpToPx(getContext(), 8), 0);
emailView.setText(highlighter.highlight(email));
+
+ if (entry.isRevoked() || entry.isExpired()) {
+ emailView.setTextColor(getContext().getResources().getColor(R.color.bg_gray));
+ } else {
+ emailView.setTextColor(getContext().getResources().getColor(R.color.black));
+ }
+
holder.userIdsList.addView(emailView);
}
}
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 c864c7138..8b6a04b99 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
@@ -152,7 +152,7 @@ abstract public class SelectKeyCursorAdapter extends CursorAdapter {
View view = mInflater.inflate(R.layout.select_key_item, null);
ViewHolderItem holder = new ViewHolderItem();
holder.view = view;
- holder.mainUserId = (TextView) view.findViewById(R.id.mainUserId);
+ holder.mainUserId = (TextView) view.findViewById(R.id.key_list_item_name);
holder.mainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest);
holder.keyId = (TextView) view.findViewById(R.id.subkey_item_key_id);
holder.statusIcon = (ImageView) view.findViewById(R.id.status_icon);
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 7bbd3eee3..a032e96fc 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
@@ -249,15 +249,11 @@ public class SubkeysAdapter extends CursorAdapter {
vKeyExpiry.setText(context.getString(R.string.label_expiry) + ": " + context.getString(R.string.none));
}
- // if key is expired or revoked, strike through text
+ // if key is expired or revoked...
boolean isInvalid = isRevoked || isExpired;
if (isInvalid) {
vStatus.setVisibility(View.VISIBLE);
- vKeyId.setText(FormattingUtils.strikeOutText(vKeyId.getText()));
- vKeyDetails.setText(FormattingUtils.strikeOutText(vKeyDetails.getText()));
- vKeyExpiry.setText(FormattingUtils.strikeOutText(vKeyExpiry.getText()));
-
vCertifyIcon.setColorFilter(
mContext.getResources().getColor(R.color.bg_gray),
PorterDuff.Mode.SRC_IN);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
index 55ed7c65b..a2e1930d3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java
@@ -166,13 +166,10 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC
// set revocation icon (can this even be primary?)
KeyFormattingUtils.setStatusImage(mContext, vVerified, null, KeyFormattingUtils.STATE_REVOKED, true);
- // disable and strike through text for revoked user ids
+ // disable revoked user ids
vName.setEnabled(false);
vAddress.setEnabled(false);
vComment.setEnabled(false);
- vName.setText(FormattingUtils.strikeOutText(vName.getText()));
- vAddress.setText(FormattingUtils.strikeOutText(vAddress.getText()));
- vComment.setText(FormattingUtils.strikeOutText(vComment.getText()));
} else {
vName.setEnabled(true);
vAddress.setEnabled(true);
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 0a1a1d75b..6f37f1c72 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
@@ -102,16 +102,16 @@ public class CertifyKeySpinner extends KeySpinner {
@Override
boolean setStatus(Context context, Cursor cursor, ImageView statusView) {
if (cursor.getInt(mIndexIsRevoked) != 0) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_REVOKED);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_REVOKED, true);
return false;
}
if (cursor.getInt(mIndexIsExpired) != 0) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_EXPIRED);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_EXPIRED, true);
return false;
}
// don't invalidate the "None" entry, which is also null!
if (cursor.getPosition() != 0 && cursor.isNull(mIndexHasCertify)) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_UNAVAILABLE);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_UNAVAILABLE, true);
return false;
}
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 2f002d470..59d05a62e 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
@@ -84,15 +84,15 @@ public class SignKeySpinner extends KeySpinner {
@Override
boolean setStatus(Context context, Cursor cursor, ImageView statusView) {
if (cursor.getInt(mIndexIsRevoked) != 0) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_REVOKED);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_REVOKED, true);
return false;
}
if (cursor.getInt(mIndexIsExpired) != 0) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_EXPIRED);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_EXPIRED, true);
return false;
}
if (cursor.getInt(mIndexHasSign) == 0) {
- KeyFormattingUtils.setStatusImage(getContext(), statusView, KeyFormattingUtils.STATE_UNAVAILABLE);
+ KeyFormattingUtils.setStatusImage(getContext(), statusView, null, KeyFormattingUtils.STATE_UNAVAILABLE, true);
return false;
}