Refactor TemplateField and Template name as resource

This commit is contained in:
J-Jamet
2021-06-02 11:40:44 +02:00
parent b6a5f43176
commit c196cdf405
11 changed files with 67 additions and 39 deletions

View File

@@ -50,7 +50,7 @@ import com.kunzisoft.keepass.database.element.node.NodeId
import com.kunzisoft.keepass.database.element.template.TemplateEngine
import com.kunzisoft.keepass.education.EntryActivityEducation
import com.kunzisoft.keepass.magikeyboard.MagikIME
import com.kunzisoft.keepass.database.element.template.TemplatesFields
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.model.EntryAttachmentState
import com.kunzisoft.keepass.model.StreamDirection
import com.kunzisoft.keepass.otp.OtpEntryFields
@@ -337,7 +337,7 @@ class EntryActivity : LockingActivity() {
clipboardHelper?.timeoutCopyToClipboard(
value.toString(),
getString(R.string.copy_field,
TemplatesFields.getLocalizedName(applicationContext, field.name))
TemplateField.getLocalizedName(applicationContext, field.name))
)
}
} else {

View File

@@ -42,12 +42,12 @@ import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.element.template.*
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_EXPIRATION
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_NOTES
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_PASSWORD
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_TITLE
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_URL
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_USERNAME
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_EXPIRATION
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_NOTES
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_PASSWORD
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_TITLE
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_URL
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_USERNAME
import com.kunzisoft.keepass.education.EntryEditActivityEducation
import com.kunzisoft.keepass.icons.IconDrawableFactory
import com.kunzisoft.keepass.model.*
@@ -354,7 +354,7 @@ class EntryEditFragment : StylishFragment() {
// Add an action icon if needed
return context?.let {
EntryEditFieldView(it).apply {
label = TemplatesFields.getLocalizedName(context, field.name)
label = TemplateField.getLocalizedName(context, field.name)
setProtection(field.protectedValue.isProtected, mHideProtectedValue)
setValue(field.protectedValue.toString(), when (templateAttribute.type) {
TemplateAttributeType.MULTILINE -> EntryEditFieldView.TextType.MULTI_LINE
@@ -387,7 +387,7 @@ class EntryEditFragment : StylishFragment() {
field: Field): View? {
return context?.let {
DateTimeView(it).apply {
label = TemplatesFields.getLocalizedName(context, field.name)
label = TemplateField.getLocalizedName(context, field.name)
try {
val value = field.protectedValue.toString()
activation = value.trim().isNotEmpty()
@@ -450,7 +450,7 @@ class EntryEditFragment : StylishFragment() {
}.toMutableList().also { customFields ->
// Add template field
if (mTemplate != Template.STANDARD) {
TemplatesFields.getTemplateUUIDField(mTemplate)?.let { templateField ->
TemplateField.getTemplateUUIDField(mTemplate)?.let { templateField ->
customFields.add(templateField)
}
}
@@ -537,7 +537,7 @@ class EntryEditFragment : StylishFragment() {
private data class FieldId(var viewId: Int, var protected: Boolean)
private fun isStandardFieldName(name: String): Boolean {
return TemplatesFields.isStandardFieldName(name)
return TemplateField.isStandardFieldName(name)
}
private fun containsCustomFieldName(name: String): Boolean {

View File

@@ -48,7 +48,7 @@ import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.database.element.template.TemplatesFields
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.settings.AutofillSettingsActivity
import com.kunzisoft.keepass.settings.PreferencesUtil
import java.util.*
@@ -175,17 +175,17 @@ object AutofillHelper {
}
}
for (field in entryInfo.customFields) {
if (field.name == TemplatesFields.CREDIT_CARD_CARDHOLDER) {
if (field.name == TemplateField.CREDIT_CARD_CARDHOLDER) {
struct.ccNameId?.let { ccNameId ->
builder.setValue(ccNameId, AutofillValue.forText(field.protectedValue.stringValue))
}
}
if (field.name == TemplatesFields.CREDIT_CARD_NUMBER) {
if (field.name == TemplateField.CREDIT_CARD_NUMBER) {
struct.ccnId?.let { ccnId ->
builder.setValue(ccnId, AutofillValue.forText(field.protectedValue.stringValue))
}
}
if (field.name == TemplatesFields.CREDIT_CARD_CVV) {
if (field.name == TemplateField.CREDIT_CARD_CVV) {
struct.cvvId?.let { cvvId ->
builder.setValue(cvvId, AutofillValue.forText(field.protectedValue.stringValue))
}

View File

@@ -388,8 +388,8 @@ class Database {
val isTemplatesEnabled: Boolean
get() = mDatabaseKDBX?.isTemplatesGroupEnabled() ?: false
fun enableTemplates(enable: Boolean) {
mDatabaseKDBX?.enableTemplatesGroup(enable)
fun enableTemplates(enable: Boolean, resources: Resources) {
mDatabaseKDBX?.enableTemplatesGroup(enable, resources)
}
val templatesGroup: Group?

View File

@@ -339,10 +339,9 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
return entryTemplatesGroup != UUID_ZERO
}
fun enableTemplatesGroup(enable: Boolean) {
fun enableTemplatesGroup(enable: Boolean, resources: Resources) {
if (enable) {
val uuidTemplatesGroup = mTemplateEngine.createNewTemplatesGroup()
val uuidTemplatesGroup = mTemplateEngine.createNewTemplatesGroup(resources)
addGroupTo(uuidTemplatesGroup, rootGroup)
entryTemplatesGroup = uuidTemplatesGroup.id
entryTemplatesGroupChanged = uuidTemplatesGroup.lastModificationTime

View File

@@ -23,11 +23,11 @@ import android.os.ParcelUuid
import android.os.Parcelable
import com.kunzisoft.keepass.database.element.database.DatabaseVersioned
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_EXPIRATION
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_NOTES
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_PASSWORD
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_URL
import com.kunzisoft.keepass.database.element.template.TemplatesFields.STANDARD_USERNAME
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_EXPIRATION
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_NOTES
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_PASSWORD
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_URL
import com.kunzisoft.keepass.database.element.template.TemplateField.STANDARD_USERNAME
import java.util.*
import kotlin.collections.ArrayList

View File

@@ -1,6 +1,8 @@
package com.kunzisoft.keepass.database.element.template
import android.content.res.Resources
import android.util.Log
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.database.DatabaseKDBX
import com.kunzisoft.keepass.database.element.entry.EntryKDBX
import com.kunzisoft.keepass.database.element.group.GroupKDBX
@@ -33,9 +35,9 @@ class TemplateEngine(private val databaseKDBX: DatabaseKDBX) {
return templates
}
fun createNewTemplatesGroup(): GroupKDBX {
fun createNewTemplatesGroup(resources: Resources): GroupKDBX {
return databaseKDBX.createGroup().apply {
title = TEMPLATE_GROUP_NAME
title = getDefaultTemplateGroupName(resources)
icon.standard = databaseKDBX.getStandardIcon(IconImageStandard.FOLDER_ID)
enableAutoType = false
enableSearching = false
@@ -92,7 +94,7 @@ class TemplateEngine(private val databaseKDBX: DatabaseKDBX) {
val attribute = getOrRetrieveAttributeFromName(attributes, attributeName)
var referenceLabel = value.stringValue
if (referenceLabel.equals(TEMPLATE_ATTRIBUTE_TITLE_EXPIRATION, true)) {
referenceLabel = TemplatesFields.STANDARD_EXPIRATION
referenceLabel = TemplateField.STANDARD_EXPIRATION
}
attribute.attribute.label = referenceLabel
} catch (e: Exception) {
@@ -171,7 +173,6 @@ class TemplateEngine(private val databaseKDBX: DatabaseKDBX) {
private data class TemplateAttributePosition(var position: Int, var attribute: TemplateAttribute)
private val TAG = TemplateEngine::class.java.name
private const val TEMPLATE_GROUP_NAME = "Templates"
private const val TEMPLATE_LABEL_VERSION = "_etm_template"
const val TEMPLATE_ENTRY_UUID = "_etm_template_uuid"
private const val TEMPLATE_ATTRIBUTE_POSITION_PREFIX = "_etm_position"
@@ -187,5 +188,9 @@ class TemplateEngine(private val databaseKDBX: DatabaseKDBX) {
private const val TEMPLATE_ATTRIBUTE_TYPE_LISTBOX = "Listbox"
private const val TEMPLATE_ATTRIBUTE_TYPE_POPOUT = "Popout"
private const val TEMPLATE_ATTRIBUTE_TYPE_RICH_TEXTBOX = "Rich Textbox"
fun getDefaultTemplateGroupName(resources: Resources): String {
return resources.getString(R.string.templates)
}
}
}

View File

@@ -6,7 +6,7 @@ import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.model.Field
import com.kunzisoft.keepass.utils.UuidUtil
object TemplatesFields {
object TemplateField {
const val STANDARD_TITLE = "title"
const val STANDARD_USERNAME = "username"
@@ -15,10 +15,34 @@ object TemplatesFields {
const val STANDARD_EXPIRATION = "expires"
const val STANDARD_NOTES = "notes"
const val CREDIT_CARD_TITLE = "Credit Card"
const val CREDIT_CARD_CARDHOLDER = "Card holder"
const val CREDIT_CARD_NUMBER = "Number"
const val CREDIT_CARD_CVV = "CVV"
private const val CREDIT_CARD_PIN = "PIN"
const val CREDIT_CARD_PIN = "PIN"
const val ID_CARD_TITLE = "ID Card"
const val ID_CARD_NUMBER = "Number"
const val ID_CARD_NAME = "Name"
const val ID_CARD_PLACE_OF_ISSUE = "Place of issue"
const val ID_CARD_DATE_OF_ISSUE = "Date of issue"
const val EMAIL_TITLE = "E-mail"
const val EMAIL_ADDRESS = "E-mail address"
const val EMAIL_URL = "URL"
const val EMAIL_PASSWORD = "Password"
const val WIRELESS_LAN_TITLE = "Wireless LAN"
const val WIRELESS_LAN_SSID = "SSID"
const val WIRELESS_LAN_PASSWORD = "Password"
const val SECURE_NOTE_TITLE = "Secure Note"
const val SECURE_NOTE_NOTES = "Notes"
const val MEMBERSHIP_TITLE = "Membership"
const val MEMBERSHIP_Number = "Number"
const val MEMBERSHIP_URL = "URL"
const val MEMBERSHIP_EXPIRATION = "@exp_date"
fun isStandardFieldName(name: String): Boolean {
return arrayOf(

View File

@@ -24,7 +24,7 @@ import android.os.Parcelable
import com.kunzisoft.keepass.database.element.Attachment
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.element.template.TemplatesFields
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.otp.OtpElement
import com.kunzisoft.keepass.otp.OtpEntryFields
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
@@ -167,7 +167,7 @@ class EntryInfo : NodeInfo {
creditCard?.let { cc ->
cc.cardholder?.let {
val v = ProtectedString(false, it)
addUniqueField(Field(TemplatesFields.CREDIT_CARD_CARDHOLDER, v))
addUniqueField(Field(TemplateField.CREDIT_CARD_CARDHOLDER, v))
}
cc.expiration?.let {
expires = true
@@ -175,11 +175,11 @@ class EntryInfo : NodeInfo {
}
cc.number?.let {
val v = ProtectedString(false, it)
addUniqueField(Field(TemplatesFields.CREDIT_CARD_NUMBER, v))
addUniqueField(Field(TemplateField.CREDIT_CARD_NUMBER, v))
}
cc.cvv?.let {
val v = ProtectedString(true, it)
addUniqueField(Field(TemplatesFields.CREDIT_CARD_CVV, v))
addUniqueField(Field(TemplateField.CREDIT_CARD_CVV, v))
}
}
}

View File

@@ -187,7 +187,7 @@ class NestedDatabaseSettingsFragment : NestedSettingsFragment() {
isEnabled = if (!mDatabaseReadOnly) {
setOnPreferenceChangeListener { _, newValue ->
val templatesEnabled = newValue as Boolean
mDatabase.enableTemplates(templatesEnabled)
mDatabase.enableTemplates(templatesEnabled, resources)
refreshTemplatesGroup()
// Save the database if not in readonly mode
(context as SettingsActivity?)?.

View File

@@ -42,7 +42,7 @@ import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.utils.UuidUtil
import com.kunzisoft.keepass.model.EntryAttachmentState
import com.kunzisoft.keepass.model.StreamDirection
import com.kunzisoft.keepass.database.element.template.TemplatesFields
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.otp.OtpElement
import com.kunzisoft.keepass.otp.OtpType
import com.kunzisoft.keepass.settings.PreferencesUtil
@@ -313,7 +313,7 @@ class EntryContentsView @JvmOverloads constructor(context: Context,
onCopyButtonClickListener: OnClickListener?) {
extraFieldsListView.addView(EntryFieldView(context).apply {
setLabel(TemplatesFields.getLocalizedName(context, title))
setLabel(TemplateField.getLocalizedName(context, title))
setValue(value.toString(), value.isProtected)
setAutoLink()
activateCopyButton(allowCopy)