Improved empty SIP contacts list

This commit is contained in:
Sylvain Berfini 2025-04-30 15:40:49 +02:00
parent 966f713f19
commit c9a3a01733
6 changed files with 57 additions and 10 deletions

View file

@ -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

View file

@ -61,6 +61,8 @@ class ContactsListViewModel
val isListFiltered = MutableLiveData<Boolean>()
val areAllContactsDisplayed = MutableLiveData<Boolean>()
val searchInProgress = MutableLiveData<Boolean>()
val isDefaultAccountLinphone = MutableLiveData<Boolean>()
@ -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

View file

@ -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" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:id="@+id/show_contacts_filter"
android:onClick="@{filterClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/contacts_change_filter_label"
android:textSize="13sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:visibility="@{viewModel.contactsList.empty &amp;&amp; !viewModel.areAllContactsDisplayed ? View.VISIBLE : View.GONE}"
app:layout_constraintTop_toBottomOf="@id/no_contacts_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"/>
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/fetch_in_progress"
android:layout_width="wrap_content"

View file

@ -131,12 +131,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_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/no_contacts_image" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:id="@+id/show_contacts_filter"
android:onClick="@{filterClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/contacts_change_filter_label"
android:textSize="13sp"
android:textColor="@color/secondary_button_label_color"
android:gravity="center"
android:background="@drawable/secondary_button_background"
android:visibility="@{viewModel.contactsList.empty &amp;&amp; !viewModel.areAllContactsDisplayed ? View.VISIBLE : View.GONE}"
app:layout_constraintTop_toBottomOf="@id/no_contacts_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/fetch_in_progress"
android:layout_width="wrap_content"

View file

@ -372,6 +372,8 @@
<!-- Contacts -->
<string name="contacts_list_empty">Aucun contact pour le moment…</string>
<string name="contacts_list_sip_empty">Aucun contact SIP pour le moment…</string>
<string name="contacts_change_filter_label">Changer le filtre</string>
<string name="contacts_list_favourites_title">Favoris</string>
<string name="contacts_list_all_contacts_title">Tous les contacts</string>
<string name="contacts_list_filter_popup_see_all">Tous les contacts</string>

View file

@ -413,6 +413,8 @@
<!-- Contacts -->
<string name="contacts_list_empty">No contact for the moment…</string>
<string name="contacts_list_sip_empty">No SIP contact for the moment…</string>
<string name="contacts_change_filter_label">Change filter</string>
<string name="contacts_list_favourites_title">Favourites</string>
<string name="contacts_list_all_contacts_title">All contacts</string>
<string name="contacts_list_filter_popup_see_all">See all</string>