mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Encapsulate database in sort enum
This commit is contained in:
@@ -262,7 +262,7 @@ class NodeAdapter (private val context: Context,
|
||||
*/
|
||||
fun notifyChangeSort(sortNodeEnum: SortNodeEnum,
|
||||
sortNodeParameters: SortNodeEnum.SortNodeParameters) {
|
||||
this.mNodeComparator = sortNodeEnum.getNodeComparator(sortNodeParameters)
|
||||
this.mNodeComparator = sortNodeEnum.getNodeComparator(database, sortNodeParameters)
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
|
||||
@@ -28,15 +28,17 @@ import java.util.*
|
||||
enum class SortNodeEnum {
|
||||
DB, TITLE, USERNAME, CREATION_TIME, LAST_MODIFY_TIME, LAST_ACCESS_TIME;
|
||||
|
||||
fun <G: GroupVersionedInterface<G, *>> getNodeComparator(sortNodeParameters: SortNodeParameters)
|
||||
fun <G: GroupVersionedInterface<G, *>> getNodeComparator(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: Comparator<NodeVersionedInterface<G>> {
|
||||
return when (this) {
|
||||
DB -> NodeNaturalComparator(sortNodeParameters) // Force false because natural order contains recycle bin
|
||||
TITLE -> NodeTitleComparator(sortNodeParameters)
|
||||
USERNAME -> NodeUsernameComparator(sortNodeParameters)
|
||||
CREATION_TIME -> NodeCreationComparator(sortNodeParameters)
|
||||
LAST_MODIFY_TIME -> NodeLastModificationComparator(sortNodeParameters)
|
||||
LAST_ACCESS_TIME -> NodeLastAccessComparator(sortNodeParameters)
|
||||
DB -> NodeNaturalComparator(database, sortNodeParameters) // Force false because natural order contains recycle bin
|
||||
TITLE -> NodeTitleComparator(database, sortNodeParameters)
|
||||
USERNAME -> NodeUsernameComparator(database, sortNodeParameters)
|
||||
CREATION_TIME -> NodeCreationComparator(database, sortNodeParameters)
|
||||
LAST_MODIFY_TIME -> NodeLastModificationComparator(database, sortNodeParameters)
|
||||
LAST_ACCESS_TIME -> NodeLastAccessComparator(database, sortNodeParameters)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,11 +50,9 @@ enum class SortNodeEnum {
|
||||
<
|
||||
G: GroupVersionedInterface<*, *>,
|
||||
T: NodeVersionedInterface<G>
|
||||
>(var sortNodeParameters: SortNodeParameters)
|
||||
>(var database: Database, var sortNodeParameters: SortNodeParameters)
|
||||
: Comparator<T> {
|
||||
|
||||
val database = Database.getInstance()
|
||||
|
||||
abstract fun compareBySpecificOrder(object1: T, object2: T): Int
|
||||
|
||||
private fun specificOrderOrHashIfEquals(object1: T, object2: T): Int {
|
||||
@@ -110,8 +110,9 @@ enum class SortNodeEnum {
|
||||
* Comparator of node by natural database placement
|
||||
*/
|
||||
class NodeNaturalComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
return object1.nodeIndexInParentForNaturalOrder()
|
||||
@@ -123,13 +124,14 @@ enum class SortNodeEnum {
|
||||
* Comparator of Node by Title
|
||||
*/
|
||||
class NodeTitleComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
val titleCompare = object1.title.compareTo(object2.title, ignoreCase = true)
|
||||
return if (titleCompare == 0)
|
||||
NodeNaturalComparator<G, T>(sortNodeParameters)
|
||||
NodeNaturalComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
else
|
||||
titleCompare
|
||||
@@ -140,8 +142,9 @@ enum class SortNodeEnum {
|
||||
* Comparator of Node by Username, Groups by title
|
||||
*/
|
||||
class NodeUsernameComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
return if (object1.type == Type.ENTRY && object2.type == Type.ENTRY) {
|
||||
@@ -150,12 +153,12 @@ enum class SortNodeEnum {
|
||||
.compareTo((object2 as Entry).getEntryInfo(database).username,
|
||||
ignoreCase = true)
|
||||
if (usernameCompare == 0)
|
||||
NodeTitleComparator<G, T>(sortNodeParameters)
|
||||
NodeTitleComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
else
|
||||
usernameCompare
|
||||
} else {
|
||||
NodeTitleComparator<G, T>(sortNodeParameters)
|
||||
NodeTitleComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
}
|
||||
}
|
||||
@@ -165,14 +168,15 @@ enum class SortNodeEnum {
|
||||
* Comparator of node by creation
|
||||
*/
|
||||
class NodeCreationComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
val creationCompare = object1.creationTime.date
|
||||
.compareTo(object2.creationTime.date)
|
||||
return if (creationCompare == 0)
|
||||
NodeNaturalComparator<G, T>(sortNodeParameters)
|
||||
NodeNaturalComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
else
|
||||
creationCompare
|
||||
@@ -183,14 +187,15 @@ enum class SortNodeEnum {
|
||||
* Comparator of node by last modification
|
||||
*/
|
||||
class NodeLastModificationComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
val lastModificationCompare = object1.lastModificationTime.date
|
||||
.compareTo(object2.lastModificationTime.date)
|
||||
return if (lastModificationCompare == 0)
|
||||
NodeNaturalComparator<G, T>(sortNodeParameters)
|
||||
NodeNaturalComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
else
|
||||
lastModificationCompare
|
||||
@@ -201,14 +206,15 @@ enum class SortNodeEnum {
|
||||
* Comparator of node by last access
|
||||
*/
|
||||
class NodeLastAccessComparator<G: GroupVersionedInterface<*, *>, T: NodeVersionedInterface<G>>(
|
||||
database: Database,
|
||||
sortNodeParameters: SortNodeParameters)
|
||||
: NodeComparator<G, T>(sortNodeParameters) {
|
||||
: NodeComparator<G, T>(database, sortNodeParameters) {
|
||||
|
||||
override fun compareBySpecificOrder(object1: T, object2: T): Int {
|
||||
val lastAccessCompare = object1.lastAccessTime.date
|
||||
.compareTo(object2.lastAccessTime.date)
|
||||
return if (lastAccessCompare == 0)
|
||||
NodeNaturalComparator<G, T>(sortNodeParameters)
|
||||
NodeNaturalComparator<G, T>(database, sortNodeParameters)
|
||||
.compare(object1, object2)
|
||||
else
|
||||
lastAccessCompare
|
||||
|
||||
@@ -68,7 +68,6 @@ open class SettingsActivity
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContentView(R.layout.activity_toolbar)
|
||||
@@ -160,7 +159,7 @@ open class SettingsActivity
|
||||
}
|
||||
|
||||
override fun onAssignKeyDialogPositiveClick(mainCredential: MainCredential) {
|
||||
Database.getInstance().let { database ->
|
||||
mDatabase?.let { database ->
|
||||
database.fileUri?.let { databaseUri ->
|
||||
// Show the progress dialog now or after dialog confirmation
|
||||
if (database.validatePasswordEncoding(mainCredential)) {
|
||||
|
||||
Reference in New Issue
Block a user