Browse Source

PDFTool(Android) - 1.优化部分代码内容

liuxiaolong 1 year ago
parent
commit
c69c1dca72
44 changed files with 191 additions and 315 deletions
  1. 3 3
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/CFileUtils.java
  2. 0 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/date/CDateUtil.java
  3. 25 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/CVerifyPasswordDialogFragment.java
  4. 7 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java
  5. 22 10
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfsign/SignatureWidgetImpl.java
  6. 0 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CDocumentEncryptionDialog.java
  7. 1 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CEncryptAlgorithmSpinnerAdapter.java
  8. 5 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkEditDialog.java
  9. 2 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragment.java
  10. 3 3
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragmentAdapter.java
  11. 0 63
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkToolBar.java
  12. 17 0
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CPageRange.java
  13. 4 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkImageStyleFragment.java
  14. 5 12
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkPageRangeAdapter.java
  15. 4 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkTextStyleFragment.java
  16. 6 6
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkPageView.java
  17. 6 4
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertAttrDatas.java
  18. 0 1
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertDetailsDialog.java
  19. 27 19
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertDigitalSignInfoDialog.java
  20. 1 2
      ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/signlist/adapter/CertDigitalSignListAdapter.java
  21. 0 1
      ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_document_encryption_dialog.xml
  22. 1 1
      ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_input_owner_pwd_dialog.xml
  23. 0 129
      ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_watermark_tool_bar.xml
  24. 2 2
      ComPDFKit_Tools/src/main/res/layout/tools_pdf_tool_bar_more_menu_layout.xml
  25. 1 0
      ComPDFKit_Tools/src/main/res/values-zh-rCN/tools_strings.xml
  26. 1 0
      ComPDFKit_Tools/src/main/res/values/tools_strings.xml
  27. 0 1
      ComPDFKit_Tools/src/main/res/values/tools_themes.xml
  28. 1 2
      DigitalSignature/src/main/AndroidManifest.xml
  29. 0 1
      DigitalSignature/src/main/java/com/compdfkit/digitalsignature/PDFSignaturesSampleActivity.java
  30. 0 1
      Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java
  31. 0 1
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/CSampleScreenManager.java
  32. 5 9
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java
  33. 0 2
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/DocumentListFragment.java
  34. 0 1
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeActivity.java
  35. 1 1
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunBean.java
  36. 0 2
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunFragment.java
  37. 19 4
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/datas/FunDatas.java
  38. 0 4
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/DocumentEncryptionSamplesImpl.java
  39. 0 1
      PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/WatermarkSamplesImpl.java
  40. 4 0
      PDFViewer/src/main/res/layout/rv_item_home_fun_item_content.xml
  41. 10 4
      PDFViewer/src/main/res/values-zh-rCN/strings.xml
  42. 8 4
      PDFViewer/src/main/res/values/strings.xml
  43. 0 1
      Samples/src/main/java/com/compdfkit/samples/SampleListActivity.java
  44. 0 1
      Samples/src/main/java/com/compdfkit/samples/samples/DigitalSignaturesTest.java

+ 3 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/CFileUtils.java

@@ -43,10 +43,10 @@ public class CFileUtils {
 
     public static final String EXPORT_FOLDER = "compdfkit/edit/export";
 
-    public static String getAssetsTempFile(Context context, String assetsName) {
+    public static String getAssetsTempFile(Context context, String assetsName, String saveName) {
         String path =  context.getCacheDir().getAbsolutePath();
-        copyFileFromAssets(context, assetsName, path, assetsName, false);
-        return path + "/" + assetsName;
+        copyFileFromAssets(context, assetsName, path, saveName, false);
+        return path + "/" + saveName;
     }
 
 

+ 0 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/utils/date/CDateUtil.java

@@ -24,8 +24,6 @@ public class CDateUtil {
 
     public static final String NORMAL_DATE_FORMAT_1 = "yyyy.MM.dd HH:mm:ss";
 
-    public static final String NORMAL_DATE_FORMAT_2 = "dd MMMM yyyy HH:mm:ss";
-
     /**
      * Transform a PDF date string in the format D:20230130060237+00'00' to a human-readable yyyy-MM-dd HH:mm:ss date string.
      *

+ 25 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/CVerifyPasswordDialogFragment.java

@@ -10,6 +10,7 @@
 package com.compdfkit.tools.common.views;
 
 
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
@@ -18,6 +19,7 @@ import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.View;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.widget.AppCompatButton;
 import androidx.appcompat.widget.AppCompatEditText;
 import androidx.appcompat.widget.AppCompatImageView;
@@ -26,6 +28,7 @@ import androidx.appcompat.widget.AppCompatTextView;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.basic.fragment.CBasicBottomSheetDialogFragment;
+import com.compdfkit.tools.common.interfaces.COnDialogDismissListener;
 import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
 
 public class CVerifyPasswordDialogFragment extends CBasicBottomSheetDialogFragment {
@@ -42,6 +45,8 @@ public class CVerifyPasswordDialogFragment extends CBasicBottomSheetDialogFragme
 
     private CVerifyCompleteListener completeListener;
 
+    private COnDialogDismissListener dismissListener;
+
     private CPDFDocument document;
 
     private Uri uri;
@@ -178,10 +183,30 @@ public class CVerifyPasswordDialogFragment extends CBasicBottomSheetDialogFragme
         return etPassword.getText().toString();
     }
 
+    @Override
+    public void onDismiss(@NonNull DialogInterface dialog) {
+        super.onDismiss(dialog);
+        if (dismissListener != null) {
+            dismissListener.dismiss();
+        }
+    }
+
+    @Override
+    public void onCancel(@NonNull DialogInterface dialog) {
+        super.onCancel(dialog);
+        if (dismissListener != null) {
+            dismissListener.dismiss();
+        }
+    }
+
     public void setVerifyCompleteListener(CVerifyCompleteListener completeListener) {
         this.completeListener = completeListener;
     }
 
+    public void setDismissListener(COnDialogDismissListener dismissListener) {
+        this.dismissListener = dismissListener;
+    }
+
     public interface CVerifyCompleteListener {
 
         void complete(CPDFDocument document);

+ 7 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/common/views/pdfview/CPDFViewCtrl.java

@@ -303,6 +303,13 @@ public class CPDFViewCtrl extends ConstraintLayout implements IReaderViewCallbac
                 } else {
                     verifyPasswordDialogFragment = CVerifyPasswordDialogFragment.newInstance(cpdfDocument, (Uri) pdf);
                 }
+                verifyPasswordDialogFragment.setDismissListener(()->{
+                    if (getCPdfReaderView().getPDFDocument() == null){
+                        if (getContext() instanceof FragmentActivity) {
+                            ((FragmentActivity) getContext()).onBackPressed();
+                        }
+                    }
+                });
                 verifyPasswordDialogFragment.setVerifyCompleteListener(document -> {
                     cPdfReaderView.setPDFDocument(document);
                     cPdfReaderView.setDisplayPageIndex(0);

+ 22 - 10
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/forms/pdfproperties/pdfsign/SignatureWidgetImpl.java

@@ -1,3 +1,12 @@
+/**
+ * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+ *
+ * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+ * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+ * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+ * This notice may not be removed from this file.
+ */
+
 package com.compdfkit.tools.forms.pdfproperties.pdfsign;
 
 import android.content.Context;
@@ -36,8 +45,12 @@ import java.util.UUID;
  * Form signature form click interaction is implemented. This object contains two signature interactions: electronic signature and digital signature.
  * If you only need electronic signature interaction, please check
  * @see CustomSignatureWidgetImpl
- * If you only need digital signature interaction, please check
  * @see com.compdfkit.tools.signature.pdfproperties.pdfsign.CDigitalSignatureWidgetImpl
+ *
+ * <br>
+ * <blockquote><pre>
+ * cpdfReaderView.getAnnotImplRegistry().registImpl(CPDFSignatureWidget.class, SignatureWidgetImpl.class);
+ * </pre></blockquote>
  */
 public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
 
@@ -61,7 +74,6 @@ public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
         }
     }
 
-
     /**
      * A list of created electronic signature styles pops up,
      * and you can also choose to create a new signature style.
@@ -106,7 +118,7 @@ public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
                             context.getString(R.string.tools_save_to_this_directory)
                     );
                     directoryDialog.setSelectFolderListener(dir -> {
-                        signDocument(cpdfSignatureWidget, config, location, reason, certFilePath, certPassword, dir);
+                        sigitalSignatureDocument(cpdfSignatureWidget, config, location, reason, certFilePath, certPassword, dir);
                     });
                     if (readerView.getContext() instanceof FragmentActivity) {
                         directoryDialog.show(((FragmentActivity) readerView.getContext()).getSupportFragmentManager(), "selectFolderDialog");
@@ -138,13 +150,13 @@ public class SignatureWidgetImpl extends CPDFSignatureWidgetImpl {
         }
     }
 
-    private void signDocument(CPDFSignatureWidget cpdfSignatureWidget,
-                              CPDFDigitalSigConfig config,
-                              String location,
-                              String reason,
-                              String certFilePath,
-                              String certPassword,
-                              String saveDir) {
+    private void sigitalSignatureDocument(CPDFSignatureWidget cpdfSignatureWidget,
+                                          CPDFDigitalSigConfig config,
+                                          String location,
+                                          String reason,
+                                          String certFilePath,
+                                          String certPassword,
+                                          String saveDir) {
 
         String uuid = UUID.randomUUID().toString().substring(0, 4);
         String fileName = readerView.getPDFDocument().getFileName();

+ 0 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CDocumentEncryptionDialog.java

@@ -28,7 +28,6 @@ import androidx.appcompat.widget.AppCompatButton;
 import androidx.appcompat.widget.AppCompatCheckBox;
 import androidx.appcompat.widget.AppCompatEditText;
 import androidx.appcompat.widget.AppCompatImageView;
-import androidx.appcompat.widget.AppCompatTextView;
 import androidx.core.content.ContextCompat;
 
 import com.compdfkit.core.document.CPDFDocument;
@@ -87,7 +86,6 @@ public class CDocumentEncryptionDialog extends CBasicBottomSheetDialogFragment i
 
     private AppCompatEditText etOwnerPassword;
 
-    private AppCompatTextView tvEncryptsFollowsFunctions;
 
     private AppCompatCheckBox cbRestrictPrint;
 
@@ -152,7 +150,6 @@ public class CDocumentEncryptionDialog extends CBasicBottomSheetDialogFragment i
         etUserPassword = rootView.findViewById(R.id.et_user_password);
         swOwnerPassword = rootView.findViewById(R.id.sw_setting_permission_password);
         etOwnerPassword = rootView.findViewById(R.id.et_owner_password);
-        tvEncryptsFollowsFunctions = rootView.findViewById(R.id.tv_owner_functions);
         cbRestrictPrint = rootView.findViewById(R.id.cb_print);
         cbRestrictCopy = rootView.findViewById(R.id.cb_copy);
         levelSpinner = rootView.findViewById(R.id.spinner_cryptographic_level);
@@ -294,7 +291,6 @@ public class CDocumentEncryptionDialog extends CBasicBottomSheetDialogFragment i
             cbRestrictCopy.setChecked(false);
             cbRestrictPrint.setChecked(false);
         }
-        setTextViewEnable(tvEncryptsFollowsFunctions, enable);
         setTextViewEnable(cbRestrictCopy, enable);
         setTextViewEnable(cbRestrictPrint, enable);
     }

+ 1 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/encryption/CEncryptAlgorithmSpinnerAdapter.java

@@ -26,7 +26,7 @@ import java.util.Arrays;
 import java.util.List;
 
 
-public class CEncryptAlgorithmSpinnerAdapter extends BaseAdapter {
+class CEncryptAlgorithmSpinnerAdapter extends BaseAdapter {
 
     public List<CPDFDocument.PDFDocumentEncryptAlgo> list;
 

+ 5 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkEditDialog.java

@@ -41,6 +41,7 @@ import java.io.File;
 /**
  * watermark edit dialog fragment
  * <blockquote><pre>
+ *
  *      CWatermarkEditDialog watermarkEditDialog = CWatermarkEditDialog.newInstance();
  *      watermarkEditDialog.setDocument(binding.pdfView.getCPdfReaderView().getPDFDocument());
  *      watermarkEditDialog.setPageIndex(binding.pdfView.currentPageIndex);
@@ -50,6 +51,7 @@ import java.io.File;
  *           watermarkEditDialog.dismiss();
  *      });
  *      watermarkEditDialog.show(getSupportFragmentManager(), "watermarkEditDialog");
+ *
  * </pre></blockquote><p>
  */
 public class CWatermarkEditDialog extends CBasicBottomSheetDialogFragment implements View.OnClickListener {
@@ -149,6 +151,9 @@ public class CWatermarkEditDialog extends CBasicBottomSheetDialogFragment implem
         if (v.getId() == toolBar.getIvToolBarBackBtn().getId()) {
             dismiss();
         } else if (v.getId() == R.id.btn_done) {
+            if (document == null){
+                return;
+            }
             Fragment fragment = getChildFragmentManager().findFragmentByTag("f" + tabLayout.getSelectedTabPosition());
             if (fragment != null && fragment instanceof CWatermarkPageFragment){
                 if (!((CWatermarkPageFragment) fragment).hasWatermark()) {

+ 2 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragment.java

@@ -9,9 +9,7 @@
 
 package com.compdfkit.tools.security.watermark;
 
-import android.content.res.Configuration;
 import android.graphics.Bitmap;
-import android.graphics.PointF;
 import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -33,7 +31,7 @@ import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CAnnotStyle;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CBasicOnStyleChangeListener;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleDialogFragment;
 import com.compdfkit.tools.common.views.pdfproperties.pdfstyle.CStyleType;
-import com.compdfkit.tools.security.watermark.pdfproperties.CWatermarkPageRangeAdapter;
+import com.compdfkit.tools.security.watermark.pdfproperties.CPageRange;
 import com.compdfkit.tools.security.watermark.view.CWatermarkPageView;
 import com.compdfkit.tools.security.watermark.view.CWatermarkView;
 
@@ -221,7 +219,7 @@ public class CWatermarkPageFragment extends Fragment {
             public void onChangeExtraMap(Map<String, Object> extraMap) {
                 super.onChangeExtraMap(extraMap);
                 if (extraMap.containsKey("pageRange")) {
-                    watermarkPageView.setPageRange(CWatermarkPageRangeAdapter.PageRange.valueOf((String) extraMap.get("pageRange")));
+                    watermarkPageView.setPageRange(CPageRange.valueOf((String) extraMap.get("pageRange")));
                 }
                 if (extraMap.containsKey("front")) {
                     watermarkPageView.setFront((Boolean) extraMap.get("front"));

+ 3 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkPageFragmentAdapter.java

@@ -1,6 +1,6 @@
 /**
  * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
- *
+ * <p>
  * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
@@ -17,7 +17,7 @@ import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.tools.security.watermark.view.CWatermarkView;
 
 
-public class CWatermarkPageFragmentAdapter extends FragmentStateAdapter {
+class CWatermarkPageFragmentAdapter extends FragmentStateAdapter {
 
     private CPDFDocument document;
 
@@ -32,7 +32,7 @@ public class CWatermarkPageFragmentAdapter extends FragmentStateAdapter {
     @NonNull
     @Override
     public Fragment createFragment(int position) {
-        CWatermarkPageFragment pageFragment =  CWatermarkPageFragment.newInstance(
+        CWatermarkPageFragment pageFragment = CWatermarkPageFragment.newInstance(
                 position == 0 ? CWatermarkView.EditType.TXT : CWatermarkView.EditType.Image);
         pageFragment.setDocument(document);
         pageFragment.setPageIndex(pageIndex);

+ 0 - 63
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/CWatermarkToolBar.java

@@ -1,63 +0,0 @@
-/**
- * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
- * <p>
- * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
- * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
- * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
- * This notice may not be removed from this file.
- */
-
-package com.compdfkit.tools.security.watermark;
-
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.constraintlayout.widget.ConstraintLayout;
-
-import com.compdfkit.tools.R;
-
-public class CWatermarkToolBar extends FrameLayout {
-
-    private ConstraintLayout clAddTextWatermark;
-
-    private ConstraintLayout clAddImageWatermark;
-
-    private ConstraintLayout clDeleteWatermark;
-
-    public CWatermarkToolBar(@NonNull Context context) {
-        this(context, null);
-    }
-
-    public CWatermarkToolBar(@NonNull Context context, @Nullable AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public CWatermarkToolBar(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        initView(context);
-    }
-
-    private void initView(Context context) {
-        inflate(context, R.layout.tools_cpdf_security_watermark_tool_bar, this);
-        clAddTextWatermark = findViewById(R.id.cl_add_text_watermark);
-        clAddImageWatermark = findViewById(R.id.cl_add_image_watermark);
-        clDeleteWatermark = findViewById(R.id.cl_delete_watermark);
-    }
-
-    public void setClickAddTextWatermarkListener(View.OnClickListener clickListener){
-        clAddTextWatermark.setOnClickListener(clickListener);
-    }
-
-    public void setClickAddImageWatermarkListener(View.OnClickListener clickListener){
-        clAddImageWatermark.setOnClickListener(clickListener);
-    }
-
-    public void setClickDeleteWatermarkListener(View.OnClickListener clickListener){
-        clDeleteWatermark.setOnClickListener(clickListener);
-    }
-}

+ 17 - 0
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CPageRange.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+ *
+ * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+ * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+ * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+ * This notice may not be removed from this file.
+ */
+
+package com.compdfkit.tools.security.watermark.pdfproperties;
+
+
+public enum CPageRange {
+    CurrentPage,
+
+    AllPages;
+}

+ 4 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkImageStyleFragment.java

@@ -92,19 +92,19 @@ public class CWatermarkImageStyleFragment extends CBasicPropertiesFragment imple
         CAnnotStyle annotStyle = viewModel.getStyle();
         if (annotStyle != null) {
             Map<String, Object> extraMap = annotStyle.getCustomExtraMap();
-            CWatermarkPageRangeAdapter.PageRange pageRange = CWatermarkPageRangeAdapter.PageRange.AllPages;
+            CPageRange pageRange = CPageRange.AllPages;
             if (extraMap.containsKey("pageRange")){
-                pageRange = CWatermarkPageRangeAdapter.PageRange.valueOf((String) extraMap.get("pageRange"));
+                pageRange = CPageRange.valueOf((String) extraMap.get("pageRange"));
             }
             // init pageRange spinner adapter
-            List<CWatermarkPageRangeAdapter.PageRange> pageRanges = Arrays.asList(CWatermarkPageRangeAdapter.PageRange.AllPages, CWatermarkPageRangeAdapter.PageRange.CurrentPage);
+            List<CPageRange> pageRanges = Arrays.asList(CPageRange.AllPages, CPageRange.CurrentPage);
             CWatermarkPageRangeAdapter pageRangeAdapter = new CWatermarkPageRangeAdapter(getContext(), pageRanges, pageRange);
             pageRangeSpinner.setAdapter(pageRangeAdapter);
             pageRangeSpinner.setSelection(pageRangeAdapter.getSelectItemIndex());
             pageRangeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                 @Override
                 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    CWatermarkPageRangeAdapter.PageRange pageRange = pageRangeAdapter.list.get(position);
+                    CPageRange pageRange = pageRangeAdapter.list.get(position);
                     pageRangeAdapter.setSelectItem(pageRange);
                     if (viewModel != null && viewModel.getStyle() != null) {
                         Map<String, Object> extraMap = viewModel.getStyle().getCustomExtraMap();

+ 5 - 12
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkPageRangeAdapter.java

@@ -21,30 +21,23 @@ import com.compdfkit.tools.common.basic.adapter.CBasicSpinnerAdapter;
 import java.util.List;
 
 
-public class CWatermarkPageRangeAdapter extends CBasicSpinnerAdapter<CWatermarkPageRangeAdapter.PageRange> {
+class CWatermarkPageRangeAdapter extends CBasicSpinnerAdapter<CPageRange> {
 
-
-    public CWatermarkPageRangeAdapter(@NonNull Context context, List<PageRange> list, PageRange selectItem) {
+    public CWatermarkPageRangeAdapter(@NonNull Context context, List<CPageRange> list, CPageRange selectItem) {
         super(context, list, selectItem);
     }
 
-    public enum PageRange{
-        CurrentPage,
-
-        AllPages;
-    }
-
     @Override
     public int getLayoutResIds() {
         return R.layout.tools_spinner_list_item;
     }
 
     @Override
-    public void onConvert(View convertView, int position, PageRange item) {
+    public void onConvert(View convertView, int position, CPageRange item) {
         AppCompatTextView titleView = convertView.findViewById(R.id.tv_menu_title);
-        if (item == PageRange.CurrentPage) {
+        if (item == CPageRange.CurrentPage) {
             titleView.setText(R.string.tools_current_page);
-        }else {
+        } else {
             titleView.setText(R.string.tools_all_page);
         }
     }

+ 4 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/pdfproperties/CWatermarkTextStyleFragment.java

@@ -105,19 +105,19 @@ public class CWatermarkTextStyleFragment extends CBasicPropertiesFragment implem
                     break;
             }
             Map<String, Object> extraMap = annotStyle.getCustomExtraMap();
-            CWatermarkPageRangeAdapter.PageRange pageRange = CWatermarkPageRangeAdapter.PageRange.AllPages;
+            CPageRange pageRange = CPageRange.AllPages;
             if (extraMap.containsKey("pageRange")){
-                pageRange = CWatermarkPageRangeAdapter.PageRange.valueOf((String) extraMap.get("pageRange"));
+                pageRange = CPageRange.valueOf((String) extraMap.get("pageRange"));
             }
             // init pageRange spinner adapter
-            List<CWatermarkPageRangeAdapter.PageRange> pageRanges = Arrays.asList(CWatermarkPageRangeAdapter.PageRange.AllPages, CWatermarkPageRangeAdapter.PageRange.CurrentPage);
+            List<CPageRange> pageRanges = Arrays.asList(CPageRange.AllPages, CPageRange.CurrentPage);
             CWatermarkPageRangeAdapter pageRangeAdapter = new CWatermarkPageRangeAdapter(getContext(), pageRanges, pageRange);
             pageRangeSpinner.setAdapter(pageRangeAdapter);
             pageRangeSpinner.setSelection(pageRangeAdapter.getSelectItemIndex());
             pageRangeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                 @Override
                 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    CWatermarkPageRangeAdapter.PageRange pageRange = pageRangeAdapter.list.get(position);
+                    CPageRange pageRange = pageRangeAdapter.list.get(position);
                     pageRangeAdapter.setSelectItem(pageRange);
                     if (viewModel != null && viewModel.getStyle() != null) {
                         Map<String, Object> extraMap = viewModel.getStyle().getCustomExtraMap();

+ 6 - 6
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/security/watermark/view/CWatermarkPageView.java

@@ -36,7 +36,7 @@ import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.utils.dialog.CEditDialog;
 import com.compdfkit.tools.common.utils.glide.CPDFWrapper;
 import com.compdfkit.tools.common.utils.viewutils.CDimensUtils;
-import com.compdfkit.tools.security.watermark.pdfproperties.CWatermarkPageRangeAdapter;
+import com.compdfkit.tools.security.watermark.pdfproperties.CPageRange;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -97,7 +97,7 @@ public class CWatermarkPageView extends FrameLayout {
 
     private float whScale = 1F;
 
-    private CWatermarkPageRangeAdapter.PageRange pageRange = CWatermarkPageRangeAdapter.PageRange.AllPages;
+    private CPageRange pageRange = CPageRange.AllPages;
 
     private boolean isTile = false;
 
@@ -219,11 +219,11 @@ public class CWatermarkPageView extends FrameLayout {
         initDocumentThumbnail();
     }
 
-    public void setPageRange(CWatermarkPageRangeAdapter.PageRange pageRange) {
+    public void setPageRange(CPageRange pageRange) {
         this.pageRange = pageRange;
     }
 
-    public CWatermarkPageRangeAdapter.PageRange getPageRange() {
+    public CPageRange getPageRange() {
         return pageRange;
     }
 
@@ -350,7 +350,7 @@ public class CWatermarkPageView extends FrameLayout {
         getPageListForStr(pages, pageList, document.getPageCount(), true);
         if (pageList.size() == 1) {
             if (pageList.get(0) == pageIndex) {
-                pageRange = CWatermarkPageRangeAdapter.PageRange.CurrentPage;
+                pageRange = CPageRange.CurrentPage;
             }
         }
     }
@@ -404,7 +404,7 @@ public class CWatermarkPageView extends FrameLayout {
     }
 
     private String getPageRangeStr() {
-        if (pageRange == CWatermarkPageRangeAdapter.PageRange.CurrentPage) {
+        if (pageRange == CPageRange.CurrentPage) {
             return pageIndex + "";
         }
         StringBuilder stringBuilder = new StringBuilder();

+ 6 - 4
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertAttrDatas.java

@@ -33,9 +33,11 @@ public class CertAttrDatas {
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_issued_to), CertificateDigitalDatas.getOwnerContent(certInfo.getSubject(),"\n")));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_issuer), CertificateDigitalDatas.getOwnerContent(certInfo.getIssuer(), "\n")));
         String validForm = CDateUtil.formatPDFUTCDate(certInfo.getValidDateBegin());
-        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_from), CDateUtil.formatDate(validForm, CDateUtil.NORMAL_DATE_FORMAT_2)));
+        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_from),
+                CDateUtil.formatDate(validForm, context.getString(R.string.tools_signature_date_pattern))));
         String validTo =  CDateUtil.formatPDFUTCDate(certInfo.getValidDateEnd());
-        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_to), CDateUtil.formatDate(validTo, CDateUtil.NORMAL_DATE_FORMAT_2)));
+        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_to), CDateUtil.formatDate(validTo,
+                context.getString(R.string.tools_signature_date_pattern))));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_intended_usage), extInfo.getConvertKeyUsage()));
         return list;
     }
@@ -53,9 +55,9 @@ public class CertAttrDatas {
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_issuer), CertificateDigitalDatas.getOwnerContent(certInfo.getIssuer(), "\n")));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_serial_number), certInfo.getSeriaNumber()));
         String validForm = CDateUtil.formatPDFUTCDate(certInfo.getValidDateBegin());
-        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_from), CDateUtil.formatDate(validForm, CDateUtil.NORMAL_DATE_FORMAT_2)));
+        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_from), CDateUtil.formatDate(validForm, context.getString(R.string.tools_signature_date_pattern))));
         String validTo =  CDateUtil.formatPDFUTCDate(certInfo.getValidDateEnd());
-        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_to), CDateUtil.formatDate(validTo, CDateUtil.NORMAL_DATE_FORMAT_2)));
+        list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_valid_to), CDateUtil.formatDate(validTo, context.getString(R.string.tools_signature_date_pattern))));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_certificate_policy), getCertStringArrayInfo(extInfo.getCertificatePolicies())));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_crl_distribution_point), getCertStringArrayInfo(extInfo.getCrlDistribute())));
         list.add(new CPDFCertAttrDataItem(context.getString(R.string.tools_issuer_info_access), getAuthInfoAccessContent(extInfo.getAuthorizedInforAccess())));

+ 0 - 1
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertDetailsDialog.java

@@ -95,7 +95,6 @@ public class CertDetailsDialog extends CBasicBottomSheetDialogFragment {
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
         detailsListAdapter = new CertDetailsListAdapter();
         recyclerView.setAdapter(detailsListAdapter);
-        CertificateDigitalDatas.getCertDetails(getContext(), signature);
         detailsListAdapter.setOnItemClickListener((adapter, view1, position) -> {
             CPDFOwnerItemData item = detailsListAdapter.list.get(position);
             CertDigitalSignAttributesDialog dialog = CertDigitalSignAttributesDialog.newInstance(signature, item.getCpdfx509());

+ 27 - 19
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/CertDigitalSignInfoDialog.java

@@ -28,6 +28,7 @@ import com.compdfkit.tools.R;
 import com.compdfkit.tools.common.basic.fragment.CBasicBottomSheetDialogFragment;
 import com.compdfkit.tools.common.interfaces.COnDialogDismissListener;
 import com.compdfkit.tools.common.utils.date.CDateUtil;
+import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 import com.compdfkit.tools.signature.CertificateDigitalDatas;
 import com.compdfkit.tools.signature.bean.CPDFSignatureStatusInfo;
 
@@ -107,27 +108,35 @@ public class CertDigitalSignInfoDialog extends CBasicBottomSheetDialogFragment i
     }
 
     private void refreshInfo() {
-        try {
-            if (cpdfSignature != null) {
-                CPDFSigner[] signers = cpdfSignature.getSignerArr();
-                if (signers != null && signers.length > 0) {
-                    CPDFX509 cert = signers[0].getCert();
-                    CPDFCertInfo certInfo = cert.getCertInfo();
-                    String commonName = certInfo.getSubject().getCommonName();
-                    tvFounder.setText(commonName);
-                }
-                String date = CDateUtil.transformPDFDate(cpdfSignature.getDate());
-                tvDateOfSignature.setText(CDateUtil.formatDate(date, CDateUtil.NORMAL_DATE_FORMAT_2));
-                CPDFSignatureStatusInfo signatureStatusInfo = CertificateDigitalDatas.verifyGetSignatureStatusInfo(document, cpdfSignature);
-                StringBuilder builder = new StringBuilder();
-                for (String certAuthorityStatement : signatureStatusInfo.getCertAuthorityStatements()) {
-                    builder.append(certAuthorityStatement).append("\n\n");
+        CThreadPoolUtils.getInstance().executeIO(()->{
+            try {
+                if (cpdfSignature != null) {
+                    CPDFSigner[] signers = cpdfSignature.getSignerArr();
+                    if (signers != null && signers.length > 0) {
+                        CPDFX509 cert = signers[0].getCert();
+                        CPDFCertInfo certInfo = cert.getCertInfo();
+                        String commonName = certInfo.getSubject().getCommonName();
+                        CThreadPoolUtils.getInstance().executeMain(()->{
+                            tvFounder.setText(commonName);
+                        });
+                    }
+                    String date = CDateUtil.transformPDFDate(cpdfSignature.getDate());
+                    CPDFSignatureStatusInfo signatureStatusInfo = CertificateDigitalDatas.verifyGetSignatureStatusInfo(document, cpdfSignature);
+                    StringBuilder builder = new StringBuilder();
+                    for (String certAuthorityStatement : signatureStatusInfo.getCertAuthorityStatements()) {
+                        builder.append(certAuthorityStatement).append("\n\n");
+                    }
+                    CThreadPoolUtils.getInstance().executeMain(()->{
+                        tvDateOfSignature.setText(CDateUtil.formatDate(date, getString(R.string.tools_signature_date_pattern)));
+                        tvSignStatement.setText(builder);
+                    });
+
                 }
-                tvSignStatement.setText(builder);
+            }catch (Exception e){
+
             }
-        }catch (Exception e){
+        });
 
-        }
 
     }
 
@@ -161,7 +170,6 @@ public class CertDigitalSignInfoDialog extends CBasicBottomSheetDialogFragment i
         }
     }
 
-
     public void setTrustedCertRefreshListener(COnDialogDismissListener dialogDismissListener) {
         this.dialogDismissListener = dialogDismissListener;
     }

+ 1 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/info/signlist/adapter/CertDigitalSignListAdapter.java

@@ -1,6 +1,5 @@
 package com.compdfkit.tools.signature.info.signlist.adapter;
 
-import static com.compdfkit.tools.common.utils.date.CDateUtil.NORMAL_DATE_FORMAT_2;
 
 import android.content.Context;
 import android.text.TextUtils;
@@ -42,7 +41,7 @@ public class CertDigitalSignListAdapter extends CBaseQuickAdapter<CPDFSignatureS
             holder.setText(R.id.tv_sign_date, "");
         } else {
             String date1 = CDateUtil.transformPDFDate(item.getSignature().getDate());
-            holder.setText(R.id.tv_sign_date, CDateUtil.formatDate(date1, NORMAL_DATE_FORMAT_2));
+            holder.setText(R.id.tv_sign_date, CDateUtil.formatDate(date1, holder.itemView.getContext().getString(R.string.tools_signature_date_pattern)));
         }
         switch (item.getStatus()) {
             case SUCCESS:

+ 0 - 1
ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_document_encryption_dialog.xml

@@ -211,7 +211,6 @@
                 android:gravity="center_vertical"
                 android:paddingStart="16dp"
                 android:paddingEnd="16dp"
-                android:text="@string/tools_also_entrypts_the_followint_fuctions"
                 android:textColor="@color/tools_text_color_disable"
                 android:textSize="11sp"
                 app:layout_constraintTop_toBottomOf="@id/et_owner_password" />

+ 1 - 1
ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_input_owner_pwd_dialog.xml

@@ -92,7 +92,7 @@
                 android:id="@+id/btn_confirm"
                 style="@style/tools_dialog_button_style"
                 android:background="@drawable/tools_common_btn_corner_ripple"
-                android:text="@string/contextmenu_done"
+                android:text="@string/tools_okay"
                 tools:textColor="@color/tools_normal_btn_text_color" />
 
         </LinearLayout>

+ 0 - 129
ComPDFKit_Tools/src/main/res/layout/tools_cpdf_security_watermark_tool_bar.xml

@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="?android:attr/actionBarSize"
-    android:background="@color/tools_color_primary">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_add_text_watermark"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:minWidth="80dp"
-        android:layout_marginVertical="4dp"
-        android:background="@drawable/tools_signature_toolbar_btn_corner_status_bg"
-        android:foreground="@drawable/tools_common_btn_corner_ripple"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@id/cl_add_image_watermark"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
-
-
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_add_text_watermark"
-            android:layout_width="24dp"
-            android:layout_height="24dp"
-            app:layout_constraintVertical_chainStyle="packed"
-            app:layout_constraintVertical_bias="0.65"
-            android:src="@drawable/tools_ic_annotation_freetext"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintBottom_toTopOf="@id/tv_add_text_watermark"
-            app:tint="@color/tools_text_color_primary" />
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_add_text_watermark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/tools_custom_stamp_text"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:textColor="@color/tools_text_color_primary"
-            app:layout_constraintTop_toBottomOf="@id/iv_add_text_watermark"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_add_image_watermark"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:minWidth="80dp"
-        android:layout_marginVertical="4dp"
-        android:background="@drawable/tools_signature_toolbar_btn_corner_status_bg"
-        android:foreground="@drawable/tools_common_btn_corner_ripple"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@id/cl_delete_watermark"
-        app:layout_constraintStart_toEndOf="@id/cl_add_text_watermark"
-        app:layout_constraintTop_toTopOf="parent">
-
-
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_add_image_watermark"
-            android:layout_width="24dp"
-            android:layout_height="24dp"
-            app:layout_constraintVertical_bias="0.65"
-            android:src="@drawable/tools_ic_annotation_pic"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@id/tv_add_image_watermark"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:tint="@color/tools_text_color_primary" />
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_add_image_watermark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:text="@string/tools_image"
-            android:textColor="@color/tools_text_color_primary"
-            app:layout_constraintTop_toBottomOf="@id/iv_add_image_watermark"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-           />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_delete_watermark"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:minWidth="80dp"
-        android:layout_marginVertical="4dp"
-        android:background="@drawable/tools_signature_toolbar_btn_corner_status_bg"
-        android:foreground="@drawable/tools_common_btn_corner_ripple"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@id/cl_add_image_watermark"
-        app:layout_constraintTop_toTopOf="parent">
-
-
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_delete_watermark"
-            android:layout_width="24dp"
-            android:layout_height="24dp"
-            app:layout_constraintVertical_bias="0.65"
-            app:layout_constraintBottom_toTopOf="@id/tv_delete_watermark"
-            android:src="@drawable/tools_ic_pageedit_delete"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:tint="@color/tools_text_color_primary" />
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tv_delete_watermark"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/tools_delete"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:textColor="@color/tools_text_color_primary"
-            app:layout_constraintTop_toBottomOf="@id/iv_delete_watermark"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 2
ComPDFKit_Tools/src/main/res/layout/tools_pdf_tool_bar_more_menu_layout.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content">
 
@@ -15,4 +15,4 @@
 
     </LinearLayout>
 
-</FrameLayout>
+</ScrollView>

+ 1 - 0
ComPDFKit_Tools/src/main/res/values-zh-rCN/tools_strings.xml

@@ -452,5 +452,6 @@
     <string name="tools_text_watermark">文字水印</string>
     <string name="tools_save_success">保存成功</string>
 
+    <string name="tools_signature_date_pattern">yyyy-MM-dd HH:mm:ss</string>
 
 </resources>

+ 1 - 0
ComPDFKit_Tools/src/main/res/values/tools_strings.xml

@@ -459,5 +459,6 @@
 
     <!--    Security Mode End-->
     <string name="tools_also_entrypts_the_followint_fuctions">Also Encrypts the following functions</string>
+    <string name="tools_signature_date_pattern">dd MMMM yyyy HH:mm:ss</string>
 
 </resources>

+ 0 - 1
ComPDFKit_Tools/src/main/res/values/tools_themes.xml

@@ -19,7 +19,6 @@
         <item name="textAppearanceSubtitle1">@style/ToolsTextAppearanceSubtitle1</item>
         <item name="textAppearanceButton">@style/ToolsAppTextAppearance.Button</item>
         <item name="colorControlActivated">@color/tools_color_accent</item>
-
     </style>
 
     <style name="ToolsTextAppearanceSubtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">

+ 1 - 2
DigitalSignature/src/main/AndroidManifest.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:tools="http://schemas.android.com/tools"
-    xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

+ 0 - 1
DigitalSignature/src/main/java/com/compdfkit/digitalsignature/PDFSignaturesSampleActivity.java

@@ -15,7 +15,6 @@ import android.os.Bundle;
 import android.view.View;
 
 import androidx.activity.result.ActivityResultLauncher;
-import androidx.fragment.app.FragmentActivity;
 
 import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
 import com.compdfkit.core.document.CPDFDocument;

+ 0 - 1
Forms/src/main/java/com/compdfkit/forms/PDFFormSampleActivity.java

@@ -10,7 +10,6 @@ import androidx.activity.result.ActivityResultLauncher;
 import androidx.annotation.NonNull;
 import androidx.core.content.ContextCompat;
 
-import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.forms.databinding.FormPdfSampleActivityBinding;
 import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
 import com.compdfkit.tools.common.utils.CFileUtils;

+ 0 - 1
PDFViewer/src/main/java/com/compdfkit/pdfviewer/CSampleScreenManager.java

@@ -28,7 +28,6 @@ public class CSampleScreenManager {
         fillScreenManager.bindRightToolViewList(binding.pdfView.slideBar);
         fillScreenManager.bindBottomToolViewList(binding.pdfView.indicatorView);
         fillScreenManager.bindBottomToolViewList(binding.flBottomToolBar);
-        fillScreenManager.bindBottomToolViewList(binding.signatureToolBar);
     }
 
 

+ 5 - 9
PDFViewer/src/main/java/com/compdfkit/pdfviewer/MainActivity.java

@@ -14,22 +14,17 @@ import static com.compdfkit.ui.contextmenu.CPDFContextMenuShowHelper.AddEditImag
 import static com.compdfkit.ui.contextmenu.CPDFContextMenuShowHelper.ReplaceEditImageArea;
 
 import android.Manifest;
-import android.app.AlertDialog;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
-import android.text.InputType;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Toast;
 
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.FragmentActivity;
 
 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;
@@ -42,7 +37,6 @@ import com.compdfkit.tools.common.utils.CToastUtil;
 import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
 import com.compdfkit.tools.common.utils.annotation.CPDFAnnotationManager;
 import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
-import com.compdfkit.tools.common.utils.dialog.CEditDialog;
 import com.compdfkit.tools.common.utils.task.CExtractAssetFileTask;
 import com.compdfkit.tools.common.utils.threadpools.CThreadPoolUtils;
 import com.compdfkit.tools.common.utils.window.CPopupMenuWindow;
@@ -203,6 +197,7 @@ public class MainActivity extends CBasicPDFActivity {
         screenManager.changeWindowStatus(mode);
         binding.pdfToolBar.selectMode(mode);
         binding.formToolBar.reset();
+        binding.signatureToolBar.reset();
         resetContextMenu(binding.pdfView, mode);
         CPDFEditManager editManager = binding.pdfView.getCPdfReaderView().getEditManager();
         if (mode == CPreviewMode.Edit) {
@@ -221,6 +216,7 @@ public class MainActivity extends CBasicPDFActivity {
             }
             switch (mode) {
                 case Viewer:
+                case Signature:
                     binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.VIEW);
                     break;
                 case Annotation:
@@ -229,9 +225,6 @@ public class MainActivity extends CBasicPDFActivity {
                 case Form:
                     binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.FORM);
                     break;
-                case Signature:
-                    binding.pdfView.getCPdfReaderView().setViewMode(CPDFReaderView.ViewMode.VIEW);
-                    break;
                 default:
                     break;
             }
@@ -304,6 +297,9 @@ public class MainActivity extends CBasicPDFActivity {
             });
             menuWindow.addItem(R.drawable.tools_ic_add_security, R.string.tools_security, v1 -> {
                 CPDFDocument document = binding.pdfView.getCPdfReaderView().getPDFDocument();
+                if (document == null){
+                    return;
+                }
                 if (document.getPermissions() == CPDFDocument.PDFDocumentPermissions.PDFDocumentPermissionsUser) {
                     CInputOwnerPwdDialog inputOwnerPwdDialog = CInputOwnerPwdDialog.newInstance();
                     inputOwnerPwdDialog.setDocument(document);

+ 0 - 2
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/DocumentListFragment.java

@@ -34,8 +34,6 @@ import com.compdfkit.tools.docseditor.pdfpageeditinsert.CInsertBlankPageDialogFr
 import com.compdfkit.tools.docseditor.pdfpageeditinsert.CSelectInsertPageTypeDialogFragment;
 
 import java.io.File;
-import java.util.Arrays;
-import java.util.List;
 
 
 public class DocumentListFragment extends Fragment {

+ 0 - 1
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeActivity.java

@@ -14,7 +14,6 @@ import android.os.Bundle;
 
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.compdfkit.pdfviewer.R;
 import com.compdfkit.pdfviewer.databinding.ActivityHomeBinding;

+ 1 - 1
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunBean.java

@@ -86,7 +86,7 @@ public class HomeFunBean {
         funBean.setType(FunType.SamplePDF);
         funBean.setTitle(title);
         funBean.setIconResId(R.drawable.ic_fun_samples_pdf);
-        funBean.setFilePath(CFileUtils.getAssetsTempFile(context, assetsName));
+        funBean.setFilePath(CFileUtils.getAssetsTempFile(context, assetsName, title));
         return funBean;
     }
 

+ 0 - 2
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/HomeFunFragment.java

@@ -10,9 +10,7 @@
 package com.compdfkit.pdfviewer.home;
 
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Bundle;
-import android.provider.DocumentsContract;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;

+ 19 - 4
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/datas/FunDatas.java

@@ -39,7 +39,7 @@ public class FunDatas {
                 new HomeFunBean(context, HomeFunBean.FunType.Compress, R.drawable.ic_fun_compress, R.string.tools_fun_compress, R.string.tools_fun_compress_desc),
                 new HomeFunBean(context, HomeFunBean.FunType.Measurement, R.drawable.ic_fun_mesurement, R.string.tools_fun_measurement, R.string.tools_fun_measurement_desc),
                 HomeFunBean.head(context, R.string.tools_click_to_open_process),
-                HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", "ComPDFKit_Sample_File_Android.pdf")
+                HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_android))
         );
     }
 
@@ -49,13 +49,28 @@ public class FunDatas {
         list.add( HomeFunBean.head(context, R.string.tools_click_to_open_process));
         switch (funType) {
             case Viewer:
-                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", "ComPDFKit_Viewer_Sample_File.pdf"));
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_viewer)));
                 break;
             case Annotations:
-                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", "ComPDFKit_Annotations_Sample_File.pdf"));
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_annotations)));
                 break;
             case Forms:
-                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", "ComPDFKit_Forms_Sample_File.pdf"));
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_forms)));
+                break;
+            case Signature:
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_signatures)));
+                break;
+            case DocumentEditor:
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_document_editor)));
+                break;
+            case ContentEditor:
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_content_editor)));
+                break;
+            case Security:
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_security)));
+                break;
+            case Watermark:
+                list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", context.getString(R.string.tools_compdfkit_sample_file_watermark)));
                 break;
             default:
                 list.add(HomeFunBean.assetsFile(context, "PDF32000_2008.pdf", "PDF32000_2008.pdf"));

+ 0 - 4
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/DocumentEncryptionSamplesImpl.java

@@ -10,7 +10,6 @@
 package com.compdfkit.pdfviewer.home.samples;
 
 import android.net.Uri;
-import android.os.Bundle;
 import android.text.TextUtils;
 
 import androidx.fragment.app.Fragment;
@@ -18,15 +17,12 @@ import androidx.fragment.app.Fragment;
 import com.compdfkit.core.document.CPDFDocument;
 import com.compdfkit.pdfviewer.R;
 import com.compdfkit.pdfviewer.home.HomeFunBean;
-import com.compdfkit.tools.common.utils.CFileUtils;
 import com.compdfkit.tools.common.utils.CToastUtil;
 import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
 import com.compdfkit.tools.common.views.CVerifyPasswordDialogFragment;
 import com.compdfkit.tools.security.encryption.CDocumentEncryptionDialog;
 import com.compdfkit.tools.security.encryption.CInputOwnerPwdDialog;
 
-import java.io.File;
-
 
 public class DocumentEncryptionSamplesImpl extends OpenPDFSamplesImpl {
 

+ 0 - 1
PDFViewer/src/main/java/com/compdfkit/pdfviewer/home/samples/WatermarkSamplesImpl.java

@@ -10,7 +10,6 @@
 package com.compdfkit.pdfviewer.home.samples;
 
 import android.net.Uri;
-import android.os.Bundle;
 import android.os.Environment;
 import android.text.TextUtils;
 

+ 4 - 0
PDFViewer/src/main/res/layout/rv_item_home_fun_item_content.xml

@@ -46,6 +46,10 @@
         android:layout_marginStart="16dp"
         android:textColor="@color/tools_text_color_primary"
         android:textStyle="bold"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0"
+        android:layout_marginEnd="40dp"
+        app:layout_constrainedWidth="true"
         app:layout_constraintBottom_toTopOf="@id/tv_desc"
         app:layout_constraintStart_toEndOf="@id/barrier"
         app:layout_constraintTop_toTopOf="parent"

+ 10 - 4
PDFViewer/src/main/res/values-zh-rCN/strings.xml

@@ -46,14 +46,20 @@
     <string name="tools_fun_compress_desc">通过压缩来优化您的PDF文件,减小PDF文档大小,且无视觉质量损失。</string>
     <string name="tools_fun_measurement">测量</string>
     <string name="tools_fun_measurement_desc">测量距离、周长、面积、角度、直径、半径和体积等。支持调整测量比例和精度。</string>
-    <string name="tools_open_document">上传文档</string>
     <string name="tools_create_a_new_file">新建</string>
-    <string name="tools_already_saved_as">已经另存为</string>
-    <string name="tools_open_folder">打开文件夹</string>
-    <string name="tools_check">查看</string>
 
     <string name="tools_add_watermark">添加水印</string>
     <string name="tools_remove_watermark">移除水印</string>
     <string name="tools_remove_watermark_info">确定删除水印?</string>
 
+    <string name="tools_compdfkit_sample_file_android">ComPDFKit_Android_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_viewer">PDF查看_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_annotations">PDF注释_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_forms">表单功能_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_signatures">签名_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_document_editor">文档编辑器_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_content_editor">内容编辑器_ComPDFKit_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_security">文档密码:compdfkit_ComPDFKit_PDF安全_示例文档.pdf</string>
+    <string name="tools_compdfkit_sample_file_watermark">水印_ComPDFKit_示例文档.pdf</string>
+
 </resources>

+ 8 - 4
PDFViewer/src/main/res/values/strings.xml

@@ -48,11 +48,7 @@
     <string name="tools_fun_compress_desc">Optimize and reduce PDF document size with no or minimum visual quality loss.</string>
     <string name="tools_fun_measurement">Measurement</string>
     <string name="tools_fun_measurement_desc">Measure the distance, perimeter, area, angle, diameter, radius, and volume measurement annotations.</string>
-    <string name="tools_open_document">Open Document</string>
     <string name="tools_create_a_new_file">Create a New File</string>
-    <string name="tools_already_saved_as">Already saved as</string>
-    <string name="tools_open_folder">OPEN FOLDER</string>
-    <string name="tools_check">CHECK</string>
     <!--    Home end-->
 
     <string name="tools_add_watermark">Add Watermark</string>
@@ -60,5 +56,13 @@
     <string name="tools_remove_watermark_info">Are you sure to delete the watermarks?</string>
 
     <string name="tools_compdfkit_sample_file_android">ComPDFKit_Sample_File_Android.pdf</string>
+    <string name="tools_compdfkit_sample_file_viewer">ComPDFKit_Viewer_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_annotations">ComPDFKit_Annotations_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_forms">ComPDFKit_Forms_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_signatures">ComPDFKit_Signatures_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_document_editor">ComPDFKit_Document_Editor_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_content_editor">ComPDFKit_Content_Editor_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_security">Password:compdfkit_ComPDFKit_Security_Sample_File.pdf</string>
+    <string name="tools_compdfkit_sample_file_watermark">ComPDFKit_Watermark_Sample_File.pdf</string>
 
 </resources>

+ 0 - 1
Samples/src/main/java/com/compdfkit/samples/SampleListActivity.java

@@ -19,7 +19,6 @@ import androidx.recyclerview.widget.RecyclerView;
 import com.compdfkit.samples.util.FileUtils;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 
 public class SampleListActivity extends AppCompatActivity {
 

+ 0 - 1
Samples/src/main/java/com/compdfkit/samples/samples/DigitalSignaturesTest.java

@@ -13,7 +13,6 @@ import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.RectF;
 
-import com.compdfkit.core.annotation.CPDFAnnotation;
 import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
 import com.compdfkit.core.annotation.form.CPDFWidget;
 import com.compdfkit.core.document.CPDFDocument;