|
|
@@ -1,6 +1,5 @@
|
|
|
package com.grkj.iscs.features.main.dialog
|
|
|
|
|
|
-import android.content.Context
|
|
|
import android.graphics.Color
|
|
|
import android.view.View
|
|
|
import android.widget.LinearLayout
|
|
|
@@ -10,46 +9,70 @@ import com.drake.brv.BindingAdapter
|
|
|
import com.drake.brv.annotaion.ItemOrientation
|
|
|
import com.drake.brv.listener.DefaultItemTouchCallback
|
|
|
import com.drake.brv.utils.linear
|
|
|
-import com.drake.brv.utils.models
|
|
|
import com.drake.brv.utils.setup
|
|
|
import com.google.android.flexbox.FlexboxLayoutManager
|
|
|
-import com.google.gson.Gson
|
|
|
-import com.google.gson.reflect.TypeToken
|
|
|
import com.grkj.data.data.MMKVConstants
|
|
|
+import com.grkj.data.data.MainDomainData
|
|
|
import com.grkj.data.enums.RoleFunctionalPermissionsEnum
|
|
|
import com.grkj.iscs.R
|
|
|
import com.grkj.iscs.databinding.DialogQuickEntranceConfigBinding
|
|
|
import com.grkj.iscs.databinding.ItemQuickEntranceConfigBinding
|
|
|
-import com.grkj.iscs.features.main.entity.MenuItemEntity
|
|
|
import com.grkj.iscs.features.main.entity.QuickEntranceMenuItemEntity
|
|
|
+import com.grkj.ui_base.utils.extension.tip
|
|
|
import com.kongzue.dialogx.dialogs.FullScreenDialog
|
|
|
+import com.kongzue.dialogx.dialogs.PopTip
|
|
|
import com.kongzue.dialogx.interfaces.OnBindView
|
|
|
import com.kongzue.dialogx.util.views.ActivityScreenShotImageView
|
|
|
import com.sik.sikcore.extension.getMMKVData
|
|
|
+import com.sik.sikcore.extension.saveMMKVData
|
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
|
|
|
|
/**
|
|
|
* 快捷入口配置弹窗
|
|
|
*/
|
|
|
-class QuickEntranceConfigDialog(private val context: Context, private val saved: () -> Unit) :
|
|
|
+class QuickEntranceConfigDialog(private val saved: () -> Unit) :
|
|
|
OnBindView<FullScreenDialog>(R.layout.dialog_quick_entrance_config) {
|
|
|
- private val selectedQuickEntranceConfig = mutableListOf<QuickEntranceMenuItemEntity>()
|
|
|
+ private var selectedQuickEntranceConfig = mutableListOf<QuickEntranceMenuItemEntity>()
|
|
|
+ private val allQuickEntranceConfig: MutableList<QuickEntranceMenuItemEntity> =
|
|
|
+ RoleFunctionalPermissionsEnum.values().filter { it.level != 0 }.mapIndexed { index, value ->
|
|
|
+ QuickEntranceMenuItemEntity(
|
|
|
+ index,
|
|
|
+ QuickEntranceMenuItemEntity.getMenuIconId(value),
|
|
|
+ value.description,
|
|
|
+ value,
|
|
|
+ QuickEntranceMenuItemEntity.getNavGraphId(value),
|
|
|
+ QuickEntranceMenuItemEntity.getDestId(value)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ .filter { MainDomainData.permissions.contains(it.permission.functionalPermission) && it.navGraph != 0 }
|
|
|
+ .toMutableList()
|
|
|
private val quickEntranceList: MutableList<QuickEntranceMenuItemEntity>
|
|
|
get() {
|
|
|
val quickEntryConfigJson = MMKVConstants.KEY_QUICK_ENTRY_CONFIG.getMMKVData("")
|
|
|
- return if (quickEntryConfigJson.isEmpty()) {
|
|
|
+ val permissions = quickEntryConfigJson.split(",").filter { it.isNotBlank() }
|
|
|
+ .mapNotNull { runCatching { RoleFunctionalPermissionsEnum.valueOf(it) }.getOrNull() }
|
|
|
+ return if (permissions.isEmpty()) {
|
|
|
mutableListOf<QuickEntranceMenuItemEntity>(
|
|
|
QuickEntranceMenuItemEntity(
|
|
|
0,
|
|
|
R.mipmap.icon_job_manage_create_job,
|
|
|
RoleFunctionalPermissionsEnum.CREATE_JOB.description,
|
|
|
- RoleFunctionalPermissionsEnum.CREATE_JOB.functionalPermission
|
|
|
+ RoleFunctionalPermissionsEnum.CREATE_JOB,
|
|
|
+ QuickEntranceMenuItemEntity.getNavGraphId(RoleFunctionalPermissionsEnum.CREATE_JOB),
|
|
|
+ QuickEntranceMenuItemEntity.getDestId(RoleFunctionalPermissionsEnum.CREATE_JOB)
|
|
|
)
|
|
|
)
|
|
|
} else {
|
|
|
- Gson().fromJson<MutableList<QuickEntranceMenuItemEntity>>(
|
|
|
- quickEntryConfigJson, object : TypeToken<MutableList<QuickEntranceMenuItemEntity>>() {}.type
|
|
|
- )
|
|
|
+ permissions.mapIndexed { index, value ->
|
|
|
+ QuickEntranceMenuItemEntity(
|
|
|
+ index,
|
|
|
+ QuickEntranceMenuItemEntity.getMenuIconId(value),
|
|
|
+ value.description,
|
|
|
+ value,
|
|
|
+ QuickEntranceMenuItemEntity.getNavGraphId(value),
|
|
|
+ QuickEntranceMenuItemEntity.getDestId(value)
|
|
|
+ )
|
|
|
+ }.toMutableList()
|
|
|
}
|
|
|
}
|
|
|
private lateinit var binding: DialogQuickEntranceConfigBinding
|
|
|
@@ -57,10 +80,13 @@ class QuickEntranceConfigDialog(private val context: Context, private val saved:
|
|
|
dialog.setMaskColor(Color.parseColor("#4D000000"))
|
|
|
binding = DialogQuickEntranceConfigBinding.bind(contentView)
|
|
|
ActivityScreenShotImageView.hideContentView = true
|
|
|
+ selectedQuickEntranceConfig = quickEntranceList.onEach {
|
|
|
+ it.itemOrientationDrag = ItemOrientation.HORIZONTAL
|
|
|
+ }
|
|
|
binding.selectedRvList.apply {
|
|
|
linear(orientation = LinearLayout.HORIZONTAL)
|
|
|
}.setup {
|
|
|
- addType<MenuItemEntity>(R.layout.item_quick_entrance_config)
|
|
|
+ addType<QuickEntranceMenuItemEntity>(R.layout.item_quick_entrance_config)
|
|
|
itemTouchHelper = ItemTouchHelper(object : DefaultItemTouchCallback() {
|
|
|
/**
|
|
|
* 当拖拽动作完成且松开手指时触发
|
|
|
@@ -75,16 +101,18 @@ class QuickEntranceConfigDialog(private val context: Context, private val saved:
|
|
|
onBind {
|
|
|
onQuickEntranceBinding(this, false)
|
|
|
}
|
|
|
- }
|
|
|
+ }.models = selectedQuickEntranceConfig
|
|
|
binding.allRvList.apply {
|
|
|
layoutManager = FlexboxLayoutManager(context)
|
|
|
}.setup {
|
|
|
- addType<MenuItemEntity>(R.layout.item_quick_entrance_config)
|
|
|
+ addType<QuickEntranceMenuItemEntity>(R.layout.item_quick_entrance_config)
|
|
|
onBind {
|
|
|
onQuickEntranceBinding(this, true)
|
|
|
}
|
|
|
- }
|
|
|
+ }.models = allQuickEntranceConfig
|
|
|
binding.save.setDebouncedClickListener {
|
|
|
+ MMKVConstants.KEY_QUICK_ENTRY_CONFIG.saveMMKVData(selectedQuickEntranceConfig.map { it.permission.name }
|
|
|
+ .joinToString(","))
|
|
|
saved()
|
|
|
dialog.dismiss()
|
|
|
}
|
|
|
@@ -105,6 +133,10 @@ class QuickEntranceConfigDialog(private val context: Context, private val saved:
|
|
|
itemBinding.remove.isVisible = !showAdd
|
|
|
itemBinding.root.setDebouncedClickListener {
|
|
|
if (showAdd) {
|
|
|
+ if (selectedQuickEntranceConfig.size == 5) {
|
|
|
+ PopTip.build().tip(R.string.quick_entrance_most_set_tip)
|
|
|
+ return@setDebouncedClickListener
|
|
|
+ }
|
|
|
item.itemOrientationDrag = ItemOrientation.HORIZONTAL
|
|
|
selectedQuickEntranceConfig.add(item)
|
|
|
} else {
|
|
|
@@ -122,8 +154,8 @@ class QuickEntranceConfigDialog(private val context: Context, private val saved:
|
|
|
* 显示
|
|
|
*/
|
|
|
@JvmStatic
|
|
|
- fun show(context: Context, saved: () -> Unit) {
|
|
|
- FullScreenDialog.build().setCustomView(QuickEntranceConfigDialog(context, saved)).show()
|
|
|
+ fun show(saved: () -> Unit) {
|
|
|
+ FullScreenDialog.build().setCustomView(QuickEntranceConfigDialog(saved)).show()
|
|
|
}
|
|
|
}
|
|
|
}
|