refactor(dialog): 重构 CommonDialog 为链式调用 API,内置 title/content,全量替换旧调用方
This commit is contained in:
@@ -15,7 +15,6 @@ import androidx.core.view.forEach
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.base.BaseApp
|
||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||
import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||
@@ -169,21 +168,13 @@ class DeviceConfigActivity : BaseActivity() {
|
||||
val detector = MultiClickDetector(targetCount = 10, intervalMs = 800)
|
||||
|
||||
private fun defaultDataSettingDialog() {
|
||||
val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater)
|
||||
remindBinding.tvDialogTitle.text = "温馨提示"
|
||||
remindBinding.tvDialogContent.text =
|
||||
"您好,使用默认配置作为您的调料数据,则已有配置将被清除,确认吗?"
|
||||
CommonDialog(this).apply {
|
||||
messageView = remindBinding.root
|
||||
leftText = "取消"
|
||||
rightText = "确认"
|
||||
onLeftClick = { dismiss() }
|
||||
onRightClick = {
|
||||
dismiss()
|
||||
resetList()
|
||||
}
|
||||
onDismiss = { hideStatusBar() }
|
||||
}.show()
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setContent("您好,使用默认配置作为您的调料数据,则已有配置将被清除,确认吗?")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("确认") { resetList() }
|
||||
.setOnDismissCallback { hideStatusBar() }
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun resetList() {
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.shuwei.dish.match.adapter.DishPartAdapter
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.base.BaseApp
|
||||
import com.shuwei.dish.match.databinding.ActivityDishSamplingBinding
|
||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||
import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.FoodSearchDialog
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
@@ -130,23 +129,18 @@ class DishSamplingActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun saveDataRemindDialog() {
|
||||
val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater)
|
||||
remindBinding.tvDialogTitle.text = "温馨提示"
|
||||
remindBinding.tvDialogContent.text = "您好,当前页面存在未保存的数据,确认返回吗?"
|
||||
CommonDialog(this).apply {
|
||||
messageView = remindBinding.root
|
||||
leftText = "取消"
|
||||
rightText = "确认"
|
||||
onLeftClick = { dismiss() }
|
||||
onRightClick = {
|
||||
dismiss()
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setContent("您好,当前页面存在未保存的数据,确认返回吗?")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("确认") {
|
||||
if (pageFrom == HOME) {
|
||||
startActivity<SamplingListActivity>()
|
||||
}
|
||||
finish()
|
||||
}
|
||||
onDismiss = { hideStatusBar() }
|
||||
}.show()
|
||||
.setOnDismissCallback { hideStatusBar() }
|
||||
.show()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.shuwei.dish.match.R
|
||||
import com.shuwei.dish.match.adapter.Scale18GridAdapter
|
||||
import com.shuwei.dish.match.adapter.Scale22GridAdapter
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.databinding.ActivityMasterScaleBinding
|
||||
import com.shuwei.dish.match.databinding.ListTypeScale1Binding
|
||||
import com.shuwei.dish.match.databinding.ListTypeScale18Binding
|
||||
@@ -402,14 +403,14 @@ class MasterScaleActivity : BaseActivity() {
|
||||
* @param address 目标秤地址
|
||||
*/
|
||||
private fun showTareDialog(deviceId: String, ip: String, address: Int) {
|
||||
android.app.AlertDialog.Builder(this)
|
||||
CommonDialog(this)
|
||||
.setTitle("清零确认")
|
||||
.setMessage("设备 IP:${ip.ifEmpty { "未知" }}\n确认对秤 $address 执行清零操作?")
|
||||
.setPositiveButton("确认") { _, _ ->
|
||||
.setContent("设备 IP:${ip.ifEmpty { "未知" }}\n确认对秤 $address 执行清零操作?")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("确认") {
|
||||
val sent = ScaleServiceManager.sendTare(deviceId, address)
|
||||
if (!sent) toast("设备未连接,清零失败")
|
||||
}
|
||||
.setNegativeButton("取消", null)
|
||||
.show()
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.shuwei.dish.match.R
|
||||
import com.shuwei.dish.match.adapter.DishPartAdapter
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.databinding.ActivityPrepareCookBinding
|
||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.dialog.FoodRecognizeDialog
|
||||
import com.shuwei.dish.match.dialog.FoodSearchDialog
|
||||
@@ -239,18 +238,12 @@ class PrepareCookActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun showRemindDialog() {
|
||||
val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater)
|
||||
CommonDialog(this).apply {
|
||||
messageView = remindBinding.root
|
||||
leftText = "返回调整"
|
||||
rightText = "确认无误"
|
||||
onLeftClick = { dismiss() }
|
||||
onRightClick = {
|
||||
openSubmitPage()
|
||||
dismiss()
|
||||
}
|
||||
onDismiss = { hideStatusBar() }
|
||||
}.show()
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setNegativeButton("返回调整")
|
||||
.setPositiveButton("确认无误") { openSubmitPage() }
|
||||
.setOnDismissCallback { hideStatusBar() }
|
||||
.show()
|
||||
}
|
||||
|
||||
|
||||
@@ -431,20 +424,13 @@ class PrepareCookActivity : BaseActivity() {
|
||||
* 未保存数据提醒
|
||||
*/
|
||||
private fun saveDataRemindDialog() {
|
||||
val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater)
|
||||
remindBinding.tvDialogTitle.text = "温馨提示"
|
||||
remindBinding.tvDialogContent.text = "您好,当前页面存在尚未保存的数据,确认返回上页吗?"
|
||||
CommonDialog(this).apply {
|
||||
messageView = remindBinding.root
|
||||
leftText = "取消"
|
||||
rightText = "确认"
|
||||
onLeftClick = { dismiss() }
|
||||
onRightClick = {
|
||||
dismiss()
|
||||
finish()
|
||||
}
|
||||
onDismiss = { hideStatusBar() }
|
||||
}.show()
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setContent("您好,当前页面存在尚未保存的数据,确认返回吗?")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("确认") { finish() }
|
||||
.setOnDismissCallback { hideStatusBar() }
|
||||
.show()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.shuwei.dish.match.base.BaseApp
|
||||
import com.shuwei.dish.match.databinding.ActivitySamplingBinding
|
||||
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
|
||||
import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.DialogTool
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||
import com.shuwei.dish.match.entity.FoodRecord
|
||||
import com.shuwei.dish.match.utils.DateTimeUtil
|
||||
@@ -378,16 +378,12 @@ class SamplingListActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun showDeviceConfigDialog() {
|
||||
DialogTool.load(
|
||||
context = this,
|
||||
title = "温馨提示",
|
||||
content = "请先在设备配置页面进行调料设置",
|
||||
leftBtnText = "取消",
|
||||
rightBtnText = "去设置",
|
||||
leftBtnClick = {},
|
||||
rightBtnClick = {
|
||||
startActivity<SettingActivity>()
|
||||
})
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setContent("请先在设备配置页面进行调料设置")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("去设置") { startActivity<SettingActivity>() }
|
||||
.show()
|
||||
}
|
||||
|
||||
private var isVisible = false
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.base.BaseApp
|
||||
import com.shuwei.dish.match.databinding.ActivitySelectDishBinding
|
||||
import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.DialogTool
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||
import com.shuwei.dish.match.entity.FoodRecord
|
||||
import com.shuwei.dish.match.ui.fragment.DishListFragment
|
||||
@@ -95,17 +95,12 @@ class SelectDishActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun showDeviceConfigDialog() {
|
||||
DialogTool.load(
|
||||
context = this,
|
||||
title = "温馨提示",
|
||||
content = "请先在设备配置页面进行调料设置",
|
||||
leftBtnText = "取消",
|
||||
rightBtnText = "去设置",
|
||||
leftBtnClick = {},
|
||||
rightBtnClick = {
|
||||
startActivity<SettingActivity>()
|
||||
}
|
||||
)
|
||||
CommonDialog(this)
|
||||
.setTitle("温馨提示")
|
||||
.setContent("请先在设备配置页面进行调料设置")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("去设置") { startActivity<SettingActivity>() }
|
||||
.show()
|
||||
}
|
||||
|
||||
fun addViewListener() {
|
||||
|
||||
@@ -2,11 +2,8 @@ package com.shuwei.dish.match.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.activity.addCallback
|
||||
import com.google.android.flexbox.AlignItems
|
||||
import com.google.android.flexbox.FlexDirection
|
||||
@@ -14,10 +11,11 @@ import com.google.android.flexbox.FlexWrap
|
||||
import com.google.android.flexbox.FlexboxLayoutManager
|
||||
import com.shuwei.dish.match.adapter.Scale18GridAdapter
|
||||
import com.shuwei.dish.match.adapter.Scale22GridAdapter
|
||||
import com.shuwei.dish.match.adapter.ScaleRowAdapter
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.base.GlobalData
|
||||
import com.shuwei.dish.match.databinding.ActivitySlaveBinding
|
||||
import com.shuwei.dish.match.databinding.ListItemScaleRowBinding
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.scale.ScaleData
|
||||
import com.shuwei.dish.match.scale.ScaleDeviceConfig
|
||||
import com.shuwei.dish.match.scale.ScaleServiceManager
|
||||
@@ -34,11 +32,8 @@ class SlaveActivity : BaseActivity() {
|
||||
|
||||
private lateinit var binding: ActivitySlaveBinding
|
||||
|
||||
/** 本机秤数据列表:address → (weight, state),线性列表模式使用 */
|
||||
private data class ScaleItem(val address: Int, val weight: Double, val state: Int)
|
||||
|
||||
private val scaleList = mutableListOf<ScaleItem>()
|
||||
private val linearAdapter = ScaleAdapter(scaleList)
|
||||
/** 本机秤数据列表:线性列表模式使用 */
|
||||
private val linearAdapter = ScaleRowAdapter()
|
||||
|
||||
/** 22个秤网格 adapter */
|
||||
private var scale22Adapter: Scale22GridAdapter? = null
|
||||
@@ -85,7 +80,9 @@ class SlaveActivity : BaseActivity() {
|
||||
flexWrap = FlexWrap.WRAP
|
||||
alignItems = AlignItems.FLEX_START
|
||||
}
|
||||
scale22Adapter = Scale22GridAdapter(largeSize, smallSize)
|
||||
scale22Adapter = Scale22GridAdapter(largeSize, smallSize).also {
|
||||
it.onItemClick = { scale -> showTareDialog(scale.address) }
|
||||
}
|
||||
binding.rvScaleList.adapter = scale22Adapter
|
||||
}
|
||||
ScaleDeviceConfig.DEVICE_ID_18 -> {
|
||||
@@ -94,11 +91,17 @@ class SlaveActivity : BaseActivity() {
|
||||
override fun getSpanSize(position: Int) = 1
|
||||
}
|
||||
}
|
||||
scale18Adapter = Scale18GridAdapter()
|
||||
scale18Adapter = Scale18GridAdapter().also {
|
||||
it.onItemClick = { scale -> showTareDialog(scale.address) }
|
||||
}
|
||||
binding.rvScaleList.adapter = scale18Adapter
|
||||
}
|
||||
else -> {
|
||||
binding.rvScaleList.layoutManager = LinearLayoutManager(this)
|
||||
linearAdapter.setOnItemClickListener { _, _, position ->
|
||||
val item = linearAdapter.items.getOrNull(position) ?: return@setOnItemClickListener
|
||||
showTareDialog(item.address)
|
||||
}
|
||||
binding.rvScaleList.adapter = linearAdapter
|
||||
}
|
||||
}
|
||||
@@ -144,16 +147,16 @@ class SlaveActivity : BaseActivity() {
|
||||
scale18Adapter!!.updateByAddress(existing)
|
||||
}
|
||||
else -> {
|
||||
val idx = scaleList.indexOfFirst { it.address == address }
|
||||
val item = ScaleItem(address, weight, state)
|
||||
val item = ScaleRowAdapter.ScaleItem(address, weight, state)
|
||||
val list = linearAdapter.items.toMutableList()
|
||||
val idx = list.indexOfFirst { it.address == address }
|
||||
if (idx >= 0) {
|
||||
scaleList[idx] = item
|
||||
linearAdapter.notifyItemChanged(idx)
|
||||
list[idx] = item
|
||||
} else {
|
||||
scaleList.add(item)
|
||||
scaleList.sortBy { it.address }
|
||||
linearAdapter.notifyDataSetChanged()
|
||||
list.add(item)
|
||||
list.sortBy { it.address }
|
||||
}
|
||||
linearAdapter.submitList(list)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -182,6 +185,21 @@ class SlaveActivity : BaseActivity() {
|
||||
const val TAG = "SlaveActivity"
|
||||
}
|
||||
|
||||
/**
|
||||
* 弹出清零确认对话框
|
||||
* @param address 目标秤地址
|
||||
*/
|
||||
private fun showTareDialog(address: Int) {
|
||||
CommonDialog(this)
|
||||
.setTitle("清零确认")
|
||||
.setContent("确认对秤 $address 执行清零操作?")
|
||||
.setNegativeButton("取消")
|
||||
.setPositiveButton("确认") {
|
||||
WeightUtil.tareTwo(address)
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本机局域网 IP,委托给 NetworkUtil 统一处理版本兼容
|
||||
*/
|
||||
@@ -189,30 +207,5 @@ class SlaveActivity : BaseActivity() {
|
||||
return NetworkUtil.getLocalIpAddress(this).ifEmpty { "未知" }
|
||||
}
|
||||
|
||||
private class ScaleAdapter(private val data: List<ScaleItem>) :
|
||||
RecyclerView.Adapter<ScaleAdapter.VH>() {
|
||||
|
||||
inner class VH(val binding: ListItemScaleRowBinding) :
|
||||
RecyclerView.ViewHolder(binding.root)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = VH(
|
||||
ListItemScaleRowBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
)
|
||||
|
||||
override fun getItemCount() = data.size
|
||||
|
||||
override fun onBindViewHolder(holder: VH, position: Int) {
|
||||
val item = data[position]
|
||||
val stateStr = when (item.state) {
|
||||
WeightUtil.STATE_STABLE -> "稳定"
|
||||
WeightUtil.STATE_UNSTABLE -> "不稳定"
|
||||
WeightUtil.STATE_OVER_WEIGHT -> "超量"
|
||||
else -> "${item.state}"
|
||||
}
|
||||
holder.binding.tvScaleLabel.text = "秤 ${item.address}"
|
||||
holder.binding.tvWeight.text = "${item.weight} g"
|
||||
holder.binding.tvState.text = stateStr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.shuwei.dish.match.base.BaseApp
|
||||
import com.shuwei.dish.match.base.BaseFragment
|
||||
import com.shuwei.dish.match.databinding.FragmentDeviceConfigBinding
|
||||
import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.CommonDialog
|
||||
import com.shuwei.dish.match.dialog.SeasoningSearchDialog
|
||||
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||
import com.shuwei.dish.match.entity.ResetReasoningRecord
|
||||
@@ -39,7 +38,6 @@ import com.shuwei.dish.match.utils.ext.toast
|
||||
import com.shuwei.dish.match.utils.ext.visible
|
||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||
import com.shuwei.dish.match.ui.SamplingListActivity
|
||||
import com.shuwei.dish.match.ui.SelectDishActivity
|
||||
import com.shuwei.dish.match.utils.SpTool
|
||||
|
||||
Reference in New Issue
Block a user