From 95401fb8c4896a7e9d9ce03e2d04dc1f6dcd0979 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 27 Sep 2023 16:17:00 +0200 Subject: [PATCH] Added edit/remove contact/account picture --- .../contacts/fragment/EditContactFragment.kt | 4 ++ .../contacts/fragment/NewContactFragment.kt | 4 ++ .../viewmodel/ContactNewOrEditViewModel.kt | 7 ++- .../fragment/AccountProfileFragment.kt | 4 ++ .../viewmodel/AccountProfileViewModel.kt | 3 + .../res/layout/account_profile_fragment.xml | 62 +++++++++++++++---- .../layout/contact_new_or_edit_fragment.xml | 50 ++++++++++++++- app/src/main/res/values/strings.xml | 1 + 8 files changed, 120 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt index 693e8d881..588491eb9 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/EditContactFragment.kt @@ -139,6 +139,10 @@ class EditContactFragment : GenericFragment() { pickImage() } + binding.setDeleteImageClickListener { + viewModel.picturePath.value = "" + } + viewModel.saveChangesEvent.observe(viewLifecycleOwner) { it.consume { refKey -> if (refKey.isNotEmpty()) { diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt index b6c64e61a..4e00e3ce0 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt @@ -126,6 +126,10 @@ class NewContactFragment : GenericFragment() { pickImage() } + binding.setDeleteImageClickListener { + viewModel.picturePath.value = "" + } + viewModel.saveChangesEvent.observe(viewLifecycleOwner) { it.consume { refKey -> if (refKey.isNotEmpty()) { diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt index 89dd767da..eb5963990 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt @@ -102,7 +102,10 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() { // TODO ? What to do when vCard is null } - picturePath.postValue(friend.photo) + val photo = friend.photo.orEmpty() + if (photo.isNotEmpty()) { + picturePath.postValue(photo) + } for (address in friend.addresses) { addSipAddress(address.asStringUriOnly()) @@ -146,6 +149,8 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() { val picture = picturePath.value.orEmpty() if (picture.isNotEmpty()) { friend.photo = FileUtils.getProperFilePath(picture) + } else { + friend.photo = null } } diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt index 5b51bb473..77e8f077a 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileFragment.kt @@ -83,6 +83,10 @@ class AccountProfileFragment : GenericFragment() { pickImage() } + binding.setDeleteImageClickListener { + viewModel.setNewPicturePath("") + } + binding.setChangeModeClickListener { val action = AccountProfileFragmentDirections.actionAccountProfileFragmentToAccountProfileModeFragment() findNavController().navigate(action) diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt index 81fa014f1..1ced18665 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt @@ -133,6 +133,9 @@ class AccountProfileViewModel @UiThread constructor() : ViewModel() { if (path.isNotEmpty() && path != params.pictureUri) { Log.i("$TAG New account profile picture [$path]") copy.pictureUri = path + } else { + Log.i("$TAG Account profile picture removed") + copy.pictureUri = null } accountModel.value?.avatar?.postValue(path) diff --git a/app/src/main/res/layout/account_profile_fragment.xml b/app/src/main/res/layout/account_profile_fragment.xml index 04f9cb2dd..408b615da 100644 --- a/app/src/main/res/layout/account_profile_fragment.xml +++ b/app/src/main/res/layout/account_profile_fragment.xml @@ -11,6 +11,9 @@ + @@ -108,17 +111,6 @@ app:layout_constraintStart_toStartOf="@id/avatar" app:layout_constraintBottom_toBottomOf="@id/avatar"/> - - + + + + + + + app:layout_constraintTop_toBottomOf="@id/avatar_barrier"/> + @@ -99,6 +102,7 @@ app:layout_constraintBottom_toBottomOf="@id/avatar" /> + + + + + + + app:layout_constraintTop_toBottomOf="@id/avatar_barrier"/> Devices Add a picture Edit picture + Remove picture This account in online, everybody can call you. Account has been disabled, you won\'t receive any call or message. Account is connecting to the server, please wait…