From c9a3a01733d10465b9ce5422ff1e754e66c6c753 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 30 Apr 2025 15:40:49 +0200 Subject: [PATCH] Improved empty SIP contacts list --- .../contacts/fragment/ContactsListFragment.kt | 8 +++---- .../viewmodel/ContactsListViewModel.kt | 9 ++++---- .../layout-land/contacts_list_fragment.xml | 23 ++++++++++++++++++- .../res/layout/contacts_list_fragment.xml | 23 ++++++++++++++++++- app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 57 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt index cdf98eb85..858fb1456 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt @@ -298,7 +298,7 @@ class ContactsListFragment : AbstractMainFragment() { null, false ) - popupView.seeAllSelected = listViewModel.areAllContactsDisplayed() + popupView.seeAllSelected = listViewModel.areAllContactsDisplayed.value == true popupView.showLinphoneFilter = listViewModel.isDefaultAccountLinphone.value == true val popupWindow = PopupWindow( @@ -309,7 +309,7 @@ class ContactsListFragment : AbstractMainFragment() { ) popupView.setNoFilterClickListener { - if (!listViewModel.areAllContactsDisplayed()) { + if (listViewModel.areAllContactsDisplayed.value != true) { listViewModel.changeContactsFilter( onlyLinphoneContacts = false, onlySipContacts = false @@ -319,7 +319,7 @@ class ContactsListFragment : AbstractMainFragment() { } popupView.setLinphoneOnlyClickListener { - if (listViewModel.areAllContactsDisplayed()) { + if (listViewModel.areAllContactsDisplayed.value == true) { listViewModel.changeContactsFilter( onlyLinphoneContacts = true, onlySipContacts = false @@ -329,7 +329,7 @@ class ContactsListFragment : AbstractMainFragment() { } popupView.setSipOnlyClickListener { - if (listViewModel.areAllContactsDisplayed()) { + if (listViewModel.areAllContactsDisplayed.value == true) { listViewModel.changeContactsFilter( onlyLinphoneContacts = false, onlySipContacts = true 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 aa036ef4a..7d9eb8a49 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 @@ -61,6 +61,8 @@ class ContactsListViewModel val isListFiltered = MutableLiveData() + val areAllContactsDisplayed = MutableLiveData() + val searchInProgress = MutableLiveData() val isDefaultAccountLinphone = MutableLiveData() @@ -107,6 +109,7 @@ class ContactsListViewModel coreContext.postOnCoreThread { core -> domainFilter = corePreferences.contactsFilter + areAllContactsDisplayed.postValue(domainFilter.isEmpty()) checkIfDefaultAccountOnDefaultDomain() coreContext.contactsManager.addListener(contactsListener) @@ -145,6 +148,7 @@ class ContactsListViewModel fun applyCurrentDefaultAccountFilter() { coreContext.postOnCoreThread { domainFilter = corePreferences.contactsFilter + areAllContactsDisplayed.postValue(domainFilter.isEmpty()) checkIfDefaultAccountOnDefaultDomain() coreContext.postOnMainThread { @@ -163,6 +167,7 @@ class ContactsListViewModel } else { "" } + areAllContactsDisplayed.postValue(domainFilter.isEmpty()) corePreferences.contactsFilter = domainFilter Log.i("$TAG Newly set filter is [${corePreferences.contactsFilter}]") @@ -172,10 +177,6 @@ class ContactsListViewModel } } - fun areAllContactsDisplayed(): Boolean { - return domainFilter.isEmpty() - } - @UiThread fun toggleFavouritesVisibility() { val show = showFavourites.value == false diff --git a/app/src/main/res/layout-land/contacts_list_fragment.xml b/app/src/main/res/layout-land/contacts_list_fragment.xml index 9f05a9b61..de9a6d2c7 100644 --- a/app/src/main/res/layout-land/contacts_list_fragment.xml +++ b/app/src/main/res/layout-land/contacts_list_fragment.xml @@ -130,12 +130,33 @@ android:id="@+id/no_contacts_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@{viewModel.isFilterEmpty ? @string/contacts_list_empty : @string/list_filter_no_result_found, default=@string/contacts_list_empty}" + android:text="@{viewModel.isFilterEmpty ? (viewModel.areAllContactsDisplayed ? @string/contacts_list_empty : @string/contacts_list_sip_empty) : @string/list_filter_no_result_found, default=@string/contacts_list_sip_empty}" app:layout_constraintBottom_toTopOf="@id/lists" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/bottom_nav_bar" app:layout_constraintTop_toBottomOf="@id/no_contacts_image" /> + + + + Aucun contact pour le moment… + Aucun contact SIP pour le moment… + Changer le filtre Favoris Tous les contacts Tous les contacts diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54b631123..36962cc7c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -413,6 +413,8 @@ No contact for the moment… + No SIP contact for the moment… + Change filter Favourites All contacts See all