|
@@ -9,6 +9,7 @@ import android.net.Uri
|
|
|
import android.support.v4.content.ContextCompat
|
|
|
import com.kdanmobile.kmpdfkit.annotation.Annotation
|
|
|
import com.kdanmobile.kmpdfkit.annotation.bean.*
|
|
|
+import com.kdanmobile.kmpdfkit.annotation.link.listener.OnLinkInfoChangeListener
|
|
|
import com.kdanmobile.kmpdfkit.globaldata.AnnotConfig
|
|
|
import com.kdanmobile.kmpdfkit.globaldata.Config
|
|
|
import com.kdanmobile.kmpdfkit.globaldata.KMPDFAnnotEditMode
|
|
@@ -16,6 +17,7 @@ import com.kdanmobile.kmpdfkit.manager.KMPDFFactory
|
|
|
import com.kdanmobile.kmpdfkit.manager.controller.*
|
|
|
import com.kdanmobile.kmpdfkit.manager.listener.KMPDFAddAnnotCallback
|
|
|
import com.kdanmobile.kmpdfkit.manager.listener.KMPDFAnnotEditModeChangeListener
|
|
|
+import com.kdanmobile.kmpdfkit.manager.listener.KMPDFClickLinkCallback
|
|
|
import com.kdanmobile.kmpdfkit.pdfcommon.*
|
|
|
import com.kdanmobile.reader.annotationattribute.AnnotationAttribute
|
|
|
import com.kdanmobile.reader.annotationattribute.Brush
|
|
@@ -33,6 +35,12 @@ import kotlin.collections.ArrayList
|
|
|
|
|
|
class ReaderViewModel(private val readerModelManager: ReaderModelManager, val uri: Uri, private val pdfSdkLicense: String, private val pdfSdkRsaMsg: String) : ViewModel() {
|
|
|
|
|
|
+ interface OnClickLinkListener {
|
|
|
+ fun onClickWebsiteLink(url: String): Boolean
|
|
|
+ fun onClickPdfPageLink(url: String): Boolean
|
|
|
+ fun onClickEmailLink(url: String): Boolean
|
|
|
+ }
|
|
|
+
|
|
|
enum class ViewDirection(val mode: Config.PDFViewMode) {
|
|
|
VERTICAL_SINGLE_PAGE_CONTINUES(Config.PDFViewMode.VERTICAL_SINGLE_PAGE_CONTINUES),
|
|
|
VERTICAL_SINGLE_PAGE(Config.PDFViewMode.VERTICAL_SINGLE_PAGE),
|
|
@@ -180,6 +188,8 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, val ur
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private var onClickLinkListener: OnClickLinkListener? = null
|
|
|
+
|
|
|
@JvmOverloads
|
|
|
fun openPdfFile(context: Context, password: String, onRequestPassword: Runnable, type: String? = null): OpenFileResult {
|
|
|
if (!isVerified) {
|
|
@@ -439,6 +449,17 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, val ur
|
|
|
annotationEitModeLiveData.postValue(AnnotationEitMode.getMode(it))
|
|
|
}
|
|
|
|
|
|
+ val linkController = kmpdfFactory?.getController(KMPDFFactory.ControllerType.LINK) as KMPDFLinkController?
|
|
|
+ linkController?.setOnClickLinkCallback(KMPDFClickLinkCallback{ type, url ->
|
|
|
+ if (url.isNullOrEmpty()) return@KMPDFClickLinkCallback true
|
|
|
+ return@KMPDFClickLinkCallback when (type) {
|
|
|
+ OnLinkInfoChangeListener.KMPDFLinkType.WEBSITE -> onClickLinkListener?.onClickWebsiteLink(url)
|
|
|
+ OnLinkInfoChangeListener.KMPDFLinkType.PAGE -> onClickLinkListener?.onClickPdfPageLink(url)
|
|
|
+ OnLinkInfoChangeListener.KMPDFLinkType.EMAIL -> onClickLinkListener?.onClickEmailLink(url)
|
|
|
+ else -> false
|
|
|
+ } ?: false
|
|
|
+ })
|
|
|
+
|
|
|
setupContextMenu()
|
|
|
|
|
|
if (!isFirst) {
|
|
@@ -451,6 +472,10 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, val ur
|
|
|
controller?.contextMenuCallback = contextMenuCallback
|
|
|
}
|
|
|
|
|
|
+ fun setOnClickLinkCallback(onClickLinkListener: OnClickLinkListener) {
|
|
|
+ this.onClickLinkListener = onClickLinkListener
|
|
|
+ }
|
|
|
+
|
|
|
fun setTextBoxContextMenuActions(listener: TextBoxContextMenuActionListener) {
|
|
|
contextMenuCallback.setTextBoxContextMenuActions(listener)
|
|
|
}
|