|
@@ -24,6 +24,10 @@ import androidx.activity.result.ActivityResultLauncher;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.Nullable;
|
|
|
|
|
|
import com.compdfkit.core.annotation.CPDFAnnotation;
|
|
import com.compdfkit.core.annotation.CPDFAnnotation;
|
|
|
|
+import com.compdfkit.core.annotation.form.CPDFComboboxWidget;
|
|
|
|
+import com.compdfkit.core.annotation.form.CPDFListboxWidget;
|
|
|
|
+import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
|
|
|
|
+import com.compdfkit.core.document.CPDFDocument;
|
|
import com.compdfkit.core.edit.CPDFEditManager;
|
|
import com.compdfkit.core.edit.CPDFEditManager;
|
|
import com.compdfkit.pdfviewer.databinding.PdfSampleActivityBinding;
|
|
import com.compdfkit.pdfviewer.databinding.PdfSampleActivityBinding;
|
|
import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
|
|
import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
|
|
@@ -34,6 +38,7 @@ import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResu
|
|
import com.compdfkit.tools.common.utils.annotation.CPDFAnnotationManager;
|
|
import com.compdfkit.tools.common.utils.annotation.CPDFAnnotationManager;
|
|
import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
|
|
import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
|
|
import com.compdfkit.tools.common.utils.task.CExtractAssetFileTask;
|
|
import com.compdfkit.tools.common.utils.task.CExtractAssetFileTask;
|
|
|
|
+import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
|
|
import com.compdfkit.tools.common.utils.window.CPopupMenuWindow;
|
|
import com.compdfkit.tools.common.utils.window.CPopupMenuWindow;
|
|
import com.compdfkit.tools.common.views.pdfbota.CPDFBOTA;
|
|
import com.compdfkit.tools.common.views.pdfbota.CPDFBOTA;
|
|
import com.compdfkit.tools.common.views.pdfbota.CPDFBotaDialogFragment;
|
|
import com.compdfkit.tools.common.views.pdfbota.CPDFBotaDialogFragment;
|
|
@@ -43,8 +48,16 @@ import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CAnnotStyle;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleDialogFragment;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleDialogFragment;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
|
|
import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.manager.CStyleManager;
|
|
|
|
+import com.compdfkit.tools.common.views.pdfview.CPDFViewCtrl;
|
|
import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
|
|
import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
|
|
import com.compdfkit.tools.contenteditor.CPDFEditPage;
|
|
import com.compdfkit.tools.contenteditor.CPDFEditPage;
|
|
|
|
+import com.compdfkit.tools.forms.pdfproperties.pdfcombobox.CustomComboBoxWidgetImpl;
|
|
|
|
+import com.compdfkit.tools.forms.pdfproperties.pdflistbox.CustomListBoxWidgetImpl;
|
|
|
|
+import com.compdfkit.tools.forms.pdfproperties.pdfsign.CustomSignatureWidgetImpl;
|
|
|
|
+import com.compdfkit.tools.forms.pdfproperties.pdfsign.SignatureWidgetImpl;
|
|
|
|
+import com.compdfkit.tools.signature.CertificateDigitalDatas;
|
|
|
|
+import com.compdfkit.tools.signature.bean.CPDFDocumentSignInfo;
|
|
|
|
+import com.compdfkit.tools.signature.info.signlist.CPDFCertDigitalSignListDialog;
|
|
import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
|
|
import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
|
|
import com.compdfkit.ui.contextmenu.IContextMenuShowListener;
|
|
import com.compdfkit.ui.contextmenu.IContextMenuShowListener;
|
|
import com.compdfkit.ui.proxy.form.CPDFComboboxWidgetImpl;
|
|
import com.compdfkit.ui.proxy.form.CPDFComboboxWidgetImpl;
|
|
@@ -77,13 +90,13 @@ public class MainActivity extends CBasicPDFActivity {
|
|
readerView.getContextMenuShowListener().dismissContextMenu();
|
|
readerView.getContextMenuShowListener().dismissContextMenu();
|
|
}
|
|
}
|
|
CFileUtils.takeUriPermission(this, uri);
|
|
CFileUtils.takeUriPermission(this, uri);
|
|
- resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
|
|
|
|
binding.pdfView.resetAnnotationType();
|
|
binding.pdfView.resetAnnotationType();
|
|
binding.formToolBar.reset();
|
|
binding.formToolBar.reset();
|
|
binding.editToolBar.resetStatus();
|
|
binding.editToolBar.resetStatus();
|
|
|
|
+ binding.signatureToolBar.reset();
|
|
setPreviewMode(CPreviewMode.Viewer);
|
|
setPreviewMode(CPreviewMode.Viewer);
|
|
- binding.pdfToolBar.selectMode(CPreviewMode.Viewer);
|
|
|
|
screenManager.changeWindowStatus(CPreviewMode.Viewer);
|
|
screenManager.changeWindowStatus(CPreviewMode.Viewer);
|
|
|
|
+ screenManager.constraintHide(binding.signStatusView);
|
|
binding.pdfView.openPDF(uri, null, () -> {
|
|
binding.pdfView.openPDF(uri, null, () -> {
|
|
binding.editToolBar.setEditMode(false);
|
|
binding.editToolBar.setEditMode(false);
|
|
});
|
|
});
|
|
@@ -103,17 +116,24 @@ public class MainActivity extends CBasicPDFActivity {
|
|
initAnnotToolbar();
|
|
initAnnotToolbar();
|
|
initFormToolbar();
|
|
initFormToolbar();
|
|
initEditBar();
|
|
initEditBar();
|
|
|
|
+ initSignatureToolbar();
|
|
setPreviewMode(CPreviewMode.Viewer);
|
|
setPreviewMode(CPreviewMode.Viewer);
|
|
onDoNext();
|
|
onDoNext();
|
|
}
|
|
}
|
|
|
|
|
|
private void initPDFView() {
|
|
private void initPDFView() {
|
|
- CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) -> {
|
|
|
|
- binding.pdfView.openPDF(filePath);
|
|
|
|
- binding.editToolBar.setEditMode(false);
|
|
|
|
|
|
+ if (getIntent().getData() != null) {
|
|
|
|
+ CFileUtils.takeUriPermission(this, getIntent().getData());
|
|
|
|
+ binding.pdfView.openPDF(getIntent().getData());
|
|
|
|
+ binding.editToolBar.setEditMode(false);
|
|
|
|
+ }else {
|
|
|
|
+ CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) -> {
|
|
|
|
+ binding.pdfView.openPDF(filePath);
|
|
|
|
+ binding.editToolBar.setEditMode(false);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
|
|
binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
|
|
resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
|
|
resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
|
|
initAnnotationAttr(binding.pdfView);
|
|
initAnnotationAttr(binding.pdfView);
|
|
@@ -188,6 +208,9 @@ public class MainActivity extends CBasicPDFActivity {
|
|
case Form:
|
|
case Form:
|
|
binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.FORM);
|
|
binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.FORM);
|
|
break;
|
|
break;
|
|
|
|
+ case Signature:
|
|
|
|
+ binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.VIEW);
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -198,6 +221,7 @@ public class MainActivity extends CBasicPDFActivity {
|
|
binding.pdfToolBar.addMode(CPreviewMode.Annotation);
|
|
binding.pdfToolBar.addMode(CPreviewMode.Annotation);
|
|
binding.pdfToolBar.addMode(CPreviewMode.Edit);
|
|
binding.pdfToolBar.addMode(CPreviewMode.Edit);
|
|
binding.pdfToolBar.addMode(CPreviewMode.Form);
|
|
binding.pdfToolBar.addMode(CPreviewMode.Form);
|
|
|
|
+ binding.pdfToolBar.addMode(CPreviewMode.Signature);
|
|
binding.pdfToolBar.setPreviewModeChangeListener(this::setPreviewMode);
|
|
binding.pdfToolBar.setPreviewModeChangeListener(this::setPreviewMode);
|
|
binding.pdfToolBar.setSearchBtnClickListener(v -> {
|
|
binding.pdfToolBar.setSearchBtnClickListener(v -> {
|
|
if (binding.pdfView.getCPdfReaderView().getEditManager().isEditMode()) {
|
|
if (binding.pdfView.getCPdfReaderView().getEditManager().isEditMode()) {
|
|
@@ -377,6 +401,44 @@ public class MainActivity extends CBasicPDFActivity {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void initSignatureToolbar() {
|
|
|
|
+ binding.signStatusView.initWithPDFView(binding.pdfView);
|
|
|
|
+ binding.signStatusView.getBtnDetails().setOnClickListener(v -> {
|
|
|
|
+ CPDFCertDigitalSignListDialog signListDialog = CPDFCertDigitalSignListDialog.newInstance();
|
|
|
|
+ signListDialog.initWithPDFView(binding.pdfView);
|
|
|
|
+ signListDialog.setDialogDismissListener(this::verifyDocumentSignStatus);
|
|
|
|
+ signListDialog.show(getSupportFragmentManager(), "signListDialog");
|
|
|
|
+ });
|
|
|
|
+ binding.signatureToolBar.initWithPDFView(binding.pdfView);
|
|
|
|
+ binding.signatureToolBar.getVerifySignButton().setOnClickListener(v -> {
|
|
|
|
+ verifyDocumentSignStatus();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+ private void verifyDocumentSignStatus() {
|
|
|
|
+ CPDFDocument document = binding.pdfView.getCPdfReaderView().getPDFDocument();
|
|
|
|
+ if (CertificateDigitalDatas.hasDigitalSignature(document)) {
|
|
|
|
+ CThreadPoolUtils.getInstance().executeIO(() -> {
|
|
|
|
+ CPDFDocumentSignInfo status = CertificateDigitalDatas.verifyDocumentSignStatus(document);
|
|
|
|
+ runOnUiThread(() -> {
|
|
|
|
+ if (status != null) {
|
|
|
|
+ binding.signStatusView.setStatus(status);
|
|
|
|
+ screenManager.fillScreenManager.bindTopToolView(binding.signStatusView);
|
|
|
|
+ screenManager.constraintShow(binding.signStatusView);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ if (binding.signStatusView.getVisibility() == View.VISIBLE) {
|
|
|
|
+ screenManager.fillScreenManager.removeAndHideToolView(binding.signStatusView);
|
|
|
|
+ screenManager.constraintHide(binding.signStatusView);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void selectDocument() {
|
|
private void selectDocument() {
|
|
if (binding.pdfToolBar.getMode() == CPreviewMode.Edit) {
|
|
if (binding.pdfToolBar.getMode() == CPreviewMode.Edit) {
|
|
binding.pdfView.exitEditMode();
|
|
binding.pdfView.exitEditMode();
|
|
@@ -458,6 +520,13 @@ public class MainActivity extends CBasicPDFActivity {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ protected void registerFormHelper(CPDFViewCtrl pdfView) {
|
|
|
|
+ super.registerFormHelper(pdfView);
|
|
|
|
+ pdfView.getCPdfReaderView().getAnnotImplRegistry()
|
|
|
|
+ // Register the CustomSignatureWidgetImpl.class to implement a custom dropdown options popup.
|
|
|
|
+ .registImpl(CPDFSignatureWidget.class, SignatureWidgetImpl.class);
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void onBackPressed() {
|
|
public void onBackPressed() {
|