diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 659e668f0..f468d050c 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -21,6 +21,7 @@ package org.linphone.ui.main import android.Manifest import android.annotation.SuppressLint +import android.app.Dialog import android.content.Context import android.content.Intent import android.content.pm.PackageManager @@ -85,6 +86,8 @@ class MainActivity : GenericActivity() { private lateinit var sharedViewModel: SharedMainViewModel + private var currentlyDisplayedAuthDialog: Dialog? = null + override fun onCreate(savedInstanceState: Bundle?) { // Must be done before the setContentView installSplashScreen() @@ -217,6 +220,9 @@ class MainActivity : GenericActivity() { } override fun onPause() { + currentlyDisplayedAuthDialog?.dismiss() + currentlyDisplayedAuthDialog = null + val defaultFragmentId = when (sharedViewModel.currentlyDisplayedFragment.value) { R.id.contactsListFragment -> { CONTACTS_FRAGMENT_ID @@ -625,6 +631,8 @@ class MainActivity : GenericActivity() { } private fun showAuthenticationRequestedDialog(identity: String) { + currentlyDisplayedAuthDialog?.dismiss() + val model = AuthRequestedDialogModel(identity) val dialog = DialogUtils.getAuthRequestedDialog(this, model) @@ -642,5 +650,6 @@ class MainActivity : GenericActivity() { } dialog.show() + currentlyDisplayedAuthDialog = dialog } } diff --git a/app/src/main/java/org/linphone/ui/main/fragment/AuthRequestedDialogModel.kt b/app/src/main/java/org/linphone/ui/main/fragment/AuthRequestedDialogModel.kt index 276ae57b4..38bc1509e 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/AuthRequestedDialogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/AuthRequestedDialogModel.kt @@ -30,17 +30,25 @@ class AuthRequestedDialogModel @UiThread constructor(identity: String) { val password = MutableLiveData() + val showPassword = MutableLiveData() + val dismissEvent = MutableLiveData>() val confirmEvent = MutableLiveData>() init { + showPassword.value = false message.value = AppUtils.getFormattedString( R.string.dialog_account_invalid_password_message, identity ) } + @UiThread + fun toggleShowPassword() { + showPassword.value = showPassword.value == false + } + @UiThread fun dismiss() { dismissEvent.value = Event(true) diff --git a/app/src/main/java/org/linphone/utils/DialogUtils.kt b/app/src/main/java/org/linphone/utils/DialogUtils.kt index 7a99d7f6c..9d288cb49 100644 --- a/app/src/main/java/org/linphone/utils/DialogUtils.kt +++ b/app/src/main/java/org/linphone/utils/DialogUtils.kt @@ -30,6 +30,7 @@ import android.view.WindowManager import androidx.annotation.UiThread import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding +import androidx.lifecycle.LifecycleOwner import org.linphone.R import org.linphone.databinding.DialogAccountModesExplanationBinding import org.linphone.databinding.DialogAssistantAcceptConditionsAndPolicyBinding @@ -315,6 +316,7 @@ class DialogUtils { false ) binding.viewModel = viewModel + binding.lifecycleOwner = context as LifecycleOwner return getDialog(context, binding) } diff --git a/app/src/main/res/layout/dialog_update_account_password.xml b/app/src/main/res/layout/dialog_update_account_password.xml index 08644bd4b..8ee9ad01a 100644 --- a/app/src/main/res/layout/dialog_update_account_password.xml +++ b/app/src/main/res/layout/dialog_update_account_password.xml @@ -6,6 +6,7 @@ + @@ -76,7 +77,7 @@ android:textColor="?attr/color_main2_600" android:maxLines="1" android:background="@drawable/edit_text_background" - android:inputType="text|textCapSentences" + android:inputType="@{viewModel.showPassword ? InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD, default=textPassword}" app:layout_constraintHorizontal_bias="0" app:layout_constraintWidth_max="@dimen/text_input_max_width" app:layout_constraintBottom_toTopOf="@id/cancel" @@ -84,6 +85,19 @@ app:layout_constraintEnd_toEndOf="@id/dialog_background" app:layout_constraintTop_toBottomOf="@id/message"/> + +