mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Fix database list change
This commit is contained in:
@@ -167,25 +167,21 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
|||||||
when (databaseFiles.databaseFileAction) {
|
when (databaseFiles.databaseFileAction) {
|
||||||
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
|
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
|
||||||
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
|
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
|
||||||
mAdapterDatabaseHistory?.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
DatabaseFilesViewModel.DatabaseFileAction.ADD -> {
|
DatabaseFilesViewModel.DatabaseFileAction.ADD -> {
|
||||||
databaseFiles.databaseFileToActivate?.let { databaseFileToAdd ->
|
databaseFiles.databaseFileToActivate?.let { databaseFileToAdd ->
|
||||||
// TODO notify unique element
|
mAdapterDatabaseHistory?.addDatabaseFileHistory(databaseFileToAdd)
|
||||||
mAdapterDatabaseHistory?.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
GroupActivity.launch(this@FileDatabaseSelectActivity)
|
GroupActivity.launch(this@FileDatabaseSelectActivity)
|
||||||
}
|
}
|
||||||
DatabaseFilesViewModel.DatabaseFileAction.UPDATE -> {
|
DatabaseFilesViewModel.DatabaseFileAction.UPDATE -> {
|
||||||
databaseFiles.databaseFileToActivate?.let { databaseFileToUpdate ->
|
databaseFiles.databaseFileToActivate?.let { databaseFileToUpdate ->
|
||||||
// TODO notify unique element
|
mAdapterDatabaseHistory?.updateDatabaseFileHistory(databaseFileToUpdate)
|
||||||
mAdapterDatabaseHistory?.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DatabaseFilesViewModel.DatabaseFileAction.DELETE -> {
|
DatabaseFilesViewModel.DatabaseFileAction.DELETE -> {
|
||||||
databaseFiles.databaseFileToActivate?.let { databaseFileToDelete ->
|
databaseFiles.databaseFileToActivate?.let { databaseFileToDelete ->
|
||||||
mAdapterDatabaseHistory?.deleteDatabaseFileHistory(databaseFileToDelete)
|
mAdapterDatabaseHistory?.deleteDatabaseFileHistory(databaseFileToDelete)
|
||||||
mAdapterDatabaseHistory?.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ class FileDatabaseHistoryAdapter(context: Context)
|
|||||||
|
|
||||||
private val listDatabaseFiles = ArrayList<DatabaseFile>()
|
private val listDatabaseFiles = ArrayList<DatabaseFile>()
|
||||||
|
|
||||||
private var mExpandedPosition = -1
|
private var mExpandedDatabaseFile: DatabaseFile? = null
|
||||||
private var mPreviousExpandedPosition = -1
|
private var mPreviousExpandedDatabaseFile: DatabaseFile? = null
|
||||||
|
|
||||||
@ColorInt
|
@ColorInt
|
||||||
private val defaultColor: Int
|
private val defaultColor: Int
|
||||||
@@ -70,10 +70,11 @@ class FileDatabaseHistoryAdapter(context: Context)
|
|||||||
val databaseFile = listDatabaseFiles[position]
|
val databaseFile = listDatabaseFiles[position]
|
||||||
|
|
||||||
// Click item to open file
|
// Click item to open file
|
||||||
if (fileItemOpenListener != null)
|
if (fileItemOpenListener != null) {
|
||||||
holder.fileContainer.setOnClickListener {
|
holder.fileContainer.setOnClickListener {
|
||||||
fileItemOpenListener?.invoke(databaseFile)
|
fileItemOpenListener?.invoke(databaseFile)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// File alias
|
// File alias
|
||||||
holder.fileAlias.text = databaseFile.databaseAlias
|
holder.fileAlias.text = databaseFile.databaseAlias
|
||||||
@@ -104,7 +105,7 @@ class FileDatabaseHistoryAdapter(context: Context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Click on information
|
// Click on information
|
||||||
val isExpanded = position == mExpandedPosition
|
val isExpanded = databaseFile == mExpandedDatabaseFile
|
||||||
//This line hides or shows the layout in question
|
//This line hides or shows the layout in question
|
||||||
holder.fileExpandContainer.visibility = if (isExpanded) View.VISIBLE else View.GONE
|
holder.fileExpandContainer.visibility = if (isExpanded) View.VISIBLE else View.GONE
|
||||||
|
|
||||||
@@ -131,16 +132,16 @@ class FileDatabaseHistoryAdapter(context: Context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isExpanded) {
|
if (isExpanded) {
|
||||||
mPreviousExpandedPosition = position
|
mPreviousExpandedDatabaseFile = databaseFile
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.fileInformation.setOnClickListener {
|
holder.fileInformation.setOnClickListener {
|
||||||
mExpandedPosition = if (isExpanded) -1 else position
|
mExpandedDatabaseFile = if (isExpanded) null else databaseFile
|
||||||
|
|
||||||
// Notify change
|
// Notify change
|
||||||
if (mPreviousExpandedPosition < itemCount)
|
val previousExpandedPosition = listDatabaseFiles.indexOf(mPreviousExpandedDatabaseFile)
|
||||||
notifyItemChanged(mPreviousExpandedPosition)
|
notifyItemChanged(previousExpandedPosition)
|
||||||
notifyItemChanged(position)
|
val expandedPosition = listDatabaseFiles.indexOf(mExpandedDatabaseFile)
|
||||||
|
notifyItemChanged(expandedPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Refresh View / Close alias modification if not contains fileAlias
|
// Refresh View / Close alias modification if not contains fileAlias
|
||||||
@@ -157,13 +158,30 @@ class FileDatabaseHistoryAdapter(context: Context)
|
|||||||
listDatabaseFiles.clear()
|
listDatabaseFiles.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun replaceAllDatabaseFileHistoryList(listFileDatabaseHistoryToAdd: List<DatabaseFile>) {
|
fun addDatabaseFileHistory(fileDatabaseHistoryToAdd: DatabaseFile) {
|
||||||
listDatabaseFiles.clear()
|
listDatabaseFiles.add(0, fileDatabaseHistoryToAdd)
|
||||||
listDatabaseFiles.addAll(listFileDatabaseHistoryToAdd)
|
notifyItemInserted(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateDatabaseFileHistory(fileDatabaseHistoryToUpdate: DatabaseFile) {
|
||||||
|
val index = listDatabaseFiles.indexOf(fileDatabaseHistoryToUpdate)
|
||||||
|
if (listDatabaseFiles.remove(fileDatabaseHistoryToUpdate)) {
|
||||||
|
listDatabaseFiles.add(index, fileDatabaseHistoryToUpdate)
|
||||||
|
notifyItemChanged(index)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteDatabaseFileHistory(fileDatabaseHistoryToDelete: DatabaseFile) {
|
fun deleteDatabaseFileHistory(fileDatabaseHistoryToDelete: DatabaseFile) {
|
||||||
listDatabaseFiles.remove(fileDatabaseHistoryToDelete)
|
val index = listDatabaseFiles.indexOf(fileDatabaseHistoryToDelete)
|
||||||
|
if (listDatabaseFiles.remove(fileDatabaseHistoryToDelete)) {
|
||||||
|
notifyItemRemoved(index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun replaceAllDatabaseFileHistoryList(listFileDatabaseHistoryToAdd: List<DatabaseFile>) {
|
||||||
|
listDatabaseFiles.clear()
|
||||||
|
listDatabaseFiles.addAll(listFileDatabaseHistoryToAdd)
|
||||||
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setOnFileDatabaseHistoryOpenListener(listener : ((DatabaseFile)->Unit)?) {
|
fun setOnFileDatabaseHistoryOpenListener(listener : ((DatabaseFile)->Unit)?) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ data class DatabaseFile(var databaseUri: Uri? = null,
|
|||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (other !is DatabaseFile) return false
|
if (other !is DatabaseFile) return false
|
||||||
|
|
||||||
if (databaseUri == null) return false
|
if (databaseUri == null || other.databaseUri == null) return false
|
||||||
if (databaseUri != other.databaseUri) return false
|
if (databaseUri != other.databaseUri) return false
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|||||||
Reference in New Issue
Block a user