From b1a03db96fcca0c6d6b749fe87af961b2c2267b4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 7 Jan 2025 11:10:51 +0100 Subject: [PATCH] Added setting in CorePreferences to hide phone numbers from contacts (also disables contacts list filter) --- app/src/main/java/org/linphone/contacts/ContactsManager.kt | 5 ++++- app/src/main/java/org/linphone/core/CorePreferences.kt | 4 ++++ .../ui/main/contacts/viewmodel/ContactsListViewModel.kt | 3 +++ app/src/main/java/org/linphone/utils/LinphoneUtils.kt | 3 ++- app/src/main/res/layout/contacts_list_fragment.xml | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 1a1318f7c..fb8ec8886 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -860,8 +860,11 @@ fun Friend.getListOfSipAddressesAndPhoneNumbers(listener: ContactNumberOrAddress ) addressesAndNumbers.add(data) } - val indexOfLastSipAddress = addressesAndNumbers.count() + if (corePreferences.hidePhoneNumbers) { + return addressesAndNumbers + } + val indexOfLastSipAddress = addressesAndNumbers.count() for (number in phoneNumbersWithLabel) { val presenceModel = getPresenceModelForUriOrTel(number.phoneNumber) val hasPresenceInfo = !presenceModel?.contact.isNullOrEmpty() diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index ecf1e2e35..eb71a1017 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -228,6 +228,10 @@ class CorePreferences val maxAccountsCount: Int get() = config.getInt("ui", "max_account", 0) // 0 means no max + @get:WorkerThread + val hidePhoneNumbers: Boolean + get() = config.getBool("ui", "hide_phone_numbers", false) + @get:WorkerThread val hideSettings: Boolean get() = config.getBool("ui", "hide_settings", false) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index 8c7b02dec..a42e96482 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -58,6 +58,8 @@ class ContactsListViewModel val showFavourites = MutableLiveData() + val showFilter = MutableLiveData() + val isListFiltered = MutableLiveData() val isDefaultAccountLinphone = MutableLiveData() @@ -100,6 +102,7 @@ class ContactsListViewModel init { fetchInProgress.value = true showFavourites.value = corePreferences.showFavoriteContacts + showFilter.value = !corePreferences.hidePhoneNumbers coreContext.postOnCoreThread { core -> updateDomainFilter() diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index d0a211ec9..e5440606c 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -31,6 +31,7 @@ import androidx.core.text.toSpannable import java.text.SimpleDateFormat import java.util.Locale import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.contacts.getListOfSipAddresses import org.linphone.core.Account @@ -116,7 +117,7 @@ class LinphoneUtils { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = !isEndToEndEncryptionMandatory() + val enablePhoneNumbers = !corePreferences.hidePhoneNumbers && !isEndToEndEncryptionMandatory() if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { val address = addresses.first() diff --git a/app/src/main/res/layout/contacts_list_fragment.xml b/app/src/main/res/layout/contacts_list_fragment.xml index 9aab3e4e5..25792d42d 100644 --- a/app/src/main/res/layout/contacts_list_fragment.xml +++ b/app/src/main/res/layout/contacts_list_fragment.xml @@ -40,7 +40,7 @@ android:id="@+id/top_bar" layout="@layout/main_activity_top_bar" bind:viewModel="@{viewModel}" - bind:enableExtraAction="@{true}" + bind:enableExtraAction="@{viewModel.showFilter}" bind:extraActionIcon="@{@drawable/funnel}" bind:extraActionClickListener="@{filterClickListener}" bind:extraActionContentDescription="@{@string/content_description_contacts_list_filters}"