mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
feat: Multiple custom list
This commit is contained in:
@@ -55,7 +55,7 @@ class PasskeysPrivilegedAppsPreferenceDialogFragmentCompat
|
||||
is PasskeysPrivilegedAppsViewModel.UiState.OnPrivilegedAppsToSelectRetrieved -> {
|
||||
mAdapter.apply {
|
||||
setItems(uiState.privilegedApps)
|
||||
selectedItem = uiState.selected.firstOrNull()
|
||||
selectedItems = uiState.selected.toMutableList()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,7 @@ class PasskeysPrivilegedAppsPreferenceDialogFragmentCompat
|
||||
|
||||
override fun onDialogClosed(positiveResult: Boolean) {
|
||||
if (positiveResult) {
|
||||
passkeysPrivilegedAppsViewModel.saveSelectedPrivilegedApp(mAdapter.selectedItem)
|
||||
passkeysPrivilegedAppsViewModel.saveSelectedPrivilegedApp(mAdapter.selectedItems)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ import com.kunzisoft.keepass.R
|
||||
class ListSelectionItemAdapter<T>()
|
||||
: RecyclerView.Adapter<ListSelectionItemAdapter.SelectionViewHolder>() {
|
||||
|
||||
private val itemList: MutableList<T> = ArrayList()
|
||||
var selectedItem: T? = null
|
||||
private val itemList: MutableList<T> = mutableListOf()
|
||||
var selectedItems: MutableList<T> = mutableListOf()
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
set(value) {
|
||||
field = value
|
||||
@@ -50,12 +50,15 @@ class ListSelectionItemAdapter<T>()
|
||||
val item = itemList[position]
|
||||
|
||||
holder.container.apply {
|
||||
isSelected = item == selectedItem
|
||||
isSelected = selectedItems.contains(item)
|
||||
}
|
||||
holder.textView.apply {
|
||||
text = item.toString()
|
||||
setOnClickListener {
|
||||
selectedItem = if (item == selectedItem) null else item
|
||||
if (selectedItems.contains(item))
|
||||
selectedItems.remove(item)
|
||||
else
|
||||
selectedItems.add(item)
|
||||
itemSelectedCallback?.onItemSelected(item)
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
@@ -41,11 +41,12 @@ class PasskeysPrivilegedAppsViewModel(application: Application): AndroidViewMode
|
||||
}
|
||||
}
|
||||
|
||||
fun saveSelectedPrivilegedApp(privilegedApp: AndroidPrivilegedApp?) {
|
||||
fun saveSelectedPrivilegedApp(privilegedApps: List<AndroidPrivilegedApp>) {
|
||||
viewModelScope.launch {
|
||||
privilegedApp?.let {
|
||||
saveCustomPrivilegedApps(getApplication(), listOf(privilegedApp))
|
||||
} ?: deletePrivilegedAppsFile(getApplication())
|
||||
if (privilegedApps.isNotEmpty())
|
||||
saveCustomPrivilegedApps(getApplication(), privilegedApps)
|
||||
else
|
||||
deletePrivilegedAppsFile(getApplication())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user