Skip to content
Snippets Groups Projects
Unverified Commit 40e3686f authored by Matthias Urhahn's avatar Matthias Urhahn Committed by GitHub
Browse files

Add option to clear text fields when adding/editing persons/locations (DEV) #2454

parent 4141f6ce
No related branches found
No related tags found
No related merge requests found
......@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.contactdiary.util.hideKeyboard
import de.rki.coronawarnapp.databinding.ContactDiaryAddLocationFragmentBinding
import de.rki.coronawarnapp.util.DialogHelper
import de.rki.coronawarnapp.util.di.AutoInject
import de.rki.coronawarnapp.util.setTextOnTextInput
import de.rki.coronawarnapp.util.ui.observe2
import de.rki.coronawarnapp.util.ui.popBackStack
import de.rki.coronawarnapp.util.ui.viewBindingLazy
......@@ -40,52 +41,52 @@ class ContactDiaryAddLocationFragment : Fragment(R.layout.contact_diary_add_loca
val location = navArgs.selectedLocation
if (location != null) {
binding.apply {
contactDiaryAddLocationNameInputEditText.setText(location.locationName)
contactDiaryAddLocationPhoneInputEditText.setText(location.phoneNumber)
contactDiaryAddLocationEmailInputEditText.setText(location.emailAddress)
contactDiaryAddLocationDeleteButton.visibility = View.VISIBLE
contactDiaryAddLocationDeleteButton.setOnClickListener {
locationNameInputEdit.setText(location.locationName)
locationPhoneInput.setTextOnTextInput(location.phoneNumber, endIconVisible = false)
locationEmailInput.setTextOnTextInput(location.emailAddress, endIconVisible = false)
locationDeleteButton.visibility = View.VISIBLE
locationDeleteButton.setOnClickListener {
DialogHelper.showDialog(deleteLocationConfirmationDialog)
}
contactDiaryAddLocationSaveButton.setOnClickListener {
locationSaveButton.setOnClickListener {
it.hideKeyboard()
viewModel.updateLocation(
location,
phoneNumber = binding.contactDiaryAddLocationPhoneInputEditText.text.toString().trim(),
emailAddress = binding.contactDiaryAddLocationEmailInputEditText.text.toString().trim()
phoneNumber = binding.locationPhoneInput.text.toString().trim(),
emailAddress = binding.locationEmailInput.text.toString().trim()
)
}
}
viewModel.locationChanged(location.locationName)
} else {
binding.apply {
contactDiaryAddLocationDeleteButton.visibility = View.GONE
contactDiaryAddLocationSaveButton.setOnClickListener {
locationDeleteButton.visibility = View.GONE
locationSaveButton.setOnClickListener {
it.hideKeyboard()
viewModel.addLocation(
phoneNumber = binding.contactDiaryAddLocationPhoneInputEditText.text.toString().trim(),
emailAddress = binding.contactDiaryAddLocationEmailInputEditText.text.toString().trim()
phoneNumber = binding.locationPhoneInput.text.toString().trim(),
emailAddress = binding.locationEmailInput.text.toString().trim()
)
}
}
}
binding.apply {
contactDiaryAddLocationNameInputEditText.focusAndShowKeyboard()
locationNameInputEdit.focusAndShowKeyboard()
contactDiaryAddLocationCloseButton.setOnClickListener {
locationCloseButton.setOnClickListener {
it.hideKeyboard()
viewModel.closePressed()
}
contactDiaryAddLocationNameInputEditText.doAfterTextChanged {
locationNameInputEdit.doAfterTextChanged {
viewModel.locationChanged(it.toString())
}
contactDiaryAddLocationEmailInputEditText.setOnEditorActionListener { _, actionId, _ ->
locationEmailInput.setOnEditorActionListener { _, actionId, _ ->
return@setOnEditorActionListener when (actionId) {
EditorInfo.IME_ACTION_DONE -> {
if (viewModel.isValid.value == true) {
binding.contactDiaryAddLocationSaveButton.performClick()
binding.locationSaveButton.performClick()
}
false
}
......@@ -99,7 +100,7 @@ class ContactDiaryAddLocationFragment : Fragment(R.layout.contact_diary_add_loca
}
viewModel.isValid.observe2(this) {
binding.contactDiaryAddLocationSaveButton.isEnabled = it
binding.locationSaveButton.isEnabled = it
}
}
......
......@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.contactdiary.util.hideKeyboard
import de.rki.coronawarnapp.databinding.ContactDiaryAddPersonFragmentBinding
import de.rki.coronawarnapp.util.DialogHelper
import de.rki.coronawarnapp.util.di.AutoInject
import de.rki.coronawarnapp.util.setTextOnTextInput
import de.rki.coronawarnapp.util.ui.observe2
import de.rki.coronawarnapp.util.ui.popBackStack
import de.rki.coronawarnapp.util.ui.viewBindingLazy
......@@ -42,50 +43,50 @@ class ContactDiaryAddPersonFragment :
val person = navArgs.selectedPerson
if (person != null) {
binding.apply {
contactDiaryPersonNameEditText.setText(person.fullName)
contactDiaryPersonPhoneNumberEditText.setText(person.phoneNumber)
contactDiaryPersonEmailEditText.setText(person.emailAddress)
contactDiaryPersonDeleteButton.visibility = View.VISIBLE
contactDiaryPersonDeleteButton.setOnClickListener {
personNameInput.setText(person.fullName)
personPhoneNumberInput.setTextOnTextInput(person.phoneNumber, endIconVisible = false)
personEmailInput.setTextOnTextInput(person.emailAddress, endIconVisible = false)
personDeleteButton.visibility = View.VISIBLE
personDeleteButton.setOnClickListener {
DialogHelper.showDialog(deletePersonConfirmationDialog)
}
contactDiaryPersonSaveButton.setOnClickListener {
personSaveButton.setOnClickListener {
it.hideKeyboard()
viewModel.updatePerson(
person,
phoneNumber = binding.contactDiaryPersonPhoneNumberEditText.text.toString().trim(),
emailAddress = binding.contactDiaryPersonEmailEditText.text.toString().trim()
phoneNumber = binding.personPhoneNumberInput.text.toString().trim(),
emailAddress = binding.personEmailInput.text.toString().trim()
)
}
}
viewModel.nameChanged(person.fullName)
} else {
binding.contactDiaryPersonDeleteButton.visibility = View.GONE
binding.contactDiaryPersonSaveButton.setOnClickListener {
binding.personDeleteButton.visibility = View.GONE
binding.personSaveButton.setOnClickListener {
it.hideKeyboard()
viewModel.addPerson(
phoneNumber = binding.contactDiaryPersonPhoneNumberEditText.text.toString().trim(),
emailAddress = binding.contactDiaryPersonEmailEditText.text.toString().trim()
phoneNumber = binding.personPhoneNumberInput.text.toString().trim(),
emailAddress = binding.personEmailInput.text.toString().trim()
)
}
}
binding.apply {
contactDiaryPersonNameEditText.focusAndShowKeyboard()
personNameInput.focusAndShowKeyboard()
contactDiaryPersonCloseButton.setOnClickListener {
personCloseButton.setOnClickListener {
it.hideKeyboard()
viewModel.closePressed()
}
contactDiaryPersonNameEditText.doAfterTextChanged {
personNameInput.doAfterTextChanged {
viewModel.nameChanged(it.toString())
}
contactDiaryPersonEmailEditText.setOnEditorActionListener { _, actionId, _ ->
personEmailInput.setOnEditorActionListener { _, actionId, _ ->
return@setOnEditorActionListener when (actionId) {
IME_ACTION_DONE -> {
if (viewModel.isNameValid.value == true) {
binding.contactDiaryPersonSaveButton.performClick()
binding.personSaveButton.performClick()
}
false
}
......@@ -99,7 +100,7 @@ class ContactDiaryAddPersonFragment :
}
viewModel.isNameValid.observe2(this) { isValid ->
binding.contactDiaryPersonSaveButton.isEnabled = isValid
binding.personSaveButton.isEnabled = isValid
}
}
......
package de.rki.coronawarnapp.util
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
fun TextInputEditText.setTextOnTextInput(
text: String?,
endIconVisible: Boolean = true
) {
this.setText(text)
(parent?.parent as? TextInputLayout)?.isEndIconVisible = endIconVisible
}
......@@ -9,7 +9,7 @@
android:layout_height="wrap_content">
<ImageView
android:id="@+id/contact_diary_add_location_close_button"
android:id="@+id/location_close_button"
style="@style/buttonIcon"
android:layout_width="@dimen/button_icon"
android:layout_height="@dimen/button_icon"
......@@ -22,19 +22,19 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/contact_diary_add_location_title"
android:id="@+id/location_title"
style="@style/headline6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_normal"
android:text="@string/contact_diary_add_location_title"
app:layout_constraintBottom_toBottomOf="@id/contact_diary_add_location_close_button"
app:layout_constraintEnd_toStartOf="@id/contact_diary_add_location_delete_button"
app:layout_constraintStart_toEndOf="@id/contact_diary_add_location_close_button"
app:layout_constraintTop_toTopOf="@id/contact_diary_add_location_close_button" />
app:layout_constraintBottom_toBottomOf="@id/location_close_button"
app:layout_constraintEnd_toStartOf="@id/location_delete_button"
app:layout_constraintStart_toEndOf="@id/location_close_button"
app:layout_constraintTop_toTopOf="@id/location_close_button" />
<ImageView
android:id="@+id/contact_diary_add_location_delete_button"
android:id="@+id/location_delete_button"
style="@style/buttonIcon"
android:layout_width="@dimen/button_icon"
android:layout_height="@dimen/button_icon"
......@@ -47,19 +47,20 @@
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_add_location_name_input_layout"
android:id="@+id/location_name_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_small"
android:hint="@string/contact_diary_add_location_text_input_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_diary_add_location_close_button">
app:layout_constraintTop_toBottomOf="@id/location_close_button">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_add_location_name_input_edit_text"
android:id="@+id/location_name_input_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
......@@ -68,19 +69,20 @@
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_add_location_phone_input_layout"
android:id="@+id/location_phone_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_tiny"
android:hint="@string/contact_diary_add_text_input_phone_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_diary_add_location_name_input_layout">
app:layout_constraintTop_toBottomOf="@id/location_name_input_layout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_add_location_phone_input_edit_text"
android:id="@+id/location_phone_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
......@@ -89,19 +91,20 @@
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_add_location_email_input_layout"
android:id="@+id/location_email_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_tiny"
android:hint="@string/contact_diary_add_text_input_email_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_diary_add_location_phone_input_layout">
app:layout_constraintTop_toBottomOf="@id/location_phone_input_layout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_add_location_email_input_edit_text"
android:id="@+id/location_email_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
......@@ -110,7 +113,7 @@
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/contact_diary_add_location_save_button"
android:id="@+id/location_save_button"
style="@style/buttonPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
......@@ -122,7 +125,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.166"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/contact_diary_add_location_email_input_layout"
app:layout_constraintTop_toBottomOf="@+id/location_email_input_layout"
app:layout_constraintVertical_bias="1.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
......
......@@ -9,7 +9,7 @@
android:layout_height="wrap_content">
<ImageView
android:id="@+id/contact_diary_person_close_button"
android:id="@+id/person_close_button"
style="@style/buttonIcon"
android:layout_width="@dimen/button_icon"
android:layout_height="@dimen/button_icon"
......@@ -28,12 +28,12 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_normal"
android:text="@string/contact_diary_add_person_title"
app:layout_constraintBottom_toBottomOf="@+id/contact_diary_person_close_button"
app:layout_constraintStart_toEndOf="@+id/contact_diary_person_close_button"
app:layout_constraintTop_toTopOf="@+id/contact_diary_person_close_button" />
app:layout_constraintBottom_toBottomOf="@+id/person_close_button"
app:layout_constraintStart_toEndOf="@+id/person_close_button"
app:layout_constraintTop_toTopOf="@+id/person_close_button" />
<ImageView
android:id="@+id/contact_diary_person_delete_button"
android:id="@+id/person_delete_button"
style="@style/buttonIcon"
android:layout_width="@dimen/button_icon"
android:layout_height="@dimen/button_icon"
......@@ -46,19 +46,20 @@
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_person_name_input_layout"
android:id="@+id/person_name_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_small"
android:hint="@string/contact_diary_add_person_text_input_name_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/contact_diary_person_close_button">
app:layout_constraintTop_toBottomOf="@+id/person_close_button">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_person_name_edit_text"
android:id="@+id/person_name_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
......@@ -67,19 +68,20 @@
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_person_phone_input_layout"
android:id="@+id/person_phone_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_tiny"
android:hint="@string/contact_diary_add_text_input_phone_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/contact_diary_person_name_input_layout">
app:layout_constraintTop_toBottomOf="@+id/person_name_input_layout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_person_phone_number_edit_text"
android:id="@+id/person_phone_number_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
......@@ -88,7 +90,7 @@
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/contact_diary_person_email_input_layout"
android:id="@+id/person_email_input_layout"
style="@style/TextInputLayoutTheme"
android:layout_width="0dp"
android:layout_height="wrap_content"
......@@ -96,12 +98,13 @@
android:layout_marginTop="@dimen/spacing_tiny"
android:layout_marginBottom="@dimen/spacing_small"
android:hint="@string/contact_diary_add_text_input_email_hint"
app:endIconMode="clear_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/contact_diary_person_phone_input_layout">
app:layout_constraintTop_toBottomOf="@+id/person_phone_input_layout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/contact_diary_person_email_edit_text"
android:id="@+id/person_email_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
......@@ -110,7 +113,7 @@
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/contact_diary_person_save_button"
android:id="@+id/person_save_button"
style="@style/buttonPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
......@@ -122,7 +125,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.333"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_diary_person_email_input_layout"
app:layout_constraintTop_toBottomOf="@id/person_email_input_layout"
app:layout_constraintVertical_bias="1.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment