diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index cb459f5b5..d74051d10 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -384,7 +384,7 @@ class CorePreferences @get:WorkerThread val magicSearchResultsLimit: Int - get() = config.getInt("ui", "max_number_of_magic_search_results", 100) + get() = config.getInt("ui", "max_number_of_magic_search_results", 300) @get:WorkerThread val singleSignOnClientId: String 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 2d223b35f..911d7525a 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 @@ -67,6 +67,8 @@ class ContactsListViewModel val isDefaultAccountLinphone = MutableLiveData() + val showResultsLimitReached = MutableLiveData() + val vCardTerminatedEvent: MutableLiveData>> by lazy { MutableLiveData>>() } @@ -84,6 +86,14 @@ class ContactsListViewModel Log.i("$TAG Magic search contacts available") processMagicSearchResults(magicSearch.lastSearch) } + + @WorkerThread + override fun onResultsLimitReached(magicSearch: MagicSearch, sourcesFlag: Int) { + Log.w("$TAG Results limit reached (configured limit is [${magicSearch.searchLimit}]) for source(s) [$sourcesFlag], user should refine it's search") + if (searchFilter.value.orEmpty().isNotEmpty()) { + showResultsLimitReached.postValue(true) + } + } } private val contactsListener = object : ContactsListener { @@ -259,6 +269,7 @@ class ContactsListViewModel "$TAG Asking Magic search for contacts matching filter [$filter], domain [$domain] and in sources Friends/LDAP/CardDAV" ) searchInProgress.postValue(filter.isNotEmpty()) + showResultsLimitReached.postValue(false) magicSearch.getContactsListAsync( filter, domain, diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt index 734e9b64d..b16ef77eb 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt @@ -62,6 +62,8 @@ abstract class AddressSelectionViewModel val isEmpty = MutableLiveData() + val showResultsLimitReached = MutableLiveData() + protected var magicSearchSourceFlags = MagicSearch.Source.All.toInt() protected var skipConversation: Boolean = true @@ -77,6 +79,14 @@ abstract class AddressSelectionViewModel Log.i("$TAG Magic search contacts available") processMagicSearchResults(magicSearch.lastSearch) } + + @WorkerThread + override fun onResultsLimitReached(magicSearch: MagicSearch, sourcesFlag: Int) { + Log.w("$TAG Results limit reached (configured limit is [${magicSearch.searchLimit}]) for source(s) [$sourcesFlag], user should refine it's search") + if (searchFilter.value.orEmpty().isNotEmpty()) { + showResultsLimitReached.postValue(true) + } + } } private val contactsListener = object : ContactsManager.ContactsListener { @@ -241,6 +251,7 @@ abstract class AddressSelectionViewModel "$TAG Asking Magic search for contacts matching filter [$filter], domain [$domain] and in sources [$sources]" ) searchInProgress.postValue(filter.isNotEmpty()) + showResultsLimitReached.postValue(false) magicSearch.getContactsListAsync( filter, domain, 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 b908fad2f..6ffb4011c 100644 --- a/app/src/main/res/layout-land/contacts_list_fragment.xml +++ b/app/src/main/res/layout-land/contacts_list_fragment.xml @@ -103,11 +103,25 @@ android:layout_marginTop="16dp" android:text="@string/contacts_list_all_contacts_title"/> + + + android:layout_marginTop="4dp" /> diff --git a/app/src/main/res/layout/call_transfer_fragment.xml b/app/src/main/res/layout/call_transfer_fragment.xml index 86926447c..f8f099cc5 100644 --- a/app/src/main/res/layout/call_transfer_fragment.xml +++ b/app/src/main/res/layout/call_transfer_fragment.xml @@ -162,6 +162,23 @@ app:layout_constraintTop_toTopOf="@id/search_bar" app:tint="?attr/color_main2_600" /> + + + + + android:layout_marginTop="4dp" /> diff --git a/app/src/main/res/layout/start_call_fragment.xml b/app/src/main/res/layout/start_call_fragment.xml index 977145dab..1651ed7a9 100644 --- a/app/src/main/res/layout/start_call_fragment.xml +++ b/app/src/main/res/layout/start_call_fragment.xml @@ -157,6 +157,23 @@ app:layout_constraintTop_toTopOf="@id/search_bar" app:tint="?attr/color_main2_600" /> + + + + Tous les contacts Contacts &appName; Contacts SIP + Nombre maximal de résultats atteint, affinez votre recherche. Nouveau contact Modifier contact diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 810672b15..78eb17f3c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -439,6 +439,7 @@ See all See &appName; contacts See SIP contacts + Search results limit reached, refine your search. New contact Edit contact