Fix custom fields orientation change #337

This commit is contained in:
J-Jamet
2019-09-22 18:27:32 +02:00
parent 2f0eb283ed
commit 83873fab81
2 changed files with 27 additions and 12 deletions

View File

@@ -105,14 +105,12 @@ class EntryEditActivity : LockingHideActivity(),
}
}
// Retrieve the icon after an orientation change
if (savedInstanceState != null && savedInstanceState.containsKey(KEY_NEW_ENTRY)) {
mNewEntry = savedInstanceState.getParcelable(KEY_NEW_ENTRY) as EntryVersioned
} else {
// Create the new entry from the current one
if (savedInstanceState == null
|| !savedInstanceState.containsKey(KEY_NEW_ENTRY)) {
mEntry?.let { entry ->
// Create a copy to modify
mNewEntry = EntryVersioned(entry).also { newEntry ->
// WARNING Remove the parent to keep memory with parcelable
newEntry.parent = null
}
@@ -123,7 +121,11 @@ class EntryEditActivity : LockingHideActivity(),
// Parent is retrieve, it's a new entry to create
intent.getParcelableExtra<PwNodeId<*>>(KEY_PARENT)?.let {
mIsNew = true
mNewEntry = mDatabase?.createEntry()
// Create an empty new entry
if (savedInstanceState == null
|| !savedInstanceState.containsKey(KEY_NEW_ENTRY)) {
mNewEntry = mDatabase?.createEntry()
}
mParent = mDatabase?.getGroupById(it)
// Add the default icon
mDatabase?.drawFactory?.let { iconFactory ->
@@ -131,6 +133,12 @@ class EntryEditActivity : LockingHideActivity(),
}
}
// Retrieve the new entry after an orientation change
if (savedInstanceState != null
&& savedInstanceState.containsKey(KEY_NEW_ENTRY)) {
mNewEntry = savedInstanceState.getParcelable(KEY_NEW_ENTRY)
}
// Close the activity if entry or parent can't be retrieve
if (mNewEntry == null || mParent == null) {
finish()
@@ -342,7 +350,10 @@ class EntryEditActivity : LockingHideActivity(),
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putParcelable(KEY_NEW_ENTRY, mNewEntry)
mNewEntry?.let {
populateEntryWithViews(it)
outState.putParcelable(KEY_NEW_ENTRY, it)
}
super.onSaveInstanceState(outState)
}

View File

@@ -17,6 +17,7 @@ import com.kunzisoft.keepass.icons.IconDrawableFactory
import com.kunzisoft.keepass.icons.assignDatabaseIcon
import com.kunzisoft.keepass.icons.assignDefaultDatabaseIcon
import com.kunzisoft.keepass.model.Field
import java.util.HashMap
class EntryEditContentsView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
@@ -167,11 +168,14 @@ class EntryEditContentsView @JvmOverloads constructor(context: Context,
/**
* Add a new view to fill in the information of the customized field
*/
fun addNewCustomField(name: String = "", value:ProtectedString = ProtectedString(false, "")) {
val entryEditCustomField = EntryEditCustomField(context)
entryEditCustomField.setData(name, value)
entryEditCustomField.setFontVisibility(fontInVisibility)
entryExtraFieldsContainer.addView(entryEditCustomField)
fun addNewCustomField(name: String = "", value: ProtectedString = ProtectedString(false, "")) {
val entryEditCustomField = EntryEditCustomField(context).apply {
setData(name, value)
setFontVisibility(fontInVisibility)
}
entryExtraFieldsContainer.post {
entryExtraFieldsContainer.addView(entryEditCustomField)
}
}
/**