From 6c757a9637d682c98081b2ea5d77cd0e7b4a40f7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 15 Jul 2024 11:26:58 +0200 Subject: [PATCH] Finished contact trust explanation dialog --- .../main/contacts/fragment/ContactFragment.kt | 6 +- .../contacts/model/ContactTrustDialogModel.kt | 41 ++++++++++++++ .../org/linphone/utils/DataBindingUtils.kt | 2 +- .../java/org/linphone/utils/DialogUtils.kt | 8 ++- app/src/main/res/drawable/arrow_right.xml | 9 +++ .../layout/dialog_contact_trust_process.xml | 55 +++++++++++++++++-- app/src/main/res/values-fr/strings.xml | 4 +- app/src/main/res/values/strings.xml | 4 +- 8 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/org/linphone/ui/main/contacts/model/ContactTrustDialogModel.kt create mode 100644 app/src/main/res/drawable/arrow_right.xml diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt index efcfb2b6b..64918e7f3 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt @@ -45,6 +45,7 @@ import org.linphone.core.Factory import org.linphone.core.tools.Log import org.linphone.databinding.ContactFragmentBinding import org.linphone.ui.GenericActivity +import org.linphone.ui.main.contacts.model.ContactTrustDialogModel import org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel import org.linphone.ui.main.contacts.model.TrustCallDialogModel import org.linphone.ui.main.contacts.viewmodel.ContactViewModel @@ -297,7 +298,10 @@ class ContactFragment : SlidingPaneChildFragment() { } private fun showTrustProcessDialog() { - val dialog = DialogUtils.getContactTrustProcessExplanationDialog(requireActivity()) + val initials = viewModel.contact.value?.initials?.value ?: "JD" + val picture = viewModel.contact.value?.picturePath?.value.orEmpty() + val model = ContactTrustDialogModel(initials, picture) + val dialog = DialogUtils.getContactTrustProcessExplanationDialog(requireActivity(), model) dialog.show() } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/model/ContactTrustDialogModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactTrustDialogModel.kt new file mode 100644 index 000000000..4894a2cb2 --- /dev/null +++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactTrustDialogModel.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010-2024 Belledonne Communications SARL. + * + * This file is part of linphone-android + * (see https://www.linphone.org). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.linphone.ui.main.contacts.model + +import androidx.annotation.UiThread +import org.linphone.contacts.AbstractAvatarModel +import org.linphone.core.SecurityLevel + +@UiThread +class ContactTrustDialogModel(initials: String, picturePath: String) { + val avatarModel = FakeAvatarModel(initials, picturePath, false) + + val trustedAvatarModel = FakeAvatarModel(initials, picturePath, true) + + @UiThread + class FakeAvatarModel(contactInitials: String, contactPicturePath: String, trusted: Boolean) : AbstractAvatarModel() { + init { + initials.value = contactInitials + picturePath.value = contactPicturePath + showTrust.value = trusted + trust.value = SecurityLevel.EndToEndEncryptedAndVerified + } + } +} diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index a1a347501..f86e19644 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -425,7 +425,7 @@ private fun loadContactPictureWithCoil( } val image = model.picturePath.value.orEmpty() - if (image != null) { + if (image.isNotEmpty()) { imageView.load(image) { transformations(CircleCropTransformation()) listener( diff --git a/app/src/main/java/org/linphone/utils/DialogUtils.kt b/app/src/main/java/org/linphone/utils/DialogUtils.kt index 2ba5b061e..8c3db92d6 100644 --- a/app/src/main/java/org/linphone/utils/DialogUtils.kt +++ b/app/src/main/java/org/linphone/utils/DialogUtils.kt @@ -58,6 +58,7 @@ import org.linphone.ui.assistant.model.AcceptConditionsAndPolicyDialogModel import org.linphone.ui.assistant.model.ConfirmPhoneNumberDialogModel import org.linphone.ui.call.model.ZrtpAlertDialogModel import org.linphone.ui.call.model.ZrtpSasConfirmationDialogModel +import org.linphone.ui.main.contacts.model.ContactTrustDialogModel import org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel import org.linphone.ui.main.contacts.model.TrustCallDialogModel import org.linphone.ui.main.fragment.AuthRequestedDialogModel @@ -170,13 +171,18 @@ class DialogUtils { } @UiThread - fun getContactTrustProcessExplanationDialog(context: Context): Dialog { + fun getContactTrustProcessExplanationDialog( + context: Context, + viewModel: ContactTrustDialogModel + ): Dialog { val binding: DialogContactTrustProcessBinding = DataBindingUtil.inflate( LayoutInflater.from(context), R.layout.dialog_contact_trust_process, null, false ) + binding.viewModel = viewModel + val dialog = getDialog(context, binding) binding.setDismissClickListener { diff --git a/app/src/main/res/drawable/arrow_right.xml b/app/src/main/res/drawable/arrow_right.xml new file mode 100644 index 000000000..8ca53f6db --- /dev/null +++ b/app/src/main/res/drawable/arrow_right.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_contact_trust_process.xml b/app/src/main/res/layout/dialog_contact_trust_process.xml index 723a8f92b..dfc782618 100644 --- a/app/src/main/res/layout/dialog_contact_trust_process.xml +++ b/app/src/main/res/layout/dialog_contact_trust_process.xml @@ -1,13 +1,16 @@ - + + + + + + + + Augmenter le niveau de confiance Vous êtes sur le point de passer un appel vers l\'appareil $2%s\ de $1%s.\Voulez-vous démarrer l\'appel ? - What does it mean? - Blah blah blah + Niveau de confiance + Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission.\nQuand tous seront vérifiés, vous atteindrez le niveau de confiance maximal. Supprimer %s ? Ce contact sera définitivement supprimé. Choisissez un numéro ou adresse SIP diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 643cf0de1..bdd1caa7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -402,8 +402,8 @@ Increase trust level You\'re about to make a call to $1%s\'s device $2%s.\nDo you want to make the call? - What does it mean? - Blah blah blah + Trust level + Check all of your contact devices to make sure your communications will be secured an unaltered.\nWhen all will be verified, you\'ll reach maximum trust level. Delete %s? This contact will be definitively removed. Choose a number or a SIP address