diff --git a/Graphics/drawables/status_signature_verified_inner.svg b/Graphics/drawables/status_signature_verified_inner.svg
new file mode 100644
index 000000000..554df0643
--- /dev/null
+++ b/Graphics/drawables/status_signature_verified_inner.svg
@@ -0,0 +1,77 @@
+
+
diff --git a/Graphics/update-drawables.sh b/Graphics/update-drawables.sh
index 8da894725..a2da5bbfc 100755
--- a/Graphics/update-drawables.sh
+++ b/Graphics/update-drawables.sh
@@ -22,7 +22,7 @@ SRC_DIR=./drawables/
#inkscape -w 512 -h 512 -e "$PLAY_DIR/$NAME.png" $NAME.svg
-for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "ic_action_encrypt_copy" "ic_action_encrypt_save" "ic_action_encrypt_share" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign"
+for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "ic_action_encrypt_copy" "ic_action_encrypt_save" "ic_action_encrypt_share" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign" "status_signature_verified_inner"
do
echo $NAME
inkscape -w 24 -h 24 -e "$MDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
@@ -32,7 +32,7 @@ inkscape -w 72 -h 72 -e "$XXDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
inkscape -w 96 -h 96 -e "$XXXDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg"
done
-for NAME in "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout"
+for NAME in "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "status_signature_verified_inner"
do
echo $NAME
inkscape -w 96 -h 96 -e "$MDPI_DIR/${NAME}_96dp.png" "$SRC_DIR/$NAME.svg"
@@ -60,4 +60,4 @@ for NAME in "first_time_1"
do
echo $NAME
inkscape -w 512 -h 512 -e "$DRAWABLE_DIR/$NAME.png" "$SRC_DIR/$NAME.svg"
-done
\ No newline at end of file
+done
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/LinkedResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/LinkedResource.java
index e954a514c..f91a24d57 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/LinkedResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/LinkedResource.java
@@ -15,6 +15,8 @@ import java.util.regex.Pattern;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
+
public abstract class LinkedResource {
@@ -102,6 +104,7 @@ public abstract class LinkedResource {
}
public abstract @DrawableRes int getDisplayIcon();
+ public abstract @StringRes int getVerifiedText();
public abstract String getDisplayTitle(Context context);
public abstract String getDisplayComment(Context context);
public boolean isViewable() {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/DnsResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/DnsResource.java
index 253e611a8..21c3a3eef 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/DnsResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/DnsResource.java
@@ -2,6 +2,7 @@ package org.sufficientlysecure.keychain.pgp.linked.resources;
import android.content.Context;
import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
@@ -103,6 +104,12 @@ public class DnsResource extends LinkedCookieResource {
return magicPattern.matcher(res);
}
+ @Override
+ public @StringRes
+ int getVerifiedText() {
+ return R.string.linked_verified_dns;
+ }
+
@Override
public @DrawableRes int getDisplayIcon() {
return R.drawable.dns;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/GenericHttpsResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/GenericHttpsResource.java
index 1e872c6cb..c6d5883ee 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/GenericHttpsResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/GenericHttpsResource.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
import com.textuality.keybase.lib.Search;
@@ -81,6 +82,8 @@ public class GenericHttpsResource extends LinkedCookieResource {
log.add(LogType.MSG_LV_FETCH_ERROR_URL, indent);
return null;
} catch (IOException e) {
+ Log.e(Constants.TAG, "io error", e);
+ e.printStackTrace();
log.add(LogType.MSG_LV_FETCH_ERROR_IO, indent);
return null;
}
@@ -109,6 +112,12 @@ public class GenericHttpsResource extends LinkedCookieResource {
return R.drawable.ssl_lock;
}
+ @Override
+ public @StringRes
+ int getVerifiedText() {
+ return R.string.linked_verified_https;
+ }
+
@Override
public String getDisplayTitle(Context context) {
return "Website (HTTPS)";
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/TwitterResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/TwitterResource.java
index 32bf92a99..8bc872f51 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/TwitterResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/linked/resources/TwitterResource.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
import android.util.Log;
import com.textuality.keybase.lib.JWalk;
@@ -118,6 +119,12 @@ public class TwitterResource extends LinkedCookieResource {
return R.drawable.twitter;
}
+ @Override
+ public @StringRes
+ int getVerifiedText() {
+ return R.string.linked_verified_twitter;
+ }
+
@Override
public String getDisplayTitle(Context context) {
return "Twitter";
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java
index 9727fab1d..e94ea5189 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java
@@ -201,7 +201,7 @@ public class LinkedIdsAdapter extends UserAttributesAdapter {
final public TextView vComment;
public ViewHolder(View view) {
- vVerified = (ImageView) view.findViewById(R.id.user_id_item_certified);
+ vVerified = (ImageView) view.findViewById(R.id.linked_id_certified_icon);
vIcon = (ImageView) view.findViewById(R.id.linked_id_type_icon);
vTitle = (TextView) view.findViewById(R.id.linked_id_title);
vComment = (TextView) view.findViewById(R.id.linked_id_comment);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
index c39e40761..502abe8e6 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java
@@ -7,6 +7,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
+import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -23,6 +24,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewAnimator;
@@ -240,6 +242,7 @@ public class LinkedIdViewFragment extends Fragment implements
static class ViewHolder {
private final View vButtonView;
private final ViewAnimator vVerifyingContainer;
+ private final ViewAnimator vItemCertified;
LinkedIdsAdapter.ViewHolder mLinkedIdHolder;
private ViewAnimator vButtonSwitcher;
@@ -267,6 +270,7 @@ public class LinkedIdViewFragment extends Fragment implements
vButtonView = root.findViewById(R.id.button_view);
vVerifyingContainer = (ViewAnimator) root.findViewById(R.id.linked_verify_container);
+ vItemCertified = (ViewAnimator) root.findViewById(R.id.linked_id_certified);
vProgress = (ViewAnimator) root.findViewById(R.id.linked_cert_progress);
vText = (TextView) root.findViewById(R.id.linked_cert_text);
@@ -285,7 +289,6 @@ public class LinkedIdViewFragment extends Fragment implements
break;
case VERIFY_OK:
- vText.setText("Ok");
vProgress.setDisplayedChild(1);
if (!isSecret) {
showButton(2);
@@ -315,7 +318,9 @@ public class LinkedIdViewFragment extends Fragment implements
if (vVerifyingContainer.getDisplayedChild() == (show ? 1 : 0)) {
return;
}
+
vVerifyingContainer.setDisplayedChild(show ? 1 : 0);
+ vItemCertified.setDisplayedChild(show ? 1 : 0);
}
void showButton(int which) {
@@ -386,6 +391,15 @@ public class LinkedIdViewFragment extends Fragment implements
mViewHolder = new ViewHolder(root);
root.setTag(mViewHolder);
+ ((ImageView) root.findViewById(R.id.status_icon_verified))
+ .setColorFilter(mContext.getResources().getColor(R.color.android_green_light),
+ PorterDuff.Mode.SRC_IN);
+ ((ImageView) root.findViewById(R.id.status_icon_invalid))
+ .setColorFilter(mContext.getResources().getColor(R.color.android_red_light),
+ PorterDuff.Mode.SRC_IN);
+
+
+
mViewHolder.vButtonBack.setClickable(true);
mViewHolder.vButtonBack.findViewById(R.id.back_button).setOnClickListener(new OnClickListener() {
@Override
@@ -459,9 +473,11 @@ public class LinkedIdViewFragment extends Fragment implements
return;
}
if (result.success()) {
+ mViewHolder.vText.setText(mLinkedResource.getVerifiedText());
mViewHolder.setVerifyingState(VerifyState.VERIFY_OK, mIsSecret);
} else {
mViewHolder.setVerifyingState(VerifyState.VERIFY_ERROR, mIsSecret);
+ result.createNotify(getActivity()).show();
}
mInProgress = null;
}
@@ -524,7 +540,7 @@ public class LinkedIdViewFragment extends Fragment implements
return;
}
- mViewHolder.setVerifyingState(VerifyState.CERTIFYING, mIsSecret);
+ mViewHolder.setVerifyingState(VerifyState.CERTIFYING, false);
Bundle data = new Bundle();
{
@@ -557,19 +573,11 @@ public class LinkedIdViewFragment extends Fragment implements
Bundle data = message.getData();
- if (message.arg1 == MessageStatus.UPDATE_PROGRESS.ordinal()) {
- if (data.containsKey(DATA_MESSAGE)) {
- mViewHolder.vText.setText(data.getString(DATA_MESSAGE));
- } else if (data.containsKey(DATA_MESSAGE_ID)) {
- mViewHolder.vText.setText(data.getString(DATA_MESSAGE_ID));
- }
- return;
- }
-
if (message.arg1 == MessageStatus.OKAY.ordinal()) {
CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT);
result.createNotify(getActivity()).show();
}
+
}
};
diff --git a/OpenKeychain/src/main/res/anim/fade_in_up.xml b/OpenKeychain/src/main/res/anim/fade_in_up.xml
new file mode 100644
index 000000000..c190c0f53
--- /dev/null
+++ b/OpenKeychain/src/main/res/anim/fade_in_up.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OpenKeychain/src/main/res/anim/fade_out_down.xml b/OpenKeychain/src/main/res/anim/fade_out_down.xml
new file mode 100644
index 000000000..523b180af
--- /dev/null
+++ b/OpenKeychain/src/main/res/anim/fade_out_down.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_24dp.png
new file mode 100644
index 000000000..e9dfc47a4
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_24dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_96dp.png b/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_96dp.png
new file mode 100644
index 000000000..4a3f2b2b5
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/status_signature_verified_inner_96dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_24dp.png
new file mode 100644
index 000000000..28e37d9f3
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_24dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_96dp.png b/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_96dp.png
new file mode 100644
index 000000000..cc7091df0
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/status_signature_verified_inner_96dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_24dp.png
new file mode 100644
index 000000000..ea801c45a
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_24dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_96dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_96dp.png
new file mode 100644
index 000000000..61610df19
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/status_signature_verified_inner_96dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_24dp.png
new file mode 100644
index 000000000..bcd73b09b
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_24dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_96dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_96dp.png
new file mode 100644
index 000000000..71e563218
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/status_signature_verified_inner_96dp.png differ
diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/status_signature_verified_inner_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/status_signature_verified_inner_24dp.png
new file mode 100644
index 000000000..cc7091df0
Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/status_signature_verified_inner_24dp.png differ
diff --git a/OpenKeychain/src/main/res/layout/linked_id_item.xml b/OpenKeychain/src/main/res/layout/linked_id_item.xml
index 5fc5e78a8..900d3a5d5 100644
--- a/OpenKeychain/src/main/res/layout/linked_id_item.xml
+++ b/OpenKeychain/src/main/res/layout/linked_id_item.xml
@@ -1,10 +1,12 @@
+ android:singleLine="true"
+ tools:showIn="@layout/linked_id_view_fragment">
-
-
+
+
+
diff --git a/OpenKeychain/src/main/res/layout/linked_id_view_fragment.xml b/OpenKeychain/src/main/res/layout/linked_id_view_fragment.xml
index 106d2343f..2fb79a4bf 100644
--- a/OpenKeychain/src/main/res/layout/linked_id_view_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/linked_id_view_fragment.xml
@@ -38,6 +38,8 @@
android:id="@+id/linked_verify_container"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out"
+ android:layout_marginLeft="12dp"
+ android:layout_marginRight="12dp"
>
@@ -49,36 +51,6 @@
android:orientation="horizontal"
android:singleLine="true">
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index 3e46a7328..4902485b0 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -1304,6 +1304,16 @@
"More bla:"
"After successful verification, press the Finish button to add the Linked Identity to your keyring and finish the process."
+ "Verify"
+ Text has been copied to clipboard
+ "The Website has been fetched and verified."
+ "The DNS record has been fetched and verified."
+ "The Tweet has been fetched and verified."
+
+ - "There is one more unknown identity type"
+ - "There are %d more unknown identity types"
+
+
"A \'linked identity\' connects your pgp key to a resource on the web."
"Please select a type:"
"This file claims ownership of the OpenPGP key with long id %2$s.\n\nCookie for proof:\n%1$s"
@@ -1315,11 +1325,5 @@
"Add Linked Identity"
"Linked Identities"
"Finish"
- "Verify"
- Text has been copied to clipboard
-
- - "There is one more unknown identity type"
- - "There are %d more unknown identity types"
-