FragmentUploadCase.kt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.cr.pages
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.viewpager2.widget.ViewPager2
  7. import com.cr.adapter.CrPageAdapter
  8. import com.cr.cruav.CrApplication
  9. import com.cr.cruav.R
  10. import com.cr.data.CrUtil
  11. import com.cr.event.BarAction
  12. import com.cr.event.EventFragmentBarAction
  13. import com.cr.map.CaseModel
  14. /**
  15. * 操作系统:MAC系统
  16. * 创建者:王成
  17. * 创建日期:2023/6/15 11:18
  18. * 描述:案件上传页面框架
  19. */
  20. class FragmentUploadCase : CrNavigationFragment() {
  21. private var joinCase: CaseModel? = null // define: 2023/6/15 关联的案件模型
  22. private var adapter: CrPageAdapter? = null // define: 2023/6/15 页面适配器
  23. private var viewPager: ViewPager2? = null // define: 2023/6/15 页面容器
  24. // todo: 2023/6/15 主页面
  25. private var fragmentUploadCaseMain: FragmentUploadCaseMain? = null
  26. // todo: 2023/6/20 编辑照片页面
  27. private var fragmentImageEditor: FragmentImageEditor? = null
  28. // todo: 2023/8/18 上传案件页面
  29. private var fragmentUploadCaseAction:FragmentUploadAction?=null
  30. /**
  31. * 初始化
  32. * @param inflater LayoutInflater
  33. * @param container ViewGroup?
  34. * @param savedInstanceState Bundle?
  35. * @return View?
  36. */
  37. override fun onCreateView(
  38. inflater: LayoutInflater,
  39. container: ViewGroup?,
  40. savedInstanceState: Bundle?
  41. ): View? {
  42. // todo: 2023/6/15 设置动画方向
  43. setAnimationDirection(AnimationDirection.RIGHT)
  44. self = this
  45. mainView = inflater.inflate(R.layout.frag_case_upload, null)
  46. // todo: 2023/6/15 挂接控件
  47. joinControls()
  48. // todo: 2023/6/15 初始化月面
  49. initPage()
  50. // todo: 2023/6/15 设置导航栏
  51. setBar(R.id.nv)
  52. // todo: 2023/6/15 初始化导航栏
  53. initBar()
  54. return mainView
  55. }
  56. /**
  57. * 覆写控件挂接
  58. */
  59. override fun initControls() {
  60. // todo: 2023/6/15 挂接页面
  61. viewPager = mainView?.findViewById(R.id.frag_pages)
  62. viewPager?.isUserInputEnabled = false // todo: 2023/6/15 禁止滑动
  63. }
  64. /**
  65. * 初始化页面
  66. */
  67. override fun initPage() {
  68. // todo: 2023/6/15 初始化页面适配器
  69. adapter = CrPageAdapter(this.requireActivity())
  70. // todo: 2023/6/15 初始化主页面
  71. fragmentUploadCaseMain = FragmentUploadCaseMain()
  72. fragmentUploadCaseMain?.crSetListener(caseMainListener)
  73. adapter?.addFragment(fragmentUploadCaseMain!!)
  74. // todo: 2023/6/15 设置监听
  75. viewPager?.adapter = adapter
  76. }
  77. /**
  78. * 显示页面
  79. * @param fragment CrNavigationFragment
  80. */
  81. private fun showPage(fragment: CrNavigationFragment) {
  82. var fragments = adapter?.getFragments()
  83. for (i in 0 until fragments!!.size) {
  84. if (fragments?.get(i) == fragment) {
  85. fragment.nvBar?.visibility = View.GONE
  86. viewPager?.currentItem = i
  87. break
  88. }
  89. }
  90. }
  91. /**
  92. * 初始化导航栏
  93. */
  94. private fun initBar() {
  95. nvBar?.crSetTitle(R.string.upload_case_title_main)
  96. nvBar?.crSetVisible(backIsVisible = false, dismissIsVisible = true)
  97. showPage(fragmentUploadCaseMain!!)
  98. }
  99. /**
  100. * 上传主页监听
  101. */
  102. private val caseMainListener = object : FragmentUploadCaseMain.IOperationListener {
  103. // todo: 2023/6/20 编辑照片操作回调
  104. override fun onEditImage(imagePath: String) {
  105. nvBar?.crSetTitle(R.string.upload_case_title_image_editor)
  106. nvBar?.crSetVisible(backIsVisible = true, dismissIsVisible = false)
  107. // todo: 2023/6/20 初始化照片编辑页面
  108. fragmentImageEditor = FragmentImageEditor()
  109. adapter?.addFragment(fragmentImageEditor!!)
  110. // todo: 2023/6/20 设置显示的照片
  111. fragmentImageEditor?.crSetImage(imagePath)
  112. // todo: 2023/6/20 显示页面
  113. showPage(fragmentImageEditor!!)
  114. }
  115. // todo: 2023/8/18 案件上传
  116. override fun onUploadCase(joinCase: CaseModel) {
  117. nvBar?.crSetTitle(R.string.upload_case_title_main)
  118. nvBar?.crSetVisible(backIsVisible = true, dismissIsVisible = false)
  119. // todo: 2023/8/18 初始化页面
  120. fragmentUploadCaseAction = FragmentUploadAction()
  121. adapter?.addFragment(fragmentUploadCaseAction!!)
  122. // todo: 2023/8/18 显示页面
  123. showPage(fragmentUploadCaseAction!!)
  124. // todo: 2023/8/25 设置关联案件
  125. fragmentUploadCaseAction?.crSetJoinCase(joinCase)
  126. }
  127. }
  128. /**
  129. * 设置关联的案件
  130. * @param joinCase CaseModel 关联案件
  131. */
  132. fun crSetJoinCase(joinCase: CaseModel) {
  133. this.joinCase = joinCase
  134. fragmentUploadCaseMain!!.crSetJoinCase(this.joinCase!!)
  135. }
  136. /**
  137. * 重写关闭事件
  138. */
  139. override fun onDismiss() {
  140. CrApplication.getEventBus().post(EventFragmentBarAction(self!!, BarAction.ACTION_DISMISS))
  141. }
  142. /**
  143. * 重写回退事件
  144. */
  145. override fun onGotoBack() {
  146. // todo: 2023/6/20 删除刚刚加载的页面
  147. adapter?.removeLastFragment()
  148. // todo: 2023/6/20 初始化任务栏
  149. initBar()
  150. }
  151. }