From 6f156498ed03a9668a92aa5118cfab9929554e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 28 Jan 2015 15:40:19 +0100 Subject: [PATCH] Callback to execute signature button click --- .../ui/messageview/MessageContainerView.java | 11 ++-- .../k9/ui/messageview/MessageTopView.java | 7 ++- .../ui/messageview/MessageViewFragment.java | 17 +++++- .../k9/ui/messageview/OpenPgpHeaderView.java | 53 +++++++++---------- .../OpenPgpHeaderViewCallback.java | 9 ++++ k9mail/src/main/res/values/strings.xml | 4 +- 6 files changed, 64 insertions(+), 37 deletions(-) create mode 100644 k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderViewCallback.java diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java index 577c96e8d..2eac9e7b3 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java @@ -97,6 +97,7 @@ public class MessageContainerView extends LinearLayout implements OnClickListene private LayoutInflater mInflater; private Contacts mContacts; private AttachmentViewCallback attachmentCallback; + private OpenPgpHeaderViewCallback openPgpHeaderViewCallback; private View mAttachmentsContainer; private SavedState mSavedState; private ClipboardManager mClipboardManager; @@ -104,8 +105,10 @@ public class MessageContainerView extends LinearLayout implements OnClickListene private Map attachments = new HashMap(); - public void initialize(Fragment fragment, AttachmentViewCallback attachmentCallback) { + public void initialize(Fragment fragment, AttachmentViewCallback attachmentCallback, + OpenPgpHeaderViewCallback openPgpHeaderViewCallback) { this.attachmentCallback = attachmentCallback; + this.openPgpHeaderViewCallback = openPgpHeaderViewCallback; mOpenPgpHeaderStub = (ViewStub) findViewById(R.id.openpgp_header_stub); mSidebar = findViewById(R.id.message_sidebar); @@ -437,6 +440,7 @@ public class MessageContainerView extends LinearLayout implements OnClickListene // if (mHasOpenPgpInfo) { renderOpenPgpHeader(messageViewContainer); mSidebar.setVisibility(View.VISIBLE); + // } // Save the text so we can reset the WebView when the user clicks the "Show pictures" button @@ -502,8 +506,9 @@ public class MessageContainerView extends LinearLayout implements OnClickListene public void renderOpenPgpHeader(MessageViewContainer messageContainer) { // inflate real header into stub OpenPgpHeaderView view = (OpenPgpHeaderView) mOpenPgpHeaderStub.inflate(); - // view.setCallback(attachmentCallback); - view.setOpenPgpData(messageContainer.signatureResult, messageContainer.encrypted); + view.setCallback(openPgpHeaderViewCallback); + view.setOpenPgpData(messageContainer.signatureResult, messageContainer.encrypted, + messageContainer.pgpPendingIntent); } public void renderAttachments(MessageViewContainer messageContainer) throws MessagingException { diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java index 341460ca5..90c595d68 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java @@ -31,14 +31,17 @@ public class MessageTopView extends LinearLayout { private Fragment fragment; private Button mDownloadRemainder; private AttachmentViewCallback attachmentCallback; + private OpenPgpHeaderViewCallback openPgpHeaderViewCallback; public MessageTopView(Context context, AttributeSet attrs) { super(context, attrs); } - public void initialize (Fragment fragment, AttachmentViewCallback attachmentCallback) { + public void initialize (Fragment fragment, AttachmentViewCallback attachmentCallback, + OpenPgpHeaderViewCallback openPgpHeaderViewCallback) { this.fragment = fragment; this.attachmentCallback = attachmentCallback; + this.openPgpHeaderViewCallback = openPgpHeaderViewCallback; mHeaderContainer = (MessageHeader) findViewById(R.id.header_container); // mHeaderContainer.setOnLayoutChangedListener(this); @@ -66,7 +69,7 @@ public class MessageTopView extends LinearLayout { for (MessageViewContainer container : messageViewInfo.containers) { MessageContainerView view = (MessageContainerView) mInflater.inflate(R.layout.message_container, null); - view.initialize(fragment, attachmentCallback); + view.initialize(fragment, attachmentCallback, openPgpHeaderViewCallback); view.setMessage(container); containerViews.addView(view); } diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.java index bce40dff5..bfd3edde1 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageViewFragment.java @@ -10,8 +10,10 @@ import android.app.Fragment; import android.app.FragmentManager; import android.app.LoaderManager; import android.app.LoaderManager.LoaderCallbacks; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.IntentSender; import android.content.Loader; import android.net.Uri; import android.os.Bundle; @@ -52,7 +54,7 @@ import org.openintents.openpgp.OpenPgpSignatureResult; public class MessageViewFragment extends Fragment implements ConfirmationDialogFragmentListener, - AttachmentViewCallback { + AttachmentViewCallback, OpenPgpHeaderViewCallback { private static final String ARG_REFERENCE = "reference"; @@ -147,7 +149,7 @@ public class MessageViewFragment extends Fragment implements ConfirmationDialogF mMessageView = (MessageTopView) view.findViewById(R.id.message_view); - mMessageView.initialize(this, this); + mMessageView.initialize(this, this, this); mMessageView.setOnToggleFlagClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -697,6 +699,17 @@ public class MessageViewFragment extends Fragment implements ConfirmationDialogF // mMessageView.refreshAttachmentThumbnail(attachment); } + @Override + public void onPgpSignatureButtonClick(PendingIntent pendingIntent) { + try { + getActivity().startIntentSenderForResult( + pendingIntent.getIntentSender(), + 42, null, 0, 0, 0); + } catch (IntentSender.SendIntentException e) { + Log.e(K9.LOG_TAG, "SendIntentException", e); + } + } + public interface MessageViewFragmentListener { public void onForward(LocalMessage mMessage, PgpData mPgpData); public void disableDeleteAction(); diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java index 3396b190b..1fff39685 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java @@ -1,6 +1,7 @@ package com.fsck.k9.ui.messageview; +import android.app.PendingIntent; import android.content.Context; import android.graphics.PorterDuff; import android.util.AttributeSet; @@ -16,10 +17,12 @@ import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.util.OpenPgpUtils; public class OpenPgpHeaderView extends LinearLayout { + private Context mContext; + private OpenPgpHeaderViewCallback callback; + private OpenPgpSignatureResult signatureResult; private boolean encrypted; - - private Context mContext; + private PendingIntent pendingIntent; private ImageView mResultEncryptionIcon; private TextView mResultEncryptionText; @@ -30,22 +33,24 @@ public class OpenPgpHeaderView extends LinearLayout { private TextView mResultSignatureEmail; private Button mResultSignatureButton; -// private PendingIntent mMissingKeyPI; -// private static final int REQUEST_CODE_DECRYPT_VERIFY = 12; - public OpenPgpHeaderView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } public void setOpenPgpData(OpenPgpSignatureResult signatureResult, - boolean encrypted) { + boolean encrypted, PendingIntent pendingIntent) { this.signatureResult = signatureResult; this.encrypted = encrypted; + this.pendingIntent = pendingIntent; displayOpenPgpView(); } + public void setCallback(OpenPgpHeaderViewCallback callback) { + this.callback = callback; + } + public void displayOpenPgpView() { mResultEncryptionIcon = (ImageView) findViewById(R.id.result_encryption_icon); mResultEncryptionText = (TextView) findViewById(R.id.result_encryption_text); @@ -56,17 +61,12 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureEmail = (TextView) findViewById(R.id.result_signature_email); mResultSignatureButton = (Button) findViewById(R.id.result_signature_button); -// mGetKeyButton.setOnClickListener(new OnClickListener() { -// @Override -// public void onClick(View v) { -// getMissingKey(); -// } -// }); - -// public void setFragment(Fragment fragment) { -// mFragment = (MessageViewFragment) fragment; -// } - + mResultSignatureButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + callback.onPgpSignatureButtonClick(pendingIntent); + } + }); if (encrypted) { setStatusImage(mContext, mResultEncryptionIcon, mResultEncryptionText, STATE_ENCRYPTED); @@ -95,6 +95,7 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureText.setText(R.string.openpgp_result_signature_certified); setUserId(signatureResult); + mResultSignatureButton.setText(R.string.openpgp_result_action_show); mResultSignatureButton.setVisibility(View.VISIBLE); mResultSignatureLayout.setVisibility(View.VISIBLE); @@ -105,6 +106,7 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureText.setText(R.string.openpgp_result_signature_missing_key); setUserId(signatureResult); + mResultSignatureButton.setText(R.string.openpgp_result_action_lookup); mResultSignatureButton.setVisibility(View.VISIBLE); mResultSignatureLayout.setVisibility(View.VISIBLE); @@ -115,6 +117,7 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureText.setText(R.string.openpgp_result_signature_uncertified); setUserId(signatureResult); + mResultSignatureButton.setText(R.string.openpgp_result_action_show); mResultSignatureButton.setVisibility(View.VISIBLE); mResultSignatureLayout.setVisibility(View.VISIBLE); @@ -125,6 +128,7 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureText.setText(R.string.openpgp_result_signature_expired_key); setUserId(signatureResult); + mResultSignatureButton.setText(R.string.openpgp_result_action_show); mResultSignatureButton.setVisibility(View.VISIBLE); mResultSignatureLayout.setVisibility(View.VISIBLE); @@ -135,6 +139,7 @@ public class OpenPgpHeaderView extends LinearLayout { mResultSignatureText.setText(R.string.openpgp_result_signature_revoked_key); setUserId(signatureResult); + mResultSignatureButton.setText(R.string.openpgp_result_action_show); mResultSignatureButton.setVisibility(View.VISIBLE); mResultSignatureLayout.setVisibility(View.VISIBLE); @@ -153,12 +158,12 @@ public class OpenPgpHeaderView extends LinearLayout { if (splitUserId[0] != null) { mResultSignatureName.setText(splitUserId[0]); } else { - mResultSignatureName.setText("no name"); + mResultSignatureName.setText(R.string.openpgp_result_no_name); } if (splitUserId[1] != null) { mResultSignatureEmail.setText(splitUserId[1]); } else { - mResultSignatureEmail.setText("no email"); + mResultSignatureEmail.setText(R.string.openpgp_result_no_email); } } @@ -288,14 +293,4 @@ public class OpenPgpHeaderView extends LinearLayout { } } -// private void getMissingKey() { -// try { -// mFragment.getActivity().startIntentSenderForResult( -// mMissingKeyPI.getIntentSender(), -// REQUEST_CODE_DECRYPT_VERIFY, null, 0, 0, 0); -// } catch (SendIntentException e) { -// Log.e(K9.LOG_TAG, "SendIntentException", e); -// } -// } - } diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderViewCallback.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderViewCallback.java new file mode 100644 index 000000000..351e6a567 --- /dev/null +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderViewCallback.java @@ -0,0 +1,9 @@ +package com.fsck.k9.ui.messageview; + + +import android.app.PendingIntent; + + +interface OpenPgpHeaderViewCallback { + void onPgpSignatureButtonClick(PendingIntent pendingIntent); +} diff --git a/k9mail/src/main/res/values/strings.xml b/k9mail/src/main/res/values/strings.xml index b44cc5982..efcd026e8 100644 --- a/k9mail/src/main/res/values/strings.xml +++ b/k9mail/src/main/res/values/strings.xml @@ -1127,7 +1127,9 @@ Please submit bug reports, contribute new features and ask questions at "Encrypted" "Not Encrypted" "Show" - "Lookup" + "Lookup" + "No name" + "No email" Use client certificate