From 2d2489443a658c6898120b24efdfe07e15741d5f Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 15 Aug 2020 12:41:16 +0200 Subject: [PATCH] New icon to create extra field and fix focus --- .../keepass/activities/EntryEditActivity.kt | 15 ++++++------- .../keepass/view/EntryEditContentsView.kt | 21 ++++++++++++++----- .../res/drawable/ic_new_field_white_24dp.xml | 10 ++------- art/ic_new_field.svg | 8 +++---- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index d85635b57..41a685d67 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -297,9 +297,10 @@ class EntryEditActivity : LockingActivity(), if (expires) expiresDate = newEntry.expiryTime notes = newEntry.notes - for ((key, value) in newEntry.customFields) { - putCustomField(Field(key, value)) - } + + assignExtraFields(newEntry.customFields.mapTo(ArrayList()) { + Field(it.key, it.value) + }) assignAttachments(newEntry.getAttachments()) onAttachmentDeleted { attachment, _ -> newEntry.removeAttachment(attachment) @@ -355,16 +356,16 @@ class EntryEditActivity : LockingActivity(), } private fun scrollToView(view: View?) { - view?.post { + view?.postDelayed({ view.requestFocus() scrollView?.post { scrollView?.smoothScrollTo(0, view.bottom) } - } + }, 500) } override fun onNewCustomFieldApproved(label: String, protection: Boolean) { - val customFieldView = entryEditContentsView?.putCustomField( + val customFieldView = entryEditContentsView?.putExtraField( Field(label, ProtectedString(protection)) ) scrollToView(customFieldView) @@ -494,7 +495,7 @@ class EntryEditActivity : LockingActivity(), // Update the otp field with otpauth:// url val otpField = OtpEntryFields.buildOtpField(otpElement, mEntry?.title, mEntry?.username) - val otpCustomView = entryEditContentsView?.putCustomField(otpField) + val otpCustomView = entryEditContentsView?.putExtraField(otpField) scrollToView(otpCustomView) mEntry?.putExtraField(otpField.name, otpField.protectedValue) } diff --git a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt index ea8105bd5..ac60157fd 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/EntryEditContentsView.kt @@ -250,9 +250,22 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, } /** - * Update a custom field or create a new one if doesn't exists + * Remove all children and add new views for each field */ - fun putCustomField(customField: Field) + fun assignExtraFields(fields: List) { + entryExtraFieldsContainer.removeAllViews() + fields.forEach { extraField -> + entryExtraFieldsContainer.addView(EntryEditExtraField(context).apply { + setFontVisibility(fontInVisibility) + customField = extraField + }) + } + } + + /** + * Update an extra field or create a new one if doesn't exists + */ + fun putExtraField(customField: Field) : EntryEditExtraField { var extraFieldView = getCustomFieldByLabel(customField.name) // Create new view if not exists @@ -260,9 +273,7 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context, extraFieldView = EntryEditExtraField(context) extraFieldView.setFontVisibility(fontInVisibility) // No need animation because of scroll - entryExtraFieldsContainer.apply { - addView(extraFieldView) - } + entryExtraFieldsContainer.addView(extraFieldView) } extraFieldView.customField = customField return extraFieldView diff --git a/app/src/main/res/drawable/ic_new_field_white_24dp.xml b/app/src/main/res/drawable/ic_new_field_white_24dp.xml index fbbecc509..9629b8a84 100644 --- a/app/src/main/res/drawable/ic_new_field_white_24dp.xml +++ b/app/src/main/res/drawable/ic_new_field_white_24dp.xml @@ -4,16 +4,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + android:strokeWidth="4" + android:pathData="M 4 5 L 4 7 L 20 7 L 20 5 L 4 5 z M 4 9 L 4 11 L 20 11 L 20 9 L 4 9 z M 4 17 L 4 19 L 20 19 L 20 17 L 4 17 z" /> \ No newline at end of file diff --git a/art/ic_new_field.svg b/art/ic_new_field.svg index a4ec02592..464036220 100644 --- a/art/ic_new_field.svg +++ b/art/ic_new_field.svg @@ -28,8 +28,8 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:zoom="16" - inkscape:cx="5.9715813" - inkscape:cy="15.414365" + inkscape:cx="23.528681" + inkscape:cy="13.907428" inkscape:current-layer="g4770" showgrid="true" inkscape:grid-bbox="true" @@ -71,7 +71,7 @@ image/svg+xml - + @@ -88,7 +88,7 @@ transform="matrix(-0.00397893,0,0,0.00397893,125.58386,23.674135)" />