|
@@ -32,7 +32,7 @@ import java.io.File
|
|
import java.util.*
|
|
import java.util.*
|
|
import kotlin.collections.ArrayList
|
|
import kotlin.collections.ArrayList
|
|
|
|
|
|
-class ReaderViewModel(private val readerModelManager: ReaderModelManager, private val pdfSdkLicense: String, private val pdfSdkRsaMsg: String) : ViewModel() {
|
|
|
|
|
|
+class ReaderViewModel(private val readerModelManager: ReaderModelManager, val uri: Uri, private val pdfSdkLicense: String, private val pdfSdkRsaMsg: String) : ViewModel() {
|
|
|
|
|
|
enum class ViewDirection(val mode: Config.PDFViewMode) {
|
|
enum class ViewDirection(val mode: Config.PDFViewMode) {
|
|
VERTICAL_SINGLE_PAGE_CONTINUES(Config.PDFViewMode.VERTICAL_SINGLE_PAGE_CONTINUES),
|
|
VERTICAL_SINGLE_PAGE_CONTINUES(Config.PDFViewMode.VERTICAL_SINGLE_PAGE_CONTINUES),
|
|
@@ -127,9 +127,7 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, privat
|
|
var inkAttributeLiveData = MutableLiveData<InkAttribute>().apply { value = DEFAULT_INK_ATTR }
|
|
var inkAttributeLiveData = MutableLiveData<InkAttribute>().apply { value = DEFAULT_INK_ATTR }
|
|
|
|
|
|
private var isVerified = false
|
|
private var isVerified = false
|
|
- var uri: Uri? = null // Used to get ReaderModel from ReaderModelManager
|
|
|
|
- private set
|
|
|
|
- lateinit var readerModel: ReaderModel
|
|
|
|
|
|
+ val readerModel: ReaderModel = readerModelManager.get(uri)
|
|
private val kmpdfFactory: KMPDFFactory?
|
|
private val kmpdfFactory: KMPDFFactory?
|
|
get() = readerModel.kmpdfFactory
|
|
get() = readerModel.kmpdfFactory
|
|
private val kmpdfDocumentController: KMPDFDocumentController?
|
|
private val kmpdfDocumentController: KMPDFDocumentController?
|
|
@@ -169,32 +167,26 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, privat
|
|
}
|
|
}
|
|
|
|
|
|
val password: String
|
|
val password: String
|
|
- get() = readerModel.password ?: ""
|
|
|
|
|
|
+ get() = readerModel.password
|
|
|
|
|
|
enum class OpenFileResult {
|
|
enum class OpenFileResult {
|
|
SUCCESS, FAILED, PASSWORD_PROTECTED
|
|
SUCCESS, FAILED, PASSWORD_PROTECTED
|
|
}
|
|
}
|
|
|
|
|
|
- fun init(uri: Uri) {
|
|
|
|
- if (this.uri != null) return
|
|
|
|
- this.uri = uri
|
|
|
|
- readerModel = readerModelManager.get(uri)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@JvmOverloads
|
|
@JvmOverloads
|
|
- fun openPdfFile(context: Context, uri: Uri, password: String, onRequestPassword: Runnable, type: String? = null): OpenFileResult {
|
|
|
|
|
|
+ fun openPdfFile(context: Context, password: String, onRequestPassword: Runnable, type: String? = null): OpenFileResult {
|
|
if (!isVerified) {
|
|
if (!isVerified) {
|
|
if (!verifyLicense(context)) {
|
|
if (!verifyLicense(context)) {
|
|
return OpenFileResult.FAILED
|
|
return OpenFileResult.FAILED
|
|
}
|
|
}
|
|
isVerified = true
|
|
isVerified = true
|
|
}
|
|
}
|
|
- return openPdfFileImp(context, uri, password, onRequestPassword, type).apply{
|
|
|
|
|
|
+ return openPdfFileImp(context, password, onRequestPassword, type).apply{
|
|
isOpenedFileLiveData.postValue(this == OpenFileResult.SUCCESS)
|
|
isOpenedFileLiveData.postValue(this == OpenFileResult.SUCCESS)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private fun openPdfFileImp(context: Context, uri: Uri, password: String, requestPassword: Runnable, type: String?): OpenFileResult {
|
|
|
|
|
|
+ private fun openPdfFileImp(context: Context, password: String, requestPassword: Runnable, type: String?): OpenFileResult {
|
|
file = File(uri.path)
|
|
file = File(uri.path)
|
|
val factory = KMPDFFactory.open(context, uri, type) ?: return OpenFileResult.FAILED
|
|
val factory = KMPDFFactory.open(context, uri, type) ?: return OpenFileResult.FAILED
|
|
readerModel.initKMPDFFactory(factory, uri.path, password)
|
|
readerModel.initKMPDFFactory(factory, uri.path, password)
|
|
@@ -215,7 +207,7 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, privat
|
|
}
|
|
}
|
|
|
|
|
|
override fun onCleared() {
|
|
override fun onCleared() {
|
|
- uri?.also { readerModelManager.release(it) }
|
|
|
|
|
|
+ readerModelManager.release(uri)
|
|
super.onCleared()
|
|
super.onCleared()
|
|
}
|
|
}
|
|
|
|
|
|
@@ -713,13 +705,13 @@ class ReaderViewModel(private val readerModelManager: ReaderModelManager, privat
|
|
kmpdfFactory?.setAnnotationEditMode(kmpdfShapeAnnotationBean.type)
|
|
kmpdfFactory?.setAnnotationEditMode(kmpdfShapeAnnotationBean.type)
|
|
}
|
|
}
|
|
|
|
|
|
- val pdfInfoHandler: PdfInfoHandler by lazy { readerModel.pdfInfoHandler }
|
|
|
|
|
|
+ val pdfInfoHandler: PdfInfoHandler = readerModel.pdfInfoHandler
|
|
|
|
|
|
- val thumbnailHandler: ThumbnailHandler by lazy { readerModel.thumbnailHandler }
|
|
|
|
|
|
+ val thumbnailHandler: ThumbnailHandler = readerModel.thumbnailHandler
|
|
|
|
|
|
- val bookmarkHandler: BookmarkHandler by lazy { readerModel.bookmarkHandler }
|
|
|
|
|
|
+ val bookmarkHandler: BookmarkHandler = readerModel.bookmarkHandler
|
|
|
|
|
|
- val outlineHandler: OutlineHandler by lazy { readerModel.outlineHandler }
|
|
|
|
|
|
+ val outlineHandler: OutlineHandler = readerModel.outlineHandler
|
|
|
|
|
|
- val searchHandler: SearchHandler by lazy { readerModel.searchHandler }
|
|
|
|
|
|
+ val searchHandler: SearchHandler = readerModel.searchHandler
|
|
}
|
|
}
|