From 3dea103e2715e07a24aa1da1762eb541c76872d5 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Sun, 28 Sep 2025 22:54:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zmkg/coaloperation/dialog/BaseDialog.kt | 15 +++ .../dialog/CustomCenterDialog.kt | 105 ++++++++++++++++++ .../ui/report/fragment/ReportFragment.kt | 24 ++-- .../utils/permission/StorageUtils.kt | 24 ++-- .../app/src/main/res/layout/dialog_common.xml | 70 ++++++++++++ .../src/main/res/layout/fragment_report.xml | 7 +- .../app/src/main/res/values/style.xml | 6 +- 7 files changed, 224 insertions(+), 27 deletions(-) create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/BaseDialog.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/CustomCenterDialog.kt create mode 100644 coalMiningApp/app/src/main/res/layout/dialog_common.xml diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/BaseDialog.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/BaseDialog.kt new file mode 100644 index 0000000..090bfcd --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/BaseDialog.kt @@ -0,0 +1,15 @@ +package com.zmkg.coaloperation.dialog + +import android.app.Dialog +import android.content.Context +import androidx.annotation.StyleRes +import com.zmkg.coaloperation.R + +open class BaseDialog(context: Context, @StyleRes dialogTheme: Int) : + Dialog(context, dialogTheme) { + constructor(context: Context) : this(context, R.style.DialogTheme) + + override fun show() { + super.show() + } +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/CustomCenterDialog.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/CustomCenterDialog.kt new file mode 100644 index 0000000..27638b1 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/dialog/CustomCenterDialog.kt @@ -0,0 +1,105 @@ +package com.zmkg.coaloperation.dialog + +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.text.SpannableStringBuilder +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.WindowManager +import android.widget.TextView +import androidx.fragment.app.FragmentActivity +import com.allen.library.shape.ShapeButton +import com.zmkg.coaloperation.databinding.DialogCommonBinding +import com.zmkg.coaloperation.utils.dp + +class CustomCenterDialog( + var activity: FragmentActivity, + var defaultWidth: Int = 300.dp +) : BaseDialog(activity) { + + private lateinit var binding: DialogCommonBinding + + var dialogCancelable = false + var dialogCanceledOnTouchOutside = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DialogCommonBinding.inflate(LayoutInflater.from(activity)) + setContentView(binding.root) + + setCancelable(dialogCancelable) + setCanceledOnTouchOutside(dialogCanceledOnTouchOutside) + window?.apply { + setLayout(defaultWidth, WindowManager.LayoutParams.WRAP_CONTENT) + setBackgroundDrawable(ColorDrawable()) + setGravity(Gravity.CENTER) + } + binding.btnCancel.setOnClickListener { onLeftClick?.invoke(this) } + binding.btnConfirm.setOnClickListener { onRightClick?.invoke(this) } + } + + private var dialogTitle: String = "" + fun setDialogTitle(title: String) { + this.dialogTitle = title + } + + private var dialogContent: String = "" + fun setDialogContent(content: String) { + this.dialogContent = content + } + + private var spannableBuilder: SpannableStringBuilder? = null + fun setDialogContent(spannableBuilder: SpannableStringBuilder) { + this.spannableBuilder = spannableBuilder + } + + private var dialogLeftBtnText = "" + private var onLeftClick: ((CustomCenterDialog) -> Unit)? = null + fun setCancelButton( + text: String, + onClick: (CustomCenterDialog) -> Unit + ) { + this.dialogLeftBtnText = text + this.onLeftClick = onClick + } + + private var dialogRightBtnText = "" + private var onRightClick: ((CustomCenterDialog) -> Unit)? = null + fun setConfirmButton( + text: String, + onClick: (CustomCenterDialog) -> Unit + ) { + this.dialogRightBtnText = text + this.onRightClick = onClick + } + + private var showSingleButton = false + fun setShowSingleButton(show: Boolean) { + this.showSingleButton = show + } + + + var bgLayoutSetting: ((View) -> Unit)? = null + var titleSetting: ((TextView) -> Unit)? = null + var contentSetting: ((TextView) -> Unit)? = null + var leftBtnSetting: ((ShapeButton) -> Unit)? = null + var rightBtnSetting: ((ShapeButton) -> Unit)? = null + + override fun show() { + super.show() + + binding.tvDialogTitle.apply { + text = dialogTitle + } + binding.tvDialogContent.apply { + text = dialogContent + } + + bgLayoutSetting?.invoke(binding.root) + titleSetting?.invoke(binding.tvDialogTitle) + contentSetting?.invoke(binding.tvDialogContent) + leftBtnSetting?.invoke(binding.btnCancel) + rightBtnSetting?.invoke(binding.btnConfirm) + } +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/report/fragment/ReportFragment.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/report/fragment/ReportFragment.kt index fcb4142..705564f 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/report/fragment/ReportFragment.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/report/fragment/ReportFragment.kt @@ -19,11 +19,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.luck.picture.lib.utils.SandboxTransformUtils import com.zmkg.coaloperation.utils.pictureSelector.ImageFileCompressEngine import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.base.BaseActivity import com.zmkg.coaloperation.base.BaseVMBFragment import com.zmkg.coaloperation.bean.ImageBean import com.zmkg.coaloperation.databinding.FragmentReportBinding import com.zmkg.coaloperation.ui.report.adapter.ImageAdapter import com.zmkg.coaloperation.ui.report.viewmodel.ReportViewModel +import com.zmkg.coaloperation.utils.permission.StorageUtils import com.zmkg.coaloperation.utils.pictureSelector.GlideEngine import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch @@ -121,18 +123,20 @@ class ReportFragment : val imageBean: ImageBean = adapter.getItem(position) as ImageBean imageBean?.let { it -> if (it.isAddButton) { - initPictureSelectorModel() - .forResult(object : OnResultCallbackListener { - override fun onResult(result: ArrayList?) { - result?.let { list -> - var resultList = localMediaToImageList(list) - imageAdapter.addData(resultList) - setImageNum(imageAdapter.getImageSize()) + StorageUtils.requestPermission(context as BaseActivity) { + initPictureSelectorModel() + .forResult(object : OnResultCallbackListener { + override fun onResult(result: ArrayList?) { + result?.let { list -> + var resultList = localMediaToImageList(list) + imageAdapter.addData(resultList) + setImageNum(imageAdapter.getImageSize()) + } } - } - override fun onCancel() {} - }) + override fun onCancel() {} + }) + } } else { // startFullScreenImageActivity( // it.isFilePath, diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/permission/StorageUtils.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/permission/StorageUtils.kt index 1734a9a..846a3de 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/permission/StorageUtils.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/permission/StorageUtils.kt @@ -11,21 +11,21 @@ object StorageUtils { fun requestPermission(activity: BaseActivity, callback: () -> Unit) { activity.requestSinglePermissionResult(Manifest.permission.CAMERA) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - if (Environment.isExternalStorageManager()) { - callback() - } else { - val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) -// activity.startActivityForResult(intent, MANAGE_REQUEST_CODE) - activity.launchActivityResult(intent) { - callback() - } - } - } else { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { +// if (Environment.isExternalStorageManager()) { +// callback() +// } else { +// val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) +//// activity.startActivityForResult(intent, MANAGE_REQUEST_CODE) +// activity.launchActivityResult(intent) { +// callback() +// } +// } +// } else { activity.requestSinglePermissionResult(Manifest.permission.WRITE_EXTERNAL_STORAGE) { callback() } - } +// } } } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/dialog_common.xml b/coalMiningApp/app/src/main/res/layout/dialog_common.xml new file mode 100644 index 0000000..fbf2e1f --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/dialog_common.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/fragment_report.xml b/coalMiningApp/app/src/main/res/layout/fragment_report.xml index 9a87115..bb5eb71 100644 --- a/coalMiningApp/app/src/main/res/layout/fragment_report.xml +++ b/coalMiningApp/app/src/main/res/layout/fragment_report.xml @@ -28,14 +28,13 @@ android:layout_marginBottom="70dp"> - + android:background="@drawable/bg_stroke_gray"> - + diff --git a/coalMiningApp/app/src/main/res/values/style.xml b/coalMiningApp/app/src/main/res/values/style.xml index 7b98ab4..0de52d5 100644 --- a/coalMiningApp/app/src/main/res/values/style.xml +++ b/coalMiningApp/app/src/main/res/values/style.xml @@ -38,5 +38,9 @@ 0.5 - + + + + + \ No newline at end of file