Просмотр исходного кода

Merge branch 'fixLongPressPasteNullPointerException' into 'master'

Fix: KMPDFLongPressCreateAnnotController::longPress_Paste() NullPointerException

See merge request kdanandroid/pdf/pdfreaderreadermodule!48
Wayne Huang 5 лет назад
Родитель
Сommit
868bc6b1cc

+ 13 - 4
src/main/java/com/kdanmobile/reader/screen/contextmenu/MyKMPDFContextMenuCallback.kt

@@ -1,5 +1,6 @@
 package com.kdanmobile.reader.screen.contextmenu
 
+import android.content.ClipboardManager
 import android.content.Context
 import android.graphics.Color
 import android.graphics.Point
@@ -299,10 +300,18 @@ open class MyKMPDFContextMenuCallback(private val kmpdfFactory: KMPDFFactory?) :
     private fun createLongPressContextMenuView(context: Context): View {
         val layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
         val contentView = layoutInflater.inflate(R.layout.view_context_menu_long_press, null)
-        contentView.findViewById<TextView>(R.id.btnPaste_contextMenu).setOnClickListener {
-            val kmpdfLongPressCreateAnnotController = kmpdfFactory?.getController(KMPDFFactory.ControllerType.LONGCLICK) as KMPDFLongPressCreateAnnotController?
-            kmpdfLongPressCreateAnnotController?.longPress_Paste()
-            onLongPress()
+
+        val btnPaste = contentView.findViewById<TextView>(R.id.btnPaste_contextMenu)
+        val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+        if (!clipboardManager.hasPrimaryClip() || (clipboardManager.primaryClip?.getItemAt(0)?.text?.toString()).isNullOrEmpty()) {
+            btnPaste.setTextColor(ContextCompat.getColor(context, R.color.reader_contextMenu_text_disabled))
+        }
+        btnPaste.setOnClickListener {
+            if (clipboardManager.hasPrimaryClip()) {
+                val kmpdfLongPressCreateAnnotController = kmpdfFactory?.getController(KMPDFFactory.ControllerType.LONGCLICK) as KMPDFLongPressCreateAnnotController?
+                kmpdfLongPressCreateAnnotController?.longPress_Paste()
+                onLongPress()
+            }
             dismissPopupWindow()
         }
         return contentView

+ 1 - 0
src/main/res/values/colors.xml

@@ -79,6 +79,7 @@
     <color name="ink_menu_background">#FFFFFF</color>
 
     <color name="reader_contextMenu_text">#DE000000</color>
+    <color name="reader_contextMenu_text_disabled">#BDBDBD</color>
     <color name="reader_contextMenu_bgNormal">#FFFFFF</color>
     <color name="reader_contextMenu_bgPressed">#E0E0E0</color>
 </resources>