summaryrefslogtreecommitdiff
path: root/platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2013-08-22 15:04:18 +0100
committerPaul Gardiner <paulg.artifex@glidos.net>2013-08-27 09:53:40 +0100
commitae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3 (patch)
treec620c60d892dfdc0621aef412f1cb6da4d633c88 /platform/android/src/com/artifex/mupdfdemo/MuPDFPageView.java
parent57ceaf3fe8ea3c180d52d6c01b083bc293835664 (diff)
downloadmupdf-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.java65
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();
+ }
});
}
};