diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt index a161851b6..78e7afe56 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt @@ -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 { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt index 13c904250..6440517f4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt @@ -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 { diff --git a/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt b/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt index 69be1cec2..b499ae8c4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt @@ -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)) } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt index 99a7418f4..e9788b032 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/Database.kt @@ -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? diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt index 6c199a8ed..85c9f4ecf 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDBX.kt @@ -339,10 +339,9 @@ class DatabaseKDBX : DatabaseVersioned { 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 diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/template/Template.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/template/Template.kt index efbcd20e9..985b2dbd2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/template/Template.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/template/Template.kt @@ -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 diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateEngine.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateEngine.kt index 61c963b40..2a9a6f10c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateEngine.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateEngine.kt @@ -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) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplatesFields.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateField.kt similarity index 71% rename from app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplatesFields.kt rename to app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateField.kt index 716a2cddd..cb5bb0a61 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplatesFields.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/template/TemplateField.kt @@ -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( diff --git a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt index adef8507f..c23e8d796 100644 --- a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt +++ b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt @@ -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)) } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt index 740f560c6..116e1901b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedDatabaseSettingsFragment.kt @@ -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?)?. diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt index 688028b33..ed50faf53 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryContentsView.kt @@ -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)