diff --git a/app/src/main/java/se/ajpanton/notificationsmaster/AppRulesFragment.kt b/app/src/main/java/se/ajpanton/notificationsmaster/AppRulesFragment.kt index b13d2a2..f55aac6 100644 --- a/app/src/main/java/se/ajpanton/notificationsmaster/AppRulesFragment.kt +++ b/app/src/main/java/se/ajpanton/notificationsmaster/AppRulesFragment.kt @@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import se.ajpanton.notificationsmaster.alerts.AlertConfigurationStore +import se.ajpanton.notificationsmaster.alerts.AlertAppSettings import se.ajpanton.notificationsmaster.alerts.AlertRule import se.ajpanton.notificationsmaster.alerts.AlertRuleEditor import se.ajpanton.notificationsmaster.databinding.FragmentAppRulesBinding @@ -28,6 +29,8 @@ class AppRulesFragment : Fragment(R.layout.fragment_app_rules) { store = AlertConfigurationStore(requireContext()) binding!!.rules.adapter = adapter binding!!.addRule.setOnClickListener { edit(null) } + binding!!.allowMultipleMatches.isChecked = store.load().appSettings.firstOrNull { it.packageName == packageName }?.allowMultipleMatches == true + binding!!.allowMultipleMatches.setOnCheckedChangeListener { _, enabled -> setAllowMultipleMatches(enabled) } ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0) { override fun onMove(recyclerView: RecyclerView, holder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { adapter.move(holder.bindingAdapterPosition, target.bindingAdapterPosition) @@ -64,6 +67,14 @@ class AppRulesFragment : Fragment(R.layout.fragment_app_rules) { store.save(AlertRuleEditor.reorderForApp(store.load(), packageName, adapter.items.map { it.id })) } + private fun setAllowMultipleMatches(enabled: Boolean) { + val configuration = store.load() + val old = configuration.appSettings.firstOrNull { it.packageName == packageName } + val setting = (old ?: AlertAppSettings(packageName)).copy(allowMultipleMatches = enabled) + store.save(configuration.copy(appSettings = configuration.appSettings.filterNot { it.packageName == packageName } + + if (enabled || setting.directAlertControl) listOf(setting) else emptyList())) + } + private class RuleAdapter(private val onClick: (AlertRule) -> Unit) : RecyclerView.Adapter() { var items = emptyList(); private set fun submit(rules: List) { items = rules; notifyDataSetChanged() } diff --git a/app/src/main/res/layout/fragment_app_rules.xml b/app/src/main/res/layout/fragment_app_rules.xml index 64fc864..9ffb2eb 100644 --- a/app/src/main/res/layout/fragment_app_rules.xml +++ b/app/src/main/res/layout/fragment_app_rules.xml @@ -18,6 +18,13 @@ android:text="Drag rules to set their priority. The first matching rule is used." android:textSize="12sp" /> + +