Clarify seen and checked app filtering
This commit is contained in:
@@ -70,7 +70,6 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
binding!!.appRuleToggle.isChecked = rule.mode == AppRuleMode.WHITELIST
|
||||
binding!!.onlySeenToggle.isChecked = rule.onlySeenApps
|
||||
binding!!.seenFirstToggle.isChecked = rule.seenAppsFirst
|
||||
binding!!.seenFirstToggle.isEnabled = !rule.onlySeenApps
|
||||
updateRuleLabels(rule)
|
||||
binding!!.appRuleToggle.setOnCheckedChangeListener { _, checked ->
|
||||
save { copy(mode = if (checked) AppRuleMode.WHITELIST else AppRuleMode.BLACKLIST) }
|
||||
@@ -87,7 +86,7 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
|
||||
private fun updateRuleLabels(rule: AppFilterSettings) {
|
||||
binding!!.appRuleToggle.text = modeLabel(rule.mode)
|
||||
binding!!.onlySeenToggle.text = "Show only seen apps"
|
||||
binding!!.onlySeenToggle.text = "Show only seen and checked apps"
|
||||
binding!!.seenFirstToggle.text = "Show seen apps first"
|
||||
}
|
||||
|
||||
@@ -121,7 +120,7 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
selected = info.packageName in rule.selectedPackages,
|
||||
)
|
||||
}
|
||||
val items = AppListOrdering.items(apps, rule.onlySeenApps, rule.seenAppsFirst)
|
||||
val items = AppListOrdering.items(apps, rule.onlySeenApps, rule.seenAppsFirst, rule.mode)
|
||||
activity?.runOnUiThread {
|
||||
if (binding === currentBinding && generation == appLoadGeneration) {
|
||||
appAdapter.submit(items)
|
||||
@@ -151,7 +150,11 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int = if (items[position] is AppListItem.App) APP else SEPARATOR
|
||||
override fun getItemViewType(position: Int): Int = when (items[position]) {
|
||||
is AppListItem.App -> APP
|
||||
is AppListItem.SectionTitle -> SECTION_TITLE
|
||||
AppListItem.Separator -> SEPARATOR
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = if (viewType == APP) {
|
||||
val row = LinearLayout(parent.context).apply {
|
||||
@@ -170,6 +173,15 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
row.addView(checkbox)
|
||||
row.addView(textColumn)
|
||||
AppHolder(row, checkbox, label, packageName)
|
||||
} else if (viewType == SECTION_TITLE) {
|
||||
SectionTitleHolder(TextView(parent.context).apply {
|
||||
layoutParams = RecyclerView.LayoutParams(
|
||||
RecyclerView.LayoutParams.MATCH_PARENT,
|
||||
RecyclerView.LayoutParams.WRAP_CONTENT,
|
||||
).apply { setMargins(0, dp(parent, 8), 0, dp(parent, 4)) }
|
||||
setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12f)
|
||||
setTypeface(typeface, android.graphics.Typeface.BOLD)
|
||||
})
|
||||
} else {
|
||||
val divider = View(parent.context).apply {
|
||||
layoutParams = RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, dp(parent, 1)).apply {
|
||||
@@ -197,6 +209,9 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (holder is SectionTitleHolder && item is AppListItem.SectionTitle) {
|
||||
holder.text.text = item.value
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = items.size
|
||||
@@ -210,9 +225,12 @@ class FilterAppsFragment : Fragment(R.layout.fragment_event_settings) {
|
||||
|
||||
private class SeparatorHolder(view: View) : RecyclerView.ViewHolder(view)
|
||||
|
||||
private class SectionTitleHolder(val text: TextView) : RecyclerView.ViewHolder(text)
|
||||
|
||||
private companion object {
|
||||
const val APP = 0
|
||||
const val SEPARATOR = 1
|
||||
const val SECTION_TITLE = 2
|
||||
fun dp(parent: ViewGroup, value: Int): Int = (value * parent.resources.displayMetrics.density).toInt()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user