Better code encapsulation

This commit is contained in:
J-Jamet
2021-03-05 14:46:23 +01:00
parent 4776eac07e
commit c2460d7262
6 changed files with 50 additions and 13 deletions

View File

@@ -34,7 +34,7 @@ class IconCustomFragment : IconFragment<IconImageCustom>() {
}
override fun defineIconList(database: Database): List<IconImageCustom> {
return database.iconsManager.getCustomIconList()
return database.getCustomIconList()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

View File

@@ -34,7 +34,7 @@ class IconStandardFragment : IconFragment<IconImageStandard>() {
}
override fun defineIconList(database: Database): List<IconImageStandard> {
return database.iconsManager.getStandardIconList()
return database.getStandardIconList()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

View File

@@ -110,10 +110,24 @@ class SearchEntryCursorAdapter(private val context: Context,
return database.createEntry()?.apply {
database.startManageEntry(this)
entryKDB?.let { entryKDB ->
(cursor as EntryCursorKDB).populateEntry(entryKDB, database.iconsManager)
(cursor as EntryCursorKDB).populateEntry(entryKDB,
{ standardIconId ->
database.getStandardIcon(standardIconId)
},
{ customIconId ->
database.getCustomIcon(customIconId)
}
)
}
entryKDBX?.let { entryKDBX ->
(cursor as EntryCursorKDBX).populateEntry(entryKDBX, database.iconsManager)
(cursor as EntryCursorKDBX).populateEntry(entryKDBX,
{ standardIconId ->
database.getStandardIcon(standardIconId)
},
{ customIconId ->
database.getCustomIcon(customIconId)
}
)
}
database.stopManageEntry(this)
}

View File

@@ -24,7 +24,8 @@ import android.provider.BaseColumns
import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.entry.EntryVersioned
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.database.element.icon.IconsManager
import com.kunzisoft.keepass.database.element.icon.IconImageCustom
import com.kunzisoft.keepass.database.element.icon.IconImageStandard
import com.kunzisoft.keepass.database.element.node.NodeId
import java.util.*
@@ -50,12 +51,14 @@ abstract class EntryCursor<EntryId, PwEntryV : EntryVersioned<*, EntryId, *, *>>
abstract fun getPwNodeId(): NodeId<EntryId>
open fun populateEntry(pwEntry: PwEntryV, iconsManager: IconsManager) {
open fun populateEntry(pwEntry: PwEntryV,
retrieveStandardIcon: (Int) -> IconImageStandard,
retrieveCustomIcon: (UUID) -> IconImageCustom) {
pwEntry.nodeId = getPwNodeId()
pwEntry.title = getString(getColumnIndex(COLUMN_INDEX_TITLE))
val iconStandard = iconsManager.getIcon(getInt(getColumnIndex(COLUMN_INDEX_ICON_STANDARD)))
val iconCustom = iconsManager.getIcon(UUID(getLong(getColumnIndex(COLUMN_INDEX_ICON_CUSTOM_UUID_MOST_SIGNIFICANT_BITS)),
val iconStandard = retrieveStandardIcon.invoke(getInt(getColumnIndex(COLUMN_INDEX_ICON_STANDARD)))
val iconCustom = retrieveCustomIcon.invoke(UUID(getLong(getColumnIndex(COLUMN_INDEX_ICON_CUSTOM_UUID_MOST_SIGNIFICANT_BITS)),
getLong(getColumnIndex(COLUMN_INDEX_ICON_CUSTOM_UUID_LEAST_SIGNIFICANT_BITS))))
pwEntry.icon = IconImage(iconStandard, iconCustom)

View File

@@ -20,7 +20,9 @@
package com.kunzisoft.keepass.database.cursor
import com.kunzisoft.keepass.database.element.entry.EntryKDBX
import com.kunzisoft.keepass.database.element.icon.IconsManager
import com.kunzisoft.keepass.database.element.icon.IconImageCustom
import com.kunzisoft.keepass.database.element.icon.IconImageStandard
import java.util.*
class EntryCursorKDBX : EntryCursorUUID<EntryKDBX>() {
@@ -50,8 +52,10 @@ class EntryCursorKDBX : EntryCursorUUID<EntryKDBX>() {
entryId++
}
override fun populateEntry(pwEntry: EntryKDBX, iconsManager: IconsManager) {
super.populateEntry(pwEntry, iconsManager)
override fun populateEntry(pwEntry: EntryKDBX,
retrieveStandardIcon: (Int) -> IconImageStandard,
retrieveCustomIcon: (UUID) -> IconImageCustom) {
super.populateEntry(pwEntry, retrieveStandardIcon, retrieveCustomIcon)
// Retrieve extra fields
if (extraFieldCursor.moveToFirst()) {

View File

@@ -27,6 +27,7 @@ import com.kunzisoft.keepass.crypto.keyDerivation.KdfEngine
import com.kunzisoft.keepass.database.action.node.NodeHandler
import com.kunzisoft.keepass.database.element.database.*
import com.kunzisoft.keepass.database.element.icon.IconImageCustom
import com.kunzisoft.keepass.database.element.icon.IconImageStandard
import com.kunzisoft.keepass.database.element.icon.IconsManager
import com.kunzisoft.keepass.database.element.node.NodeId
import com.kunzisoft.keepass.database.element.node.NodeIdInt
@@ -92,15 +93,30 @@ class Database {
return mDatabaseKDB?.loadedCipherKey ?: mDatabaseKDBX?.loadedCipherKey
}
// TODO private
val iconsManager: IconsManager
private val iconsManager: IconsManager
get() {
return mDatabaseKDB?.iconsManager ?: mDatabaseKDBX?.iconsManager ?: IconsManager()
}
fun getStandardIconList(): List<IconImageStandard> {
return iconsManager.getStandardIconList()
}
fun getStandardIcon(iconId: Int): IconImageStandard {
return iconsManager.getIcon(iconId)
}
val allowCustomIcons: Boolean
get() = mDatabaseKDBX != null
fun getCustomIconList(): List<IconImageCustom> {
return iconsManager.getCustomIconList()
}
fun getCustomIcon(iconId: UUID): IconImageCustom {
return iconsManager.getIcon(iconId)
}
fun buildNewCustomIcon(cacheDirectory: File): IconImageCustom? {
return mDatabaseKDBX?.buildNewCustomIcon(cacheDirectory)
}