|
@@ -15,18 +15,27 @@ import android.content.res.TypedArray;
|
|
|
import android.graphics.drawable.Drawable;
|
|
|
import android.text.TextUtils;
|
|
|
import android.util.AttributeSet;
|
|
|
+import android.view.Gravity;
|
|
|
import android.view.LayoutInflater;
|
|
|
+import android.view.Menu;
|
|
|
+import android.view.MenuItem;
|
|
|
import android.view.View;
|
|
|
import android.widget.FrameLayout;
|
|
|
+import android.widget.LinearLayout;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
import androidx.appcompat.widget.AppCompatImageView;
|
|
|
import androidx.appcompat.widget.AppCompatTextView;
|
|
|
+import androidx.appcompat.widget.PopupMenu;
|
|
|
+import androidx.constraintlayout.widget.ConstraintLayout;
|
|
|
|
|
|
import com.compdfkit.tools.R;
|
|
|
import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* pdf ui tool bar <br/>
|
|
@@ -64,7 +73,17 @@ import com.compdfkit.tools.common.utils.viewutils.CViewUtils;
|
|
|
* moreBtnClick:
|
|
|
* @see CPDFToolBar#setMoreBtnClickListener(OnClickListener)
|
|
|
*/
|
|
|
-public class CPDFToolBar extends FrameLayout {
|
|
|
+public class CPDFToolBar extends FrameLayout implements PopupMenu.OnMenuItemClickListener {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ enum PreviewMode {
|
|
|
+ PDFView,
|
|
|
+ Annotation,
|
|
|
+ Form,
|
|
|
+ Edit,
|
|
|
+ PageEdit
|
|
|
+ }
|
|
|
|
|
|
private AppCompatTextView tvToolBarTitle;
|
|
|
|
|
@@ -74,6 +93,27 @@ public class CPDFToolBar extends FrameLayout {
|
|
|
|
|
|
private AppCompatImageView ivToolBarMoreBtn;
|
|
|
|
|
|
+ private AppCompatImageView ivToolBarThumbnail;
|
|
|
+
|
|
|
+ private ConstraintLayout clMainToolbar;
|
|
|
+
|
|
|
+ private AppCompatImageView ivTitleArrow;
|
|
|
+
|
|
|
+ private LinearLayout llTitle;
|
|
|
+
|
|
|
+ private PopupMenu popupMenu;
|
|
|
+
|
|
|
+ private List<PreviewMode> previewModes = new ArrayList<>();
|
|
|
+ private int samplePDFViewMenuId = View.generateViewId();
|
|
|
+ private int annotViewMenuId = View.generateViewId();
|
|
|
+ private int editMenuId = View.generateViewId();
|
|
|
+ private int pageEditMenuId = View.generateViewId();
|
|
|
+ private int formMenuId = View.generateViewId();
|
|
|
+
|
|
|
+ private PreviewMode currentPreviewMode = PreviewMode.PDFView;
|
|
|
+
|
|
|
+ private OnPreviewModeChangeListener changeListener;
|
|
|
+
|
|
|
public CPDFToolBar(@NonNull Context context) {
|
|
|
this(context, null);
|
|
|
}
|
|
@@ -89,10 +129,20 @@ public class CPDFToolBar extends FrameLayout {
|
|
|
|
|
|
private void initToolBar(Context context, @Nullable AttributeSet attrs) {
|
|
|
LayoutInflater.from(getContext()).inflate(R.layout.tools_cpdf_tool_bar, this);
|
|
|
+ clMainToolbar = findViewById(R.id.cl_pdf_root_tool_bar);
|
|
|
tvToolBarTitle = findViewById(R.id.tv_tool_bar_title);
|
|
|
ivToolBarMoreBtn = findViewById(R.id.iv_tool_bar_more);
|
|
|
ivToolBarSearchBtn = findViewById(R.id.iv_tool_bar_search);
|
|
|
ivToolBarBoTaBtn = findViewById(R.id.iv_tool_bar_bota);
|
|
|
+ ivToolBarThumbnail = findViewById(R.id.iv_tool_bar_thumbnail);
|
|
|
+ llTitle = findViewById(R.id.ll_title);
|
|
|
+ ivTitleArrow = findViewById(R.id.iv_down_arrow);
|
|
|
+ popupMenu = new PopupMenu(getContext(), llTitle, Gravity.CENTER);
|
|
|
+ modifyPopupMenuStatus();
|
|
|
+ llTitle.setOnClickListener(v -> {
|
|
|
+ PopupMenu popupMenu = new PopupMenu(getContext(), llTitle, Gravity.CENTER);
|
|
|
+
|
|
|
+ });
|
|
|
initAttributes(context, attrs);
|
|
|
}
|
|
|
|
|
@@ -121,6 +171,63 @@ public class CPDFToolBar extends FrameLayout {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void modifyPopupMenuStatus(){
|
|
|
+ ivTitleArrow.setVisibility(previewModes.size() <=0 ? GONE : VISIBLE);
|
|
|
+ popupMenu.getMenu().clear();
|
|
|
+ for (int i = 0; i < previewModes.size(); i++) {
|
|
|
+ PreviewMode type = previewModes.get(i);
|
|
|
+ int titleResId;
|
|
|
+ int menuId;
|
|
|
+ switch(type){
|
|
|
+ case Edit:
|
|
|
+ titleResId = R.string.tools_menu_edit;
|
|
|
+ menuId = editMenuId;
|
|
|
+ break;
|
|
|
+ case Form:
|
|
|
+ titleResId = R.string.tools_menu_form;
|
|
|
+ menuId = formMenuId;
|
|
|
+ break;
|
|
|
+ case PageEdit:
|
|
|
+ titleResId = R.string.tools_menu_page_edit;
|
|
|
+ menuId = pageEditMenuId;
|
|
|
+ break;
|
|
|
+ case Annotation:
|
|
|
+ titleResId = R.string.tools_menu_annotation;
|
|
|
+ menuId = annotViewMenuId;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ titleResId = R.string.tools_menu_pdfview;
|
|
|
+ menuId = samplePDFViewMenuId;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ popupMenu.getMenu().add(Menu.NONE, menuId, i, getContext().getString(titleResId));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onMenuItemClick(MenuItem item) {
|
|
|
+ if (item.getItemId() == samplePDFViewMenuId){
|
|
|
+
|
|
|
+ } else if (item.getItemId() == annotViewMenuId) {
|
|
|
+
|
|
|
+ } else if (item.getItemId() == editMenuId) {
|
|
|
+
|
|
|
+ } else if (item.getItemId() == pageEditMenuId) {
|
|
|
+
|
|
|
+ } else if (item.getItemId() == formMenuId){
|
|
|
+
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void changeMode(PreviewMode mode){
|
|
|
+ currentPreviewMode = mode;
|
|
|
+ if (changeListener != null) {
|
|
|
+ changeListener.change(currentPreviewMode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void setSearchBtnClickListener(View.OnClickListener clickListener) {
|
|
|
ivToolBarSearchBtn.setOnClickListener(clickListener);
|
|
|
}
|
|
@@ -132,4 +239,23 @@ public class CPDFToolBar extends FrameLayout {
|
|
|
public void setMoreBtnClickListener(View.OnClickListener clickListener) {
|
|
|
ivToolBarMoreBtn.setOnClickListener(clickListener);
|
|
|
}
|
|
|
+
|
|
|
+ public void setThumbnailBtnClickListener(View.OnClickListener clickListener){
|
|
|
+ ivToolBarThumbnail.setOnClickListener(clickListener);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPreviewModeChangeListener(OnPreviewModeChangeListener changeListener) {
|
|
|
+ this.changeListener = changeListener;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addMode(PreviewMode previewMode){
|
|
|
+ previewModes.add(previewMode);
|
|
|
+ modifyPopupMenuStatus();
|
|
|
+ }
|
|
|
+
|
|
|
+ public interface OnPreviewModeChangeListener{
|
|
|
+ void change(PreviewMode mode);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|