From 8ebda198c6bbe84a0e01d75625ed34334421a6f2 Mon Sep 17 00:00:00 2001 From: Nite Date: Mon, 2 Nov 2020 17:13:38 +0100 Subject: [PATCH] Fixed Server Settings screen to keep entered data when rotating the screen --- .../ultrasonic/activity/EditServerActivity.kt | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/EditServerActivity.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/EditServerActivity.kt index 6540fff8..7641afe3 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/EditServerActivity.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/EditServerActivity.kt @@ -53,6 +53,7 @@ internal class EditServerActivity : AppCompatActivity() { private var jukeboxSwitch: SwitchMaterial? = null private var saveButton: Button? = null private var testButton: Button? = null + private var isInstanceStateSaved: Boolean = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -83,7 +84,7 @@ internal class EditServerActivity : AppCompatActivity() { Observer { t -> if (t != null) { currentServerSetting = t - setFields() + if (!isInstanceStateSaved) setFields() // Remove the minimum API version so it can be detected again if (currentServerSetting?.minimumApiVersion != null) { currentServerSetting!!.minimumApiVersion = null @@ -132,6 +133,56 @@ internal class EditServerActivity : AppCompatActivity() { } } + override fun onSaveInstanceState(savedInstanceState: Bundle) { + savedInstanceState.putString( + ::serverNameEditText.name, serverNameEditText!!.editText?.text.toString() + ) + savedInstanceState.putString( + ::serverAddressEditText.name, serverAddressEditText!!.editText?.text.toString() + ) + savedInstanceState.putString( + ::userNameEditText.name, userNameEditText!!.editText?.text.toString() + ) + savedInstanceState.putString( + ::passwordEditText.name, passwordEditText!!.editText?.text.toString() + ) + savedInstanceState.putBoolean( + ::selfSignedSwitch.name, selfSignedSwitch!!.isChecked + ) + savedInstanceState.putBoolean( + ::ldapSwitch.name, ldapSwitch!!.isChecked + ) + savedInstanceState.putBoolean( + ::jukeboxSwitch.name, jukeboxSwitch!!.isChecked + ) + savedInstanceState.putBoolean( + ::isInstanceStateSaved.name, true + ) + + super.onSaveInstanceState(savedInstanceState) + } + + override fun onRestoreInstanceState(savedInstanceState: Bundle) { + super.onRestoreInstanceState(savedInstanceState) + + serverNameEditText!!.editText?.setText( + savedInstanceState.getString(::serverNameEditText.name) + ) + serverAddressEditText!!.editText?.setText( + savedInstanceState.getString(::serverAddressEditText.name) + ) + userNameEditText!!.editText?.setText( + savedInstanceState.getString(::userNameEditText.name) + ) + passwordEditText!!.editText?.setText( + savedInstanceState.getString(::passwordEditText.name) + ) + selfSignedSwitch!!.isChecked = savedInstanceState.getBoolean(::selfSignedSwitch.name) + ldapSwitch!!.isChecked = savedInstanceState.getBoolean(::ldapSwitch.name) + jukeboxSwitch!!.isChecked = savedInstanceState.getBoolean(::jukeboxSwitch.name) + isInstanceStateSaved = savedInstanceState.getBoolean(::isInstanceStateSaved.name) + } + override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == android.R.id.home) { finishActivity()