mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Added confirmation dialog when going back during new/edit contact
This commit is contained in:
parent
838f9f592c
commit
4ac78c5b30
7 changed files with 208 additions and 8 deletions
|
|
@ -40,7 +40,7 @@ import org.linphone.databinding.CallsListFragmentBinding
|
|||
import org.linphone.databinding.CallsListPopupMenuBinding
|
||||
import org.linphone.ui.main.MainActivity
|
||||
import org.linphone.ui.main.calls.adapter.CallsListAdapter
|
||||
import org.linphone.ui.main.calls.model.RemoveAllCallLogsDialogModel
|
||||
import org.linphone.ui.main.calls.model.ConfirmationDialogModel
|
||||
import org.linphone.ui.main.calls.viewmodel.CallsListViewModel
|
||||
import org.linphone.ui.main.fragment.GenericFragment
|
||||
import org.linphone.utils.DialogUtils
|
||||
|
|
@ -179,7 +179,7 @@ class CallsListFragment : GenericFragment() {
|
|||
)
|
||||
|
||||
popupView.setDeleteAllHistoryClickListener {
|
||||
val model = RemoveAllCallLogsDialogModel()
|
||||
val model = ConfirmationDialogModel()
|
||||
val dialog = DialogUtils.getRemoveAllCallLogsConfirmationDialog(
|
||||
requireActivity(),
|
||||
model
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ package org.linphone.ui.main.calls.model
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class RemoveAllCallLogsDialogModel() {
|
||||
class ConfirmationDialogModel() {
|
||||
val dismissEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val confirmRemovalEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
|
@ -38,9 +38,11 @@ import org.linphone.R
|
|||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ContactNewOrEditFragmentBinding
|
||||
import org.linphone.ui.main.MainActivity
|
||||
import org.linphone.ui.main.calls.model.ConfirmationDialogModel
|
||||
import org.linphone.ui.main.contacts.model.NewOrEditNumberOrAddressModel
|
||||
import org.linphone.ui.main.contacts.viewmodel.ContactNewOrEditViewModel
|
||||
import org.linphone.ui.main.fragment.GenericFragment
|
||||
import org.linphone.utils.DialogUtils
|
||||
import org.linphone.utils.FileUtils
|
||||
|
||||
class EditContactFragment : GenericFragment() {
|
||||
|
|
@ -101,7 +103,26 @@ class EditContactFragment : GenericFragment() {
|
|||
viewModel.findFriendByRefKey(refKey)
|
||||
|
||||
binding.setCancelClickListener {
|
||||
goBack()
|
||||
val model = ConfirmationDialogModel()
|
||||
val dialog = DialogUtils.getCancelContactChangesConfirmationDialog(
|
||||
requireActivity(),
|
||||
model
|
||||
)
|
||||
|
||||
model.dismissEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
model.confirmRemovalEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
goBack()
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
binding.setPickImageClickListener {
|
||||
|
|
|
|||
|
|
@ -37,9 +37,11 @@ import org.linphone.R
|
|||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ContactNewOrEditFragmentBinding
|
||||
import org.linphone.ui.main.MainActivity
|
||||
import org.linphone.ui.main.calls.model.ConfirmationDialogModel
|
||||
import org.linphone.ui.main.contacts.model.NewOrEditNumberOrAddressModel
|
||||
import org.linphone.ui.main.contacts.viewmodel.ContactNewOrEditViewModel
|
||||
import org.linphone.ui.main.fragment.GenericFragment
|
||||
import org.linphone.utils.DialogUtils
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.FileUtils
|
||||
|
||||
|
|
@ -95,7 +97,26 @@ class NewContactFragment : GenericFragment() {
|
|||
viewModel.findFriendByRefKey("")
|
||||
|
||||
binding.setCancelClickListener {
|
||||
goBack()
|
||||
val model = ConfirmationDialogModel()
|
||||
val dialog = DialogUtils.getCancelContactChangesConfirmationDialog(
|
||||
requireActivity(),
|
||||
model
|
||||
)
|
||||
|
||||
model.dismissEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
model.confirmRemovalEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
goBack()
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
binding.setPickImageClickListener {
|
||||
|
|
|
|||
|
|
@ -29,10 +29,11 @@ import android.view.WindowManager
|
|||
import androidx.core.content.ContextCompat
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import org.linphone.R
|
||||
import org.linphone.databinding.DialogCancelContactChangesBinding
|
||||
import org.linphone.databinding.DialogConfirmZrtpSasBinding
|
||||
import org.linphone.databinding.DialogPickNumberOrAddressBinding
|
||||
import org.linphone.databinding.DialogRemoveAllCallLogsBinding
|
||||
import org.linphone.ui.main.calls.model.RemoveAllCallLogsDialogModel
|
||||
import org.linphone.ui.main.calls.model.ConfirmationDialogModel
|
||||
import org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel
|
||||
import org.linphone.ui.voip.model.ZrtpSasConfirmationDialogModel
|
||||
|
||||
|
|
@ -66,9 +67,10 @@ class DialogUtils {
|
|||
dialog.window?.setBackgroundDrawable(d)
|
||||
return dialog
|
||||
}
|
||||
|
||||
fun getRemoveAllCallLogsConfirmationDialog(
|
||||
context: Context,
|
||||
model: RemoveAllCallLogsDialogModel
|
||||
model: ConfirmationDialogModel
|
||||
): Dialog {
|
||||
val dialog = Dialog(context, R.style.Theme_LinphoneDialog)
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||
|
|
@ -95,6 +97,35 @@ class DialogUtils {
|
|||
return dialog
|
||||
}
|
||||
|
||||
fun getCancelContactChangesConfirmationDialog(
|
||||
context: Context,
|
||||
model: ConfirmationDialogModel
|
||||
): Dialog {
|
||||
val dialog = Dialog(context, R.style.Theme_LinphoneDialog)
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||
|
||||
val binding: DialogCancelContactChangesBinding = DataBindingUtil.inflate(
|
||||
LayoutInflater.from(context),
|
||||
R.layout.dialog_cancel_contact_changes,
|
||||
null,
|
||||
false
|
||||
)
|
||||
binding.viewModel = model
|
||||
dialog.setContentView(binding.root)
|
||||
|
||||
val d: Drawable = ColorDrawable(
|
||||
ContextCompat.getColor(dialog.context, R.color.dialog_background)
|
||||
)
|
||||
d.alpha = 166
|
||||
dialog.window
|
||||
?.setLayout(
|
||||
WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
dialog.window?.setBackgroundDrawable(d)
|
||||
return dialog
|
||||
}
|
||||
|
||||
fun getZrtpSasConfirmationDialog(
|
||||
context: Context,
|
||||
viewModel: ZrtpSasConfirmationDialogModel
|
||||
|
|
|
|||
127
app/src/main/res/layout/dialog_cancel_contact_changes.xml
Normal file
127
app/src/main/res/layout/dialog_cancel_contact_changes.xml
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<import type="android.graphics.Typeface" />
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.ui.main.calls.model.ConfirmationDialogModel" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:onClick="@{() -> viewModel.dismiss()}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialog_background_shadow"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:src="@drawable/shape_dialog_orange_shadow"
|
||||
app:layout_constraintBottom_toBottomOf="@id/anchor"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintTop_toTopOf="@id/dialog_background" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialog_background"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:layout_marginBottom="2dp"
|
||||
android:src="@drawable/shape_dialog_background"
|
||||
app:layout_constraintBottom_toBottomOf="@id/anchor"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:paddingTop="25dp"
|
||||
android:text="Don't save changes?"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintBottom_toTopOf="@id/message"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/message"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="All changes will be lost"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintBottom_toTopOf="@id/cancel"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:onClick="@{() -> viewModel.dismiss()}"
|
||||
style="@style/default_text_style_600"
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:paddingBottom="13dp"
|
||||
android:paddingTop="13dp"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
android:text="Cancel"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintBottom_toTopOf="@id/confirm"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:onClick="@{() -> viewModel.confirmRemoval()}"
|
||||
style="@style/default_text_style_600"
|
||||
android:id="@+id/confirm"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:paddingBottom="13dp"
|
||||
android:paddingTop="13dp"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/primary_button_background"
|
||||
android:text="Ok"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/primary_button_label_color"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintTop_toBottomOf="@id/cancel"
|
||||
app:layout_constraintBottom_toTopOf="@id/anchor"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/anchor"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="20dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/confirm"
|
||||
app:layout_constraintStart_toStartOf="@id/dialog_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/dialog_background"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
<import type="android.graphics.Typeface" />
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.ui.main.calls.model.RemoveAllCallLogsDialogModel" />
|
||||
type="org.linphone.ui.main.calls.model.ConfirmationDialogModel" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue