diff options
author | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-22 15:04:18 +0100 |
---|---|---|
committer | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-27 09:53:40 +0100 |
commit | ae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3 (patch) | |
tree | c620c60d892dfdc0621aef412f1cb6da4d633c88 /platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java | |
parent | 57ceaf3fe8ea3c180d52d6c01b083bc293835664 (diff) | |
download | mupdf-ae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3.tar.xz |
Android: add signature checking
Diffstat (limited to 'platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java')
-rw-r--r-- | platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java b/platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java index 043b90ab..2cb3974b 100644 --- a/platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java +++ b/platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java @@ -17,6 +17,7 @@ import android.widget.EditText; abstract class PassClickResultVisitor { public abstract void visitText(PassClickResultText result); public abstract void visitChoice(PassClickResultChoice result); + public abstract void visitSignature(PassClickResultSignature result); } class PassClickResult { @@ -58,6 +59,19 @@ class PassClickResultChoice extends PassClickResult { } } +class PassClickResultSignature extends PassClickResult { + public final boolean isSigned; + + public PassClickResultSignature(boolean _changed, boolean _isSigned) { + super(_changed); + isSigned = _isSigned; + } + + public void acceptVisitor(PassClickResultVisitor visitor) { + visitor.visitSignature(this); + } +} + public class MuPDFPageView extends PageView implements MuPDFView { private final MuPDFCore mCore; private AsyncTask<Void,Void,PassClickResult> mPassClick; @@ -68,6 +82,8 @@ public class MuPDFPageView extends PageView implements MuPDFView { private AsyncTask<Void,Void,Annotation[]> mLoadAnnotations; private AlertDialog.Builder mTextEntryBuilder; private AlertDialog.Builder mChoiceEntryBuilder; + private AlertDialog.Builder mSigningDialogBuilder; + private AlertDialog.Builder mSignatureReportBuilder; private AlertDialog mTextEntry; private EditText mEditText; private AsyncTask<String,Void,Boolean> mSetWidgetText; @@ -75,6 +91,7 @@ public class MuPDFPageView extends PageView implements MuPDFView { private AsyncTask<PointF[],Void,Void> mAddStrikeOut; private AsyncTask<PointF[][],Void,Void> mAddInk; private AsyncTask<Integer,Void,Void> mDeleteAnnotation; + private AsyncTask<Void,Void,String> mCheckSignature; private Runnable changeReporter; public MuPDFPageView(Context c, MuPDFCore core, Point parentSize) { @@ -112,6 +129,24 @@ public class MuPDFPageView extends PageView implements MuPDFView { mChoiceEntryBuilder = new AlertDialog.Builder(c); mChoiceEntryBuilder.setTitle(getContext().getString(R.string.choose_value)); + + mSigningDialogBuilder = new AlertDialog.Builder(c); + mSigningDialogBuilder.setTitle("Select certificate and sign?"); + mSigningDialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + + }); + mSignatureReportBuilder = new AlertDialog.Builder(c); + mSignatureReportBuilder.setTitle("Signature checked"); + mSignatureReportBuilder.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); } public LinkInfo hitLink(float x, float y) { @@ -160,6 +195,28 @@ public class MuPDFPageView extends PageView implements MuPDFView { dialog.show(); } + private void invokeSignatureCheckingDialog() { + mCheckSignature = new AsyncTask<Void,Void,String> () { + @Override + protected String doInBackground(Void... params) { + return mCore.checkFocusedSignature(); + } + @Override + protected void onPostExecute(String result) { + AlertDialog report = mSignatureReportBuilder.create(); + report.setMessage(result); + report.show(); + } + }; + + mCheckSignature.execute(); + } + + private void invokeSigningDialog() { + AlertDialog dialog = mSigningDialogBuilder.create(); + dialog.show(); + } + public void setChangeReporter(Runnable reporter) { changeReporter = reporter; } @@ -227,6 +284,14 @@ public class MuPDFPageView extends PageView implements MuPDFView { public void visitChoice(PassClickResultChoice result) { invokeChoiceDialog(result.options); } + + @Override + public void visitSignature(PassClickResultSignature result) { + if (result.isSigned) + invokeSignatureCheckingDialog(); + else + invokeSigningDialog(); + } }); } }; |