FragmentUploadCaseMain.kt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.cr.pages
  2. import android.app.Activity.RESULT_OK
  3. import android.content.Intent
  4. import android.os.Build
  5. import android.os.Bundle
  6. import android.view.LayoutInflater
  7. import android.view.View
  8. import android.view.ViewGroup
  9. import android.widget.LinearLayout
  10. import android.widget.TextView
  11. import com.cr.common.CrPictureManager
  12. import com.cr.common.CrFileManager
  13. import com.cr.common.CrUnitManager
  14. import com.cr.cruav.R
  15. import com.cr.data.CrUtil
  16. import com.cr.map.CaseModel
  17. import com.cr.widget.CrImageBrowserWidget
  18. /**
  19. * 操作系统:MAC系统
  20. * 创建者:王成
  21. * 创建日期:2023/6/15 16:06
  22. * 描述:案件上传主页面
  23. */
  24. class FragmentUploadCaseMain : CrNavigationFragment(), View.OnClickListener {
  25. companion object {
  26. const val OPEN_ALBUM = 3 // define: 2023/6/16 相册
  27. }
  28. private var lblCaseName: TextView? = null // define: 2023/6/15 案件名称
  29. private var lblCaseImageCount: TextView? = null // define: 2023/6/15 案件照片数量
  30. private var lblCaseCreateDate: TextView? = null // define: 2023/6/15 案件创建日期
  31. private var lblCaseMediaName: TextView? = null // define: 2023/6/15 案件媒体点名称
  32. private var lblCaseMediaSize: TextView? = null // define: 2023/6/15 案件媒体大小
  33. private var btnEdit: LinearLayout? = null // define: 2023/6/15 编辑按钮
  34. private var btnPhoto: LinearLayout? = null // define: 2023/6/15 相册按钮
  35. private var btnUpload: LinearLayout? = null // define: 2023/6/15 上传按钮
  36. private var imageBrowser: CrImageBrowserWidget? = null // define: 2023/6/16 图片浏览控件
  37. private var joinCase: CaseModel? = null // define: 2023/6/15 关联的案件点
  38. /**
  39. * 初始化
  40. * @param inflater LayoutInflater
  41. * @param container ViewGroup?
  42. * @param savedInstanceState Bundle?
  43. * @return View?
  44. */
  45. override fun onCreateView(
  46. inflater: LayoutInflater,
  47. container: ViewGroup?,
  48. savedInstanceState: Bundle?
  49. ): View? {
  50. mainView = inflater.inflate(R.layout.frag_case_upload_main, null)
  51. self = this
  52. // todo: 2023/6/15 挂载控件
  53. joinControls()
  54. // todo: 2023/6/15 显示
  55. if (this.joinCase != null) {
  56. crSetJoinCase(this.joinCase!!)
  57. }
  58. return mainView
  59. }
  60. /**
  61. * 覆写挂载控件
  62. */
  63. override fun joinControls() {
  64. mainView?.let {
  65. lblCaseName = it.findViewById(R.id.case_name)
  66. lblCaseImageCount = it.findViewById(R.id.case_image_count)
  67. lblCaseCreateDate = it.findViewById(R.id.case_create_date)
  68. lblCaseMediaName = it.findViewById(R.id.case_media_name)
  69. lblCaseMediaSize = it.findViewById(R.id.case_media_size)
  70. btnEdit = it.findViewById(R.id.case_btn_edit)
  71. btnEdit?.setOnClickListener(this)
  72. btnPhoto = it.findViewById(R.id.case_btn_photo)
  73. btnPhoto?.setOnClickListener(this)
  74. btnUpload = it.findViewById(R.id.case_btn_upload)
  75. btnUpload?.setOnClickListener(this)
  76. imageBrowser = it.findViewById(R.id.case_image_browser)
  77. imageBrowser?.crSetListener(imageBrowserListener)
  78. }
  79. }
  80. // todo: 2023/6/17 滑动监听
  81. private val imageBrowserListener = object :CrImageBrowserWidget.iChangeListener{
  82. // todo: 2023/6/17 滑动监听
  83. override fun onChange(file: CrImageBrowserWidget.ImageFileModel?) {
  84. lblCaseMediaName?.text = file?.fileName
  85. lblCaseMediaSize?.text = file?.fileSizeDescription
  86. }
  87. }
  88. /**
  89. * 覆写点击事件
  90. * @param view View
  91. */
  92. override fun onClick(view: View?) {
  93. when (view?.id) {
  94. // todo: 2023/6/15 编辑照片
  95. R.id.case_btn_edit -> {
  96. }
  97. // todo: 2023/6/15 打开相册
  98. R.id.case_btn_photo -> {
  99. Intent(Intent.ACTION_PICK).apply {
  100. type = "image/*"
  101. startActivityForResult(this, OPEN_ALBUM)
  102. }
  103. }
  104. // todo: 2023/6/15 上传
  105. R.id.case_btn_upload -> {
  106. }
  107. }
  108. }
  109. /**
  110. * 设置关联的案件点
  111. * @param joinCase CaseModel 案件点
  112. */
  113. fun crSetJoinCase(joinCase: CaseModel) {
  114. this.joinCase = joinCase
  115. // todo: 2023/6/15 设置显示内容
  116. lblCaseName?.text = this.joinCase?.name
  117. lblCaseImageCount?.text = String.format("取证照片[%s]张", this.joinCase?.imgArray?.size)
  118. lblCaseCreateDate?.text = this.joinCase?.date
  119. lblCaseMediaName?.text = ""
  120. lblCaseMediaSize?.text = ""
  121. }
  122. /**
  123. * 覆盖外部调用返回接受并处理
  124. * @param requestCode Int
  125. * @param resultCode Int
  126. * @param data Intent?
  127. */
  128. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  129. super.onActivityResult(requestCode, resultCode, data)
  130. if (requestCode == OPEN_ALBUM && resultCode == RESULT_OK) {
  131. var imagePath: String? = null
  132. imagePath = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  133. CrPictureManager.handleImageAfterKitKat(context!!, data!!)
  134. } else {
  135. CrPictureManager.handleImageBeforeKitKat(context!!, data!!)
  136. }
  137. if (imagePath != null) {
  138. // todo: 2023/6/16 转存文件
  139. var newFilePath =
  140. String.format("%sUAV%s.jpg", CrUtil.IMAGE_PATH, CrUnitManager.toSystemDate())
  141. var res = CrFileManager.copyFile(imagePath, newFilePath)
  142. if (res) {
  143. imageBrowser?.crAppendImage(newFilePath)
  144. } else {
  145. showError("文件转存失败!")
  146. }
  147. } else {
  148. showError("选择文件异常!")
  149. }
  150. }
  151. }
  152. }