ReaderModel.kt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.kdanmobile.reader
  2. import android.annotation.SuppressLint
  3. import com.kdanmobile.kmpdfkit.manager.KMPDFFactory
  4. import com.kdanmobile.kmpdfkit.manager.controller.KMPDFDocumentController
  5. import com.kdanmobile.kmpdfkit.manager.controller.KMPDFSignatureController
  6. class ReaderModel {
  7. private var filename: String? = null
  8. var password: String = ""
  9. private set
  10. var kmpdfFactory: KMPDFFactory? = null
  11. private set
  12. @SuppressLint("StaticFieldLeak")
  13. var kmpdfDocumentController: KMPDFDocumentController? = null
  14. private set
  15. var kmpdfSignatureController: KMPDFSignatureController? = null
  16. private set
  17. var onPdfChangedListener: OnPdfChangedListener? = null
  18. var referenceCount = 0
  19. @Synchronized
  20. fun initKMPDFFactory(kmpdfFactory: KMPDFFactory?, filename: String?, password: String = "") {
  21. this.kmpdfFactory?.run {
  22. destroy()
  23. }
  24. this.kmpdfFactory = kmpdfFactory
  25. this.filename = filename
  26. this.password = password
  27. }
  28. fun initKMPDFDocumentController() {
  29. kmpdfDocumentController = kmpdfFactory?.getController(KMPDFFactory.ControllerType.DOCUMENT) as KMPDFDocumentController
  30. kmpdfSignatureController = kmpdfFactory?.getController(KMPDFFactory.ControllerType.SIGNATURE) as KMPDFSignatureController
  31. }
  32. @Synchronized
  33. fun destroy() {
  34. filename = null
  35. password = ""
  36. kmpdfFactory?.destroy()
  37. kmpdfFactory = null
  38. kmpdfDocumentController = null
  39. kmpdfSignatureController = null
  40. }
  41. fun register() {
  42. referenceCount++
  43. }
  44. fun unregister() {
  45. referenceCount--
  46. if (referenceCount == 0) {
  47. destroy()
  48. }
  49. }
  50. }