Browse Source

Implements ink menu logic

cooperku_kdanmobile 5 years ago
parent
commit
f1dabadc9a

+ 32 - 4
src/main/java/com/kdanmobile/reader/ReaderActivity.kt

@@ -16,10 +16,7 @@ import android.support.v7.app.AlertDialog
 import android.util.DisplayMetrics
 import android.view.*
 import android.view.animation.AnimationUtils
-import android.widget.EditText
-import android.widget.LinearLayout
-import android.widget.TextView
-import android.widget.Toast
+import android.widget.*
 import com.kdanmobile.base.KdanBaseActivity
 import com.kdanmobile.kmpdfkit.pdfcommon.KMPDFReaderView
 import com.kdanmobile.kmpdfkit.pdfcommon.PDFInfo
@@ -36,6 +33,7 @@ import com.kdanmobile.reader.screen.reader.mediabox.signature.SignatureTabView
 import com.kdanmobile.reader.screen.reader.mediabox.stamp.StampTabView
 import com.kdanmobile.reader.screen.reader.mediabox.textbox.TextBoxTabView
 import com.kdanmobile.reader.screen.view.*
+import com.kdanmobile.reader.screen.view.SearchView
 import com.kdanmobile.reader.setting.ReaderSettingDialogFragment
 import com.kdanmobile.reader.setting.ReaderSettingListener
 import com.kdanmobile.reader.thumb.PdfThumbDialogFragment
@@ -214,6 +212,7 @@ abstract class ReaderActivity : KdanBaseActivity(), ReaderSettingListener, PdfTh
         applySetting()
 
         setupPdfChangedListener()
+        setupInkMenu()
     }
 
     private fun showFileCannotOpenDialog(title: String) {
@@ -379,6 +378,35 @@ abstract class ReaderActivity : KdanBaseActivity(), ReaderSettingListener, PdfTh
             false -> hideTopLeftBottomToolbars()
         }
         readerModel.onPdfChangedListener?.onPageUpdated(arrayListOf(currentPageIndex))
+
+        view_ink_menu.clearAnimation()
+        when (annotationMode == ReaderViewModel.AnnotationMode.INK) {
+            true -> AnimationUtil.showViewAlpha(view_ink_menu)
+            false -> AnimationUtil.hideViewAlpha(view_ink_menu)
+        }
+    }
+
+    private fun setupInkMenu() {
+        val btnInkUndo = findViewById<ImageButton>(R.id.btn_ink_undo)
+        val btnInkRedo = findViewById<ImageButton>(R.id.btn_ink_redo)
+        val btnInkClean = findViewById<ImageButton>(R.id.btn_ink_clean)
+        val btnInkDone = findViewById<ImageButton>(R.id.btn_ink_done)
+
+        btnInkUndo.setOnClickListener {
+            viewModel.undoInk()
+        }
+
+        btnInkRedo.setOnClickListener {
+            viewModel.redoInk()
+        }
+
+        btnInkClean.setOnClickListener {
+            viewModel.cleanInk()
+        }
+
+        btnInkDone.setOnClickListener {
+            viewModel.finishInk()
+        }
     }
 
     private fun onAnnotationEditModeUpdate(mode: ReaderViewModel.AnnotationEitMode?) {

+ 21 - 0
src/main/java/com/kdanmobile/reader/ReaderViewModel.kt

@@ -365,6 +365,27 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, val ur
         annotationModeLiveData.postValue(AnnotationMode.INK)
     }
 
+    fun undoInk() {
+        val controller = kmpdfFactory?.getController(KMPDFFactory.ControllerType.INK) as KMPDFInkController?
+        controller?.cancelDraw()
+    }
+
+    fun redoInk() {
+        val controller = kmpdfFactory?.getController(KMPDFFactory.ControllerType.INK) as KMPDFInkController?
+        controller?.recoverDraw()
+    }
+
+    fun cleanInk() {
+        val controller = kmpdfFactory?.getController(KMPDFFactory.ControllerType.INK) as KMPDFInkController?
+        controller?.cleanDraw()
+    }
+
+    fun finishInk() {
+        val controller = kmpdfFactory?.getController(KMPDFFactory.ControllerType.INK) as KMPDFInkController?
+        controller?.stopDrawInk()
+        stopAnnotationMode()
+    }
+
     fun stopAnnotationMode() {
         kmpdfFactory?.setAnnotationEditMode(KMPDFAnnotationBean.AnnotationType.NULL)
         annotationModeLiveData.postValue(AnnotationMode.NONE)