Browse Source

PDFTools(Android) - 1.Samples 页面编辑入口优化

liuxiaolong 1 year ago
parent
commit
23e1c3cb9e

+ 3 - 6
compdfkit-demo/src/main/java/com/compdfkit/demo/MainActivity.java

@@ -38,6 +38,7 @@ import com.compdfkit.tools.common.utils.window.CPopupMenuWindow;
 import com.compdfkit.tools.common.views.pdfbota.CPDFBOTA;
 import com.compdfkit.tools.common.views.pdfbota.CPDFBotaDialogFragment;
 import com.compdfkit.tools.common.views.pdfbota.CPDFBotaFragmentTabs;
+import com.compdfkit.tools.common.views.pdfpageedit.CPDFPageEditDialogFragment;
 import com.compdfkit.tools.common.views.pdfproperties.CAnnotationType;
 import com.compdfkit.tools.common.views.pdfstyle.CAnnotStyle;
 import com.compdfkit.tools.common.views.pdfstyle.CStyleDialogFragment;
@@ -187,11 +188,7 @@ public class MainActivity extends CBasicActivity {
             binding.pdfSearchToolBar.showKeyboard();
         });
         binding.pdfToolBar.setThumbnailBtnClickListener(v -> {
-            CPDFBotaDialogFragment dialogFragment = CPDFBotaDialogFragment.newInstance();
-            dialogFragment.initWithPDFView(binding.pdfView);
-            CPDFBotaFragmentTabs annotationTab = new CPDFBotaFragmentTabs(CPDFBOTA.THUMBNAIL, getString(R.string.tools_thumbnails));
-            dialogFragment.setBotaDialogTab(annotationTab);
-            dialogFragment.show(getSupportFragmentManager(), "ThumbnailList");
+            showPageEdit(binding.pdfView, false);
         });
         binding.pdfToolBar.setBoTaBtnClickListener(v -> {
             ArrayList<CPDFBotaFragmentTabs> tabs = new ArrayList<>();
@@ -219,7 +216,7 @@ public class MainActivity extends CBasicActivity {
                showDisplaySettings(binding.pdfView);
             });
             menuWindow.addItem(R.drawable.tools_page_edit, R.string.tools_page_edit_toolbar_title, v1 -> {
-                showPageEdit(binding.pdfView);
+                showPageEdit(binding.pdfView, true);
             });
             menuWindow.addItem(R.drawable.tools_ic_document_info, R.string.tools_document_info, v1 -> {
                showDocumentInfo(binding.pdfView);

BIN
compdfkit-repo/compdfkit-ui/ComPDFKit-UI.aar


BIN
compdfkit-repo/compdfkit/ComPDFKit.aar


+ 6 - 6
compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfannotationlist/data/CPDFAnnotDatas.java

@@ -117,8 +117,8 @@ public class CPDFAnnotDatas {
                 case LINE:
                     CPDFLineAnnotation lineAnnotation = (CPDFLineAnnotation) cpdfAnnotation;
                     isArrowLine = lineAnnotation.getLineHeadType() == CPDFLineAnnotation.LineType.LINETYPE_ARROW;
-                    attrColor = lineAnnotation.getLineColor();
-                    attrAlpha = lineAnnotation.getLineAlpha();
+                    attrColor = lineAnnotation.getBorderColor();
+                    attrAlpha = lineAnnotation.getBorderAlpha();
                     attrContent = lineAnnotation.getContent();
                     break;
                 case FREETEXT:
@@ -134,14 +134,14 @@ public class CPDFAnnotDatas {
                     break;
                 case SQUARE:
                     CPDFSquareAnnotation squareAnnotation = (CPDFSquareAnnotation) cpdfAnnotation;
-                    attrColor = squareAnnotation.getLineColor();
-                    attrAlpha = squareAnnotation.getLineAlpha();
+                    attrColor = squareAnnotation.getBorderColor();
+                    attrAlpha = squareAnnotation.getBorderAlpha();
                     attrContent = squareAnnotation.getContent();
                     break;
                 case CIRCLE:
                     CPDFCircleAnnotation circleAnnotation = (CPDFCircleAnnotation) cpdfAnnotation;
-                    attrColor = circleAnnotation.getLineColor();
-                    attrAlpha = circleAnnotation.getLineAlpha();
+                    attrColor = circleAnnotation.getBorderColor();
+                    attrAlpha = circleAnnotation.getBorderAlpha();
                     attrContent = circleAnnotation.getContent();
                     break;
                 case SOUND:

+ 12 - 12
compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CAnnotImplStyle.java

@@ -74,8 +74,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             } else if (annotImpl instanceof CPDFSquareAnnotImpl) {
                 CPDFSquareAnnotImpl squareAnnot = (CPDFSquareAnnotImpl) annotImpl;
                 CPDFSquareAnnotation squareAnnotation = squareAnnot.onGetAnnotation();
-                squareAnnotation.setLineColor(style.getLineColor());
-                squareAnnotation.setLineAlpha(style.getLineColorOpacity());
+                squareAnnotation.setBorderColor(style.getLineColor());
+                squareAnnotation.setBorderAlpha(style.getLineColorOpacity());
                 squareAnnotation.setFillColor(style.getFillColor());
                 squareAnnotation.setFillAlpha(style.getFillColorOpacity());
                 squareAnnotation.setBorderStyle(style.getBorderStyle());
@@ -86,8 +86,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             } else if (annotImpl instanceof CPDFCircleAnnotImpl) {
                 CPDFCircleAnnotImpl circleAnnot = (CPDFCircleAnnotImpl) annotImpl;
                 CPDFCircleAnnotation circleAnnotation = circleAnnot.onGetAnnotation();
-                circleAnnotation.setLineColor(style.getLineColor());
-                circleAnnotation.setLineAlpha(style.getLineColorOpacity());
+                circleAnnotation.setBorderColor(style.getLineColor());
+                circleAnnotation.setBorderAlpha(style.getLineColorOpacity());
                 circleAnnotation.setFillColor(style.getFillColor());
                 circleAnnotation.setFillAlpha(style.getFillColorOpacity());
                 circleAnnotation.setBorderStyle(style.getBorderStyle());
@@ -98,8 +98,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             } else if (annotImpl instanceof CPDFLineAnnotImpl) {
                 CPDFLineAnnotImpl lineAnnot = (CPDFLineAnnotImpl) annotImpl;
                 CPDFLineAnnotation lineAnnotation = lineAnnot.onGetAnnotation();
-                lineAnnotation.setLineColor(style.getLineColor());
-                lineAnnotation.setLineAlpha(style.getLineColorOpacity());
+                lineAnnotation.setBorderColor(style.getLineColor());
+                lineAnnotation.setBorderAlpha(style.getLineColorOpacity());
                 lineAnnotation.setFillColor(style.getFillColor());
                 lineAnnotation.setFillAlpha(style.getFillColorOpacity());
                 lineAnnotation.setBorderStyle(style.getBorderStyle());
@@ -158,8 +158,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             case ANNOT_SQUARE:
                 CPDFSquareAnnotImpl squareAnnot = (CPDFSquareAnnotImpl) annotImpl;
                 CPDFSquareAnnotation squareAnnotation = squareAnnot.onGetAnnotation();
-                style.setLineColor(squareAnnotation.getLineColor());
-                style.setLineColorOpacity(squareAnnotation.getLineAlpha());
+                style.setLineColor(squareAnnotation.getBorderColor());
+                style.setLineColorOpacity(squareAnnotation.getBorderAlpha());
                 style.setFillColor(squareAnnotation.getFillColor());
                 style.setFillColorOpacity(squareAnnotation.getFillAlpha());
                 style.setBorderWidth(squareAnnotation.getBorderWidth());
@@ -172,8 +172,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             case ANNOT_CIRCLE:
                 CPDFCircleAnnotImpl circleAnnot = (CPDFCircleAnnotImpl) annotImpl;
                 CPDFCircleAnnotation circleAnnotation = circleAnnot.onGetAnnotation();
-                style.setLineColor(circleAnnotation.getLineColor());
-                style.setLineColorOpacity(circleAnnotation.getLineAlpha());
+                style.setLineColor(circleAnnotation.getBorderColor());
+                style.setLineColorOpacity(circleAnnotation.getBorderAlpha());
                 style.setFillColor(circleAnnotation.getFillColor());
                 style.setFillColorOpacity(circleAnnotation.getFillAlpha());
                 style.setBorderWidth(circleAnnotation.getBorderWidth());
@@ -187,8 +187,8 @@ public class CAnnotImplStyle implements CStyleProvider {
             case ANNOT_ARROW:
                 CPDFLineAnnotImpl lineAnnot = (CPDFLineAnnotImpl) annotImpl;
                 CPDFLineAnnotation lineAnnotation = lineAnnot.onGetAnnotation();
-                style.setLineColor(lineAnnotation.getLineColor());
-                style.setLineColorOpacity(lineAnnotation.getLineAlpha());
+                style.setLineColor(lineAnnotation.getBorderColor());
+                style.setLineColorOpacity(lineAnnotation.getBorderAlpha());
                 style.setFillColor(lineAnnotation.getFillColor());
                 style.setFillColorOpacity(lineAnnotation.getFillAlpha());
                 style.setBorderWidth(lineAnnotation.getBorderWidth());

+ 12 - 12
compdfkit-tools/src/main/java/com/compdfkit/tools/annotation/pdfproperties/pdfstyle/CPDFGlobalAnnotStyle.java

@@ -134,8 +134,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                     CPDFSquareAttr squareAttr = attribute.getSquareAttr();
                     squareAttr.setFillColor(params.getFillColor());
                     squareAttr.setFillAlpha(params.getFillColorOpacity());
-                    squareAttr.setLineColor(params.getLineColor());
-                    squareAttr.setLineAlpha(params.getLineColorOpacity());
+                    squareAttr.setBorderColor(params.getLineColor());
+                    squareAttr.setBorderAlpha(params.getLineColorOpacity());
                     squareAttr.setBorderWidth(params.getBorderWidth());
                     squareAttr.setBorderStyle(params.getBorderStyle());
                     break;
@@ -143,16 +143,16 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                     CPDFCircleAttr circleAttr = attribute.getCircleAttr();
                     circleAttr.setFillColor(params.getFillColor());
                     circleAttr.setFillAlpha(params.getFillColorOpacity());
-                    circleAttr.setLineColor(params.getLineColor());
-                    circleAttr.setLineAlpha(params.getLineColorOpacity());
+                    circleAttr.setBorderColor(params.getLineColor());
+                    circleAttr.setBorderAlpha(params.getLineColorOpacity());
                     circleAttr.setBorderWidth(params.getBorderWidth());
                     circleAttr.setBorderStyle(params.getBorderStyle());
                     break;
                 case ANNOT_LINE:
                 case ANNOT_ARROW:
                     CPDFLineAttr lineAttr = attribute.getLineAttr();
-                    lineAttr.setLineColor(params.getLineColor());
-                    lineAttr.setLineAlpha(params.getLineColorOpacity());
+                    lineAttr.setBorderColor(params.getLineColor());
+                    lineAttr.setBorderAlpha(params.getLineColorOpacity());
                     lineAttr.setFillColor(params.getFillColor());
                     lineAttr.setFillAlpha(params.getFillColorOpacity());
                     lineAttr.setBorderWidth(params.getBorderWidth());
@@ -316,8 +316,8 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                 CPDFSquareAttr squareAttr = attribute.getSquareAttr();
                 style.setFillColor(squareAttr.getFillColor());
                 style.setFillColorOpacity(squareAttr.getFillAlpha());
-                style.setLineColor(squareAttr.getLineColor());
-                style.setLineColorOpacity(squareAttr.getLineAlpha());
+                style.setLineColor(squareAttr.getBorderColor());
+                style.setLineColorOpacity(squareAttr.getBorderAlpha());
                 style.setBorderWidth(squareAttr.getBorderWidth());
                 style.setBorderStyle(squareAttr.getBorderStyle());
                 break;
@@ -325,16 +325,16 @@ public class CPDFGlobalAnnotStyle extends CBasicOnStyleChangeListener implements
                 CPDFCircleAttr circleAttr = attribute.getCircleAttr();
                 style.setFillColor(circleAttr.getFillColor());
                 style.setFillColorOpacity(circleAttr.getFillAlpha());
-                style.setLineColor(circleAttr.getLineColor());
-                style.setLineColorOpacity(circleAttr.getLineAlpha());
+                style.setLineColor(circleAttr.getBorderColor());
+                style.setLineColorOpacity(circleAttr.getBorderAlpha());
                 style.setBorderWidth(circleAttr.getBorderWidth());
                 style.setBorderStyle(circleAttr.getBorderStyle());
                 break;
             case ANNOT_LINE:
             case ANNOT_ARROW:
                 CPDFLineAttr lineAttr = attribute.getLineAttr();
-                style.setLineColor(lineAttr.getLineColor());
-                style.setLineColorOpacity(lineAttr.getLineAlpha());
+                style.setLineColor(lineAttr.getBorderColor());
+                style.setLineColorOpacity(lineAttr.getBorderAlpha());
                 style.setFillColor(lineAttr.getFillColor());
                 style.setFillColorOpacity(lineAttr.getFillAlpha());
                 style.setBorderStyle(lineAttr.getBorderStyle());

+ 2 - 1
compdfkit-tools/src/main/java/com/compdfkit/tools/common/activity/CBasicActivity.java

@@ -172,9 +172,10 @@ public class CBasicActivity extends AppCompatActivity {
         });
     }
 
-    protected void showPageEdit(CPDFViewCtrl pdfView) {
+    protected void showPageEdit(CPDFViewCtrl pdfView, boolean enterEdit) {
         CPDFPageEditDialogFragment pageEditDialogFragment = CPDFPageEditDialogFragment.newInstance();
         pageEditDialogFragment.initWithPDFView(pdfView);
+        pageEditDialogFragment.setEnterEdit(enterEdit);
         pageEditDialogFragment.show(getSupportFragmentManager(), "pageEditDialogFragment");
     }
 

+ 3 - 0
compdfkit-tools/src/main/java/com/compdfkit/tools/common/views/CPageEditBar.java

@@ -89,6 +89,9 @@ public class CPageEditBar extends FrameLayout implements View.OnClickListener{
         }
     }
 
+    public void enterEditMode(){
+        ivToolBarEdit.performClick();
+    }
 
     public void setBackBtnClickListener(OnClickListener clickListener) {
         ivToolBarBackBtn.setOnClickListener(clickListener);

+ 34 - 6
compdfkit-tools/src/main/java/com/compdfkit/tools/common/views/pdfpageedit/CPDFPageEditDialogFragment.java

@@ -12,12 +12,14 @@ package com.compdfkit.tools.common.views.pdfpageedit;
 import static com.compdfkit.core.document.CPDFDocument.PDFDocumentError.PDFDocumentErrorPassword;
 import static com.compdfkit.core.document.CPDFDocument.PDFDocumentError.PDFDocumentErrorSuccess;
 
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseIntArray;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -64,6 +66,9 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
     private final int MAX_SPLIT_FILE_NAME = 3;
 
     private boolean hasEdit = false;
+
+    private boolean enterEdit = false;
+
     private ActivityResultLauncher<Intent> replaceSelectDocumentLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
         if (result.getData() != null && result.getData().getData() != null) {
             Uri selectUri = result.getData().getData();
@@ -95,6 +100,10 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
         this.pdfView = pdfView;
     }
 
+    public void setEnterEdit(boolean enterEdit) {
+        this.enterEdit = enterEdit;
+    }
+
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -106,6 +115,8 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
         super.onStart();
         if (!CViewUtils.isLandScape(getContext())){
             CDialogFragmentUtil.setDimAmount(getDialog(), 0F);
+        }else {
+            CDialogFragmentUtil.setDimAmount(getDialog(), 0.2F);
         }
         BottomSheetBehavior<View> behavior = BottomSheetBehavior.from((View) getView().getParent());
         behavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@@ -118,6 +129,7 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
                             onBackLisener.onBack();
                         }
                         break;
+                    default:break;
                 }
             }
 
@@ -133,8 +145,14 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.tools_page_edit_dialog_fragment, container, false);
+        toolBar = rootView.findViewById(R.id.tool_bar);
+        editToolBar = rootView.findViewById(R.id.tool_page_edit_bar);
         this.editThumbnailFragment = (CPDFEditThumbnailFragment) getChildFragmentManager().findFragmentById(R.id.id_edit_thumbnail_fragment);
-        editThumbnailFragment.setCPDFPageEditDialogFragment(this);
+        if (this.editThumbnailFragment != null) {
+            editThumbnailFragment.setCPDFPageEditDialogFragment(this);
+            editThumbnailFragment.setEdit(enterEdit);
+        }
+
         editThumbnailFragment.setPDFDisplayPageIndexListener(pageIndex -> {
             if (pdfView != null) {
                 pdfView.currentPageIndex = pageIndex;
@@ -142,8 +160,7 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
             }
         });
         editThumbnailFragment.initWithPDFView(pdfView);
-        toolBar = rootView.findViewById(R.id.tool_bar);
-        editToolBar = rootView.findViewById(R.id.tool_page_edit_bar);
+
         editToolBar.initWithPDFView(pdfView);
         toolBar.setBackBtnClickListener(v -> {
             if (editThumbnailFragment.isEdit()) {
@@ -151,6 +168,7 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
                 toolBar.showEditButton(true);
                 toolBar.showSelectButton(false);
                 toolBar.showDoneButton(false);
+                editToolBar.setVisibility(View.GONE);
             } else {
                 dismiss();
             }
@@ -161,6 +179,7 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
                 toolBar.showEditButton(true);
                 toolBar.showSelectButton(false);
                 toolBar.showDoneButton(false);
+                editToolBar.setVisibility(View.GONE);
             }
         });
         toolBar.setOnEnableEditPageCallback((enable) -> {
@@ -172,6 +191,9 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
         toolBar.setOnSelectAllCallback((select) -> {
                 editThumbnailFragment.setSelectAll(select);
         });
+        if (enterEdit) {
+            toolBar.enterEditMode();
+        }
         editToolBar.setInsertPageListener(v -> {
             insertPage();
         });
@@ -233,9 +255,7 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
                 });
                 dialog.show(getChildFragmentManager(), "dialog");
             } else {
-                CThreadPoolUtils.getInstance().execute(() -> {
-                    rotatePage();
-                });
+                CThreadPoolUtils.getInstance().execute(this::rotatePage);
             }
         });
         editToolBar.setDeletePageListener(view -> {
@@ -266,6 +286,14 @@ public class CPDFPageEditDialogFragment extends BottomSheetDialogFragment {
                 }
             }
         });
+        getDialog().setOnKeyListener((dialog, keyCode, event) -> {
+            if (keyCode == KeyEvent.KEYCODE_BACK){
+                dismiss();
+                return true;
+            }
+
+            return false;
+        });
         return rootView;
     }
 

+ 1 - 0
compdfkit-tools/src/main/java/com/compdfkit/tools/viewer/pdfthumbnail/CPDFEditThumbnailFragment.java

@@ -113,6 +113,7 @@ public class CPDFEditThumbnailFragment extends Fragment {
         if (pdfView != null) {
             thumbnailListAdapter = new CPDFEditThumbnailListAdapter(pdfView.getCPdfReaderView().getPDFDocument(),  pdfView.currentPageIndex);
             thumbnailListAdapter.setPDFDisplayPageIndexListener(displayPageIndexListener);
+            setEdit(isEdit);
             thumbnailListAdapter.setOnPageEditListener(() -> {
                 pageEditDialogFragment.setHasEdit(true);
             });

+ 0 - 3
edit-ctrl-demo/src/main/java/com/compdfkit/demo/edit/PDFEditSampleActivity.java

@@ -155,9 +155,6 @@ public class PDFEditSampleActivity extends CBasicActivity {
             menuWindow.addItem(R.drawable.tools_ic_preview_settings, R.string.tools_view_setting, v1 -> {
                 showDisplaySettings(binding.pdfView);
             });
-            menuWindow.addItem(R.drawable.tools_page_edit, R.string.tools_page_edit_toolbar_title, v1 -> {
-                showPageEdit(binding.pdfView);
-            });
             menuWindow.addItem(R.drawable.tools_ic_document_info, R.string.tools_document_info, v1 -> {
                 showDocumentInfo(binding.pdfView);
             });