Browse Source

Merge branch 'moveHandlersToReaderModel' into 'master'

Move Handler(com.kdanmobile.reader.screen.handler.*) to ReaderModel

See merge request kdanandroid/pdf/pdfreaderreadermodule!12
Wayne Huang 5 years ago
parent
commit
cb864dc533

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

@@ -476,7 +476,7 @@ abstract class ReaderActivity : KdanBaseActivity(), ReaderSettingListener, PdfTh
         if (!filePath.isNullOrEmpty()) {
             val defaultValue = viewModel.pageIndexLiveData.value ?: 0
             val pageIndex = loadCurrentPageIndex(filePath as String, defaultValue)
-            viewModel.pdfInfoHandler.setCurrentPage(pageIndex)
+            viewModel.pdfInfoHandler.goToCurrentPage(pageIndex)
             viewModel.fileNameLiveData.postValue(File(filePath as String).name)
         }
         initTextBoxContextMenuActions()
@@ -859,13 +859,13 @@ abstract class ReaderActivity : KdanBaseActivity(), ReaderSettingListener, PdfTh
             val handler = viewModel.pdfInfoHandler
             val pageIndex = handler.getCurrentPage()
             val previousPageIndex = Math.max(pageIndex - 1, 0)
-            handler.setCurrentPage(previousPageIndex)
+            handler.goToCurrentPage(previousPageIndex)
         }
         ib_readerActivity_bottomToolbarNext.setOnClickListener {
             val handler = viewModel.pdfInfoHandler
             val pageIndex = handler.getCurrentPage()
             val nextPageIndex = Math.min(pageIndex + 1, handler.getPdfPageCount() - 1)
-            handler.setCurrentPage(nextPageIndex)
+            handler.goToCurrentPage(nextPageIndex)
         }
         ib_readerActivity_bottomToolbarKdanCloud.visibility = if (isBottomBarKdanCloudBtnVisible()) {
             View.VISIBLE

+ 96 - 0
src/main/java/com/kdanmobile/reader/ReaderModel.kt

@@ -1,9 +1,16 @@
 package com.kdanmobile.reader
 
 import android.annotation.SuppressLint
+import android.graphics.Bitmap
+import android.graphics.RectF
 import com.kdanmobile.kmpdfkit.manager.KMPDFFactory
 import com.kdanmobile.kmpdfkit.manager.controller.KMPDFDocumentController
 import com.kdanmobile.kmpdfkit.manager.controller.KMPDFSignatureController
+import com.kdanmobile.kmpdfkit.pdfcommon.Bookmark
+import com.kdanmobile.kmpdfkit.pdfcommon.OutlineItem
+import com.kdanmobile.kmpdfkit.pdfcommon.TextChar
+import com.kdanmobile.kmpdfkit.pdfcommon.TextWord
+import com.kdanmobile.reader.screen.handler.*
 
 class ReaderModel {
     private var filename: String? = null
@@ -49,4 +56,93 @@ class ReaderModel {
         kmpdfSignatureController = null
         onPdfChangedListener = null
     }
+
+    val pdfInfoHandler = object : PdfInfoHandler {
+        override fun getOpenPdfFilename(): String {
+            return kmpdfFactory?.fileName ?: ""
+        }
+
+        override fun getPdfPageCount(isNativeRefresh: Boolean): Int {
+            return kmpdfDocumentController?.getDocumentPageCount(isNativeRefresh) ?: 0
+        }
+
+        override fun getCurrentPage(): Int {
+            return kmpdfDocumentController?.currentPageNum ?: 0
+        }
+
+        override fun goToCurrentPage(page: Int): Boolean {
+            return kmpdfDocumentController?.gotoPage(page) ?: false
+        }
+
+        override fun getTextLines(page: Int): Array<Array<TextWord>> {
+            return kmpdfDocumentController?.textLines(page) ?: arrayOf()
+        }
+
+        override fun getPageChars(page: Int): Array<Array<Array<Array<TextChar>>>> {
+            return kmpdfDocumentController?.getPageChars(page) ?: arrayOf()
+        }
+    }
+
+    val thumbnailHandler = object : ThumbnailHandler {
+        override fun getPdfBitmap(position: Int, picWidth: Int, mode: Int, isDrawAnnot: Boolean): Bitmap {
+            return kmpdfDocumentController?.covertPDFToBitmap(position, picWidth, mode, isDrawAnnot) ?: Bitmap.createBitmap(0, 0, Bitmap.Config.ARGB_4444)
+        }
+    }
+
+    val bookmarkHandler = object : BookmarkHandler {
+        override fun getBookmarks(): Array<Bookmark> {
+            return kmpdfDocumentController?.bookmarks ?: arrayOf()
+        }
+    }
+
+    val outlineHandler = object : OutlineHandler {
+        override fun getOutline(): Array<OutlineItem> {
+            return kmpdfDocumentController?.outline ?: arrayOf()
+        }
+    }
+
+    val searchHandler = object : SearchHandler {
+        override fun searchPage(page: Int, keyword: String): Array<RectF> {
+            return kmpdfDocumentController?.searchPage(page, keyword) ?: arrayOf()
+        }
+
+        override fun cleanPreviousSearchResults(keyword: String): Boolean {
+            return kmpdfDocumentController?.cleanPreviousSearchResults(keyword) ?: false
+        }
+
+        override fun setSearchResult(page: Int, keyword: String, rectArray: Array<RectF>): Boolean {
+            return kmpdfDocumentController?.setSearchResult(keyword, page, rectArray) ?: false
+        }
+
+        override fun stopSearchKeyWord(): Boolean {
+            return kmpdfDocumentController?.stopSearchKeyWord() ?: false
+        }
+    }
+
+    val operateHandler = object : OperateHandler {
+        override fun rotatePages(pages: IntArray, rotateDirection: KMPDFDocumentController.RotationalDirection): Boolean {
+            return kmpdfDocumentController?.rotatePages(pages, rotateDirection) ?: false
+        }
+
+        override fun deletePages(pages: IntArray): Boolean {
+            return kmpdfDocumentController?.deletePages(pages) ?: false
+        }
+        override fun save(): Boolean {
+            return kmpdfDocumentController?.save() ?: false
+        }
+
+        override fun reorderPage(fromPage: Int, toPage: Int): Boolean {
+            return kmpdfDocumentController?.reorderPages(fromPage,toPage) ?: false
+        }
+
+        override fun splitPDFWithPages(path: String, selectPage: IntArray): Boolean {
+            return kmpdfDocumentController?.splitPDFWithPages(path, selectPage) ?: false
+        }
+    }
+
+    val passwordHandler = object : PasswordHandler {
+        override fun isNeedPassword(): Boolean {
+            return kmpdfFactory?.needPassWord() ?: false
+        }
+    }
 }

+ 5 - 59
src/main/java/com/kdanmobile/reader/ReaderViewModel.kt

@@ -4,9 +4,7 @@ import android.arch.lifecycle.LiveData
 import android.arch.lifecycle.MutableLiveData
 import android.arch.lifecycle.ViewModel
 import android.content.Context
-import android.graphics.Bitmap
 import android.graphics.Color
-import android.graphics.RectF
 import android.net.Uri
 import android.support.v4.content.ContextCompat
 import com.kdanmobile.kmpdfkit.annotation.Annotation
@@ -715,65 +713,13 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, privat
         kmpdfFactory?.setAnnotationEditMode(kmpdfShapeAnnotationBean.type)
     }
 
-    val pdfInfoHandler = object : PdfInfoHandler {
-        override fun getOpenPdfFilename(): String {
-            return kmpdfFactory?.fileName ?: ""
-        }
-
-        override fun getPdfPageCount(isNativeRefresh: Boolean): Int {
-            return kmpdfDocumentController?.getDocumentPageCount(isNativeRefresh) ?: 0
-        }
-
-        override fun getCurrentPage(): Int {
-            return kmpdfDocumentController?.currentPageNum ?: 0
-        }
-
-        override fun setCurrentPage(page: Int): Boolean {
-            return kmpdfDocumentController?.gotoPage(page) ?: false
-        }
-
-        override fun textLines(page: Int): Array<Array<TextWord>> {
-            return kmpdfDocumentController?.textLines(page) ?: arrayOf()
-        }
-
-        override fun getPageChars(page: Int): Array<Array<Array<Array<TextChar>>>> {
-            return kmpdfDocumentController?.getPageChars(page) ?: arrayOf()
-        }
-    }
-
-    val thumbnailHandler = object : ThumbnailHandler {
-        override fun getPdfBitmap(position: Int, picWidth: Int, mode: Int, isDrawAnnot: Boolean): Bitmap {
-            return kmpdfDocumentController?.covertPDFToBitmap(position, picWidth, mode, isDrawAnnot) ?: Bitmap.createBitmap(0, 0, Bitmap.Config.ARGB_4444)
-        }
-    }
+    val pdfInfoHandler: PdfInfoHandler by lazy { readerModel.pdfInfoHandler }
 
-    val bookmarkHandler = object : BookmarkHandler {
-        override fun getBookmarks(): Array<Bookmark> {
-            return kmpdfDocumentController?.bookmarks ?: arrayOf()
-        }
-    }
+    val thumbnailHandler: ThumbnailHandler by lazy { readerModel.thumbnailHandler }
 
-    val outlineHandler = object : OutlineHandler {
-        override fun getOutline(): Array<OutlineItem> {
-            return kmpdfDocumentController?.outline ?: arrayOf()
-        }
-    }
+    val bookmarkHandler: BookmarkHandler by lazy { readerModel.bookmarkHandler }
 
-    val searchHandler = object : SearchHandler {
-        override fun searchPage(page: Int, keyword: String): Array<RectF> {
-            return kmpdfDocumentController?.searchPage(page, keyword) ?: arrayOf()
-        }
+    val outlineHandler: OutlineHandler by lazy { readerModel.outlineHandler }
 
-        override fun cleanPreviousSearchResults(keyword: String): Boolean {
-            return kmpdfDocumentController?.cleanPreviousSearchResults(keyword) ?: false
-        }
-
-        override fun setSearchResult(page: Int, keyword: String, rectArray: Array<RectF>): Boolean {
-            return kmpdfDocumentController?.setSearchResult(keyword, page, rectArray) ?: false
-        }
-
-        override fun stopSearchKeyWord(): Boolean {
-            return kmpdfDocumentController?.stopSearchKeyWord() ?: false
-        }
-    }
+    val searchHandler: SearchHandler by lazy { readerModel.searchHandler }
 }

+ 2 - 2
src/main/java/com/kdanmobile/reader/screen/handler/PdfInfoHandler.kt

@@ -11,9 +11,9 @@ interface PdfInfoHandler {
 
     fun getCurrentPage(): Int
 
-    fun setCurrentPage(page: Int): Boolean
+    fun goToCurrentPage(page: Int): Boolean
 
-    fun textLines(page: Int): Array<Array<TextWord>>
+    fun getTextLines(page: Int): Array<Array<TextWord>>
 
     fun getPageChars(page: Int): Array<Array<Array<Array<TextChar>>>>
 }

+ 1 - 1
src/main/java/com/kdanmobile/reader/screen/view/BookmarkView.kt

@@ -46,7 +46,7 @@ class BookmarkView: RelativeLayout, LeftToolbarView {
                 onScrollToPosition(viewHolder.adapterPosition, true)
                 val bookmark = adapter?.getItem(viewHolder.adapterPosition)
                 if (null != bookmark) {
-                    pdfInfoHandler?.setCurrentPage(bookmark.pageNum)
+                    pdfInfoHandler?.goToCurrentPage(bookmark.pageNum)
                 }
             }
 

+ 1 - 1
src/main/java/com/kdanmobile/reader/screen/view/OutlineView.kt

@@ -39,7 +39,7 @@ class OutlineView: RelativeLayout, LeftToolbarView {
         lv_viewPdfReaderOutline_.setOnItemClickListener { _, _, position, _ ->
             val item = adapter?.getItem(position)
             if (null != item) {
-                pdfInfoHandler?.setCurrentPage(item.page)
+                pdfInfoHandler?.goToCurrentPage(item.page)
             }
         }
 

+ 2 - 2
src/main/java/com/kdanmobile/reader/screen/view/SearchView.kt

@@ -108,7 +108,7 @@ class SearchView: RelativeLayout, View.OnClickListener, LeftToolbarView {
                             val position = msg.arg1
                             val info = view.list[position]
                             view.searchHandler?.setSearchResult(info.page, info.keyword, info.rectList)
-                            view.pdfInfoHandler?.setCurrentPage(view.list[position].page)
+                            view.pdfInfoHandler?.goToCurrentPage(view.list[position].page)
                         }
                     }
                 }
@@ -280,7 +280,7 @@ class SearchView: RelativeLayout, View.OnClickListener, LeftToolbarView {
             if (isPage) {
                 val page = Integer.parseInt(searchText)
                 if (page > 0) {
-                    pdfInfoHandler?.setCurrentPage(page - 1)
+                    pdfInfoHandler?.goToCurrentPage(page - 1)
                 }
             } else if (searchText.length >= 3) {
                 if (list.size > 0) {

+ 1 - 1
src/main/java/com/kdanmobile/reader/screen/view/ThumbnailView.kt

@@ -41,7 +41,7 @@ class ThumbnailView: RelativeLayout, LeftToolbarView {
         id_km_thumb_recycler.addOnItemTouchListener(object : OnRecyclerItemClickListener(id_km_thumb_recycler) {
             override fun onItemClick(viewHolder: RecyclerView.ViewHolder) {
                 onScrollToContent(viewHolder.adapterPosition, true)
-                pdfInfoHandler?.setCurrentPage(viewHolder.adapterPosition)
+                pdfInfoHandler?.goToCurrentPage(viewHolder.adapterPosition)
             }
 
             override fun onItemLongClick(viewHolder: RecyclerView.ViewHolder) {

+ 2 - 2
src/main/java/com/kdanmobile/reader/thumb/PdfThumbDialogFragment.kt

@@ -214,7 +214,7 @@ abstract class PdfThumbDialogFragment: DialogFragment(), PdfThumbAdapter.PageMov
                 onModeSwitched()
             }
             false -> {
-                viewModel.pdfInfoHandler.setCurrentPage(viewModel.pdfInfoHandler.getCurrentPage())
+                viewModel.pdfInfoHandler.goToCurrentPage(viewModel.pdfInfoHandler.getCurrentPage())
                 dismiss()
             }
         }
@@ -331,6 +331,6 @@ abstract class PdfThumbDialogFragment: DialogFragment(), PdfThumbAdapter.PageMov
     }
 
     fun moveToPage(pageIndex: Int) {
-        viewModel.pdfInfoHandler.setCurrentPage(pageIndex)
+        viewModel.pdfInfoHandler.goToCurrentPage(pageIndex)
     }
 }

+ 7 - 67
src/main/java/com/kdanmobile/reader/thumb/PdfThumbViewModel.kt

@@ -1,14 +1,9 @@
 package com.kdanmobile.reader.thumb
 
 import android.arch.lifecycle.ViewModel
-import android.graphics.Bitmap
 import com.kdanmobile.kmpdfkit.manager.KMPDFFactory
 import com.kdanmobile.kmpdfkit.manager.controller.KMPDFDocumentController
-import com.kdanmobile.kmpdfkit.pdfcommon.Bookmark
-import com.kdanmobile.kmpdfkit.pdfcommon.TextChar
-import com.kdanmobile.kmpdfkit.pdfcommon.TextWord
 import com.kdanmobile.reader.ReaderModel
-import com.kdanmobile.reader.screen.handler.*
 import com.kdanmobile.reader.thumb.mode.Mode
 import com.kdanmobile.reader.thumb.mode.NormalMode
 import io.reactivex.Observable
@@ -32,70 +27,15 @@ class PdfThumbViewModel(private val readerModel: ReaderModel): ViewModel() {
     var isEdit = false
     var isPdf = false
 
-    val pdfInfoHandler = object : PdfInfoHandler {
-        override fun getOpenPdfFilename(): String {
-            return kmpdfFactory?.fileName ?: ""
-        }
-
-        override fun getPdfPageCount(isNativeRefresh: Boolean): Int {
-            return kmpdfDocumentController?.getDocumentPageCount(isNativeRefresh) ?: 0
-        }
-
-        override fun getCurrentPage(): Int {
-            return kmpdfDocumentController?.currentPageNum ?: 0
-        }
-
-        override fun setCurrentPage(page: Int): Boolean {
-            return kmpdfDocumentController?.gotoPage(page) ?: false
-        }
+    val pdfInfoHandler = readerModel.pdfInfoHandler
 
-        override fun textLines(page: Int): Array<Array<TextWord>> {
-            return kmpdfDocumentController?.textLines(page) ?: arrayOf()
-        }
+    val thumbnailHandler = readerModel.thumbnailHandler
 
-        override fun getPageChars(page: Int): Array<Array<Array<Array<TextChar>>>> {
-            return kmpdfDocumentController?.getPageChars(page) ?: arrayOf()
-        }
-    }
+    private val bookmarkHandler = readerModel.bookmarkHandler
 
-    val thumbnailHandler = object : ThumbnailHandler {
-        override fun getPdfBitmap(position: Int, picWidth: Int, mode: Int, isDrawAnnot: Boolean): Bitmap {
-            return kmpdfDocumentController?.covertPDFToBitmap(position, picWidth, mode, isDrawAnnot) ?: Bitmap.createBitmap(0, 0, Bitmap.Config.ARGB_4444)
-        }
-    }
+    private val operateHandler = readerModel.operateHandler
 
-    private val bookmarkHandler = object : BookmarkHandler {
-        override fun getBookmarks(): Array<Bookmark> {
-            return kmpdfDocumentController?.bookmarks ?: arrayOf()
-        }
-    }
-
-    private val operateHandler = object : OperateHandler {
-        override fun rotatePages(pages: IntArray, rotateDirection: KMPDFDocumentController.RotationalDirection): Boolean {
-            return kmpdfDocumentController?.rotatePages(pages, rotateDirection) ?: false
-        }
-
-        override fun deletePages(pages: IntArray): Boolean {
-            return kmpdfDocumentController?.deletePages(pages) ?: false
-        }
-        override fun save(): Boolean {
-            return kmpdfDocumentController?.save() ?: false
-        }
-
-        override fun reorderPage(fromPage: Int, toPage: Int): Boolean {
-            return kmpdfDocumentController?.reorderPages(fromPage,toPage) ?: false
-        }
-
-        override fun splitPDFWithPages(path: String, selectPage: IntArray): Boolean {
-            return kmpdfDocumentController?.splitPDFWithPages(path, selectPage) ?: false
-        }
-    }
-
-    val passwordHandler = object : PasswordHandler {
-        override fun isNeedPassword(): Boolean {
-            return kmpdfFactory?.needPassWord() ?: false
-        }
-    }
+    val passwordHandler = readerModel.passwordHandler
 
     init {
         isPdf = kmpdfFactory?.fileName?.toLowerCase(Locale.US)?.endsWith(".pdf") ?: false
@@ -232,11 +172,11 @@ class PdfThumbViewModel(private val readerModel: ReaderModel): ViewModel() {
         // update selected page
         val currentPage = pdfInfoHandler.getCurrentPage()
         if (currentPage < 0) {
-            pdfInfoHandler.setCurrentPage(0)
+            pdfInfoHandler.goToCurrentPage(0)
             thumbData.currentPage = 0
         }
         else if (currentPage >= pdfPageCount) {
-            pdfInfoHandler.setCurrentPage(pdfPageCount - 1)
+            pdfInfoHandler.goToCurrentPage(pdfPageCount - 1)
             thumbData.currentPage = pdfPageCount - 1
         }
     }