mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 19:38:08 +00:00
Using new MagicSearch API
This commit is contained in:
parent
c5dfda1688
commit
09263382e1
7 changed files with 44 additions and 8 deletions
|
|
@ -24,7 +24,6 @@ import android.animation.ValueAnimator
|
|||
import android.annotation.TargetApi
|
||||
import android.app.Dialog
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.pm.PackageManager.PERMISSION_GRANTED
|
||||
import android.os.Bundle
|
||||
import android.os.SystemClock
|
||||
|
|
|
|||
|
|
@ -257,13 +257,13 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
listViewModel.sipContactsSelected.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
listViewModel.updateContactsList()
|
||||
listViewModel.updateContactsList(true)
|
||||
}
|
||||
|
||||
listViewModel.filter.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
listViewModel.updateContactsList()
|
||||
listViewModel.updateContactsList(false)
|
||||
}
|
||||
|
||||
binding.setNewContactClickListener {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import org.linphone.contact.ContactsUpdatedListenerStub
|
|||
import org.linphone.contact.NativeContact
|
||||
import org.linphone.core.MagicSearch
|
||||
import org.linphone.core.MagicSearchListenerStub
|
||||
import org.linphone.core.MagicSearchSource
|
||||
import org.linphone.core.SearchResult
|
||||
import org.linphone.core.tools.Log
|
||||
|
||||
|
|
@ -46,7 +47,7 @@ class ContactsListViewModel : ViewModel() {
|
|||
private val contactsUpdatedListener = object : ContactsUpdatedListenerStub() {
|
||||
override fun onContactsUpdated() {
|
||||
Log.i("[Contacts] Contacts have changed")
|
||||
updateContactsList()
|
||||
updateContactsList(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -73,18 +74,26 @@ class ContactsListViewModel : ViewModel() {
|
|||
super.onCleared()
|
||||
}
|
||||
|
||||
fun updateContactsList() {
|
||||
fun updateContactsList(clearCache: Boolean) {
|
||||
val filterValue = filter.value.orEmpty()
|
||||
contactsList.value.orEmpty().forEach(ContactViewModel::destroy)
|
||||
|
||||
if (previousFilter.isNotEmpty() && previousFilter.length > filterValue.length) {
|
||||
if (clearCache || (
|
||||
previousFilter.isNotEmpty() && (
|
||||
previousFilter.length > filterValue.length ||
|
||||
(previousFilter.length == filterValue.length && previousFilter != filterValue)
|
||||
)
|
||||
)
|
||||
) {
|
||||
coreContext.contactsManager.magicSearch.resetSearchCache()
|
||||
}
|
||||
previousFilter = filterValue
|
||||
|
||||
val domain = if (sipContactsSelected.value == true) coreContext.core.defaultAccount?.params?.domain ?: "" else ""
|
||||
fetchInProgress.value = true
|
||||
coreContext.contactsManager.magicSearch.getContactListFromFilterAsync(filterValue, domain)
|
||||
|
||||
val domain = if (sipContactsSelected.value == true) coreContext.core.defaultAccount?.params?.domain ?: "" else ""
|
||||
val filter = MagicSearchSource.Friends.toInt() or MagicSearchSource.LdapServers.toInt()
|
||||
coreContext.contactsManager.magicSearch.getContactsAsync(filterValue, domain, filter)
|
||||
}
|
||||
|
||||
private fun processMagicSearchResults(results: Array<SearchResult>) {
|
||||
|
|
|
|||
|
|
@ -178,6 +178,20 @@ class LdapSettingsViewModel(private val ldap: Ldap, val index: String) : Generic
|
|||
}
|
||||
val ldapSearchTimeout = MutableLiveData<Int>()
|
||||
|
||||
val ldapRequestDelayListener = object : SettingListenerStub() {
|
||||
override fun onTextValueChanged(newValue: String) {
|
||||
try {
|
||||
val intValue = newValue.toInt()
|
||||
val params = ldap.params.clone()
|
||||
params.delay = intValue
|
||||
ldap.params = params
|
||||
} catch (nfe: NumberFormatException) {
|
||||
Log.e("[LDAP Settings] Failed to set request delay ($newValue): $nfe")
|
||||
}
|
||||
}
|
||||
}
|
||||
val ldapRequestDelay = MutableLiveData<Int>()
|
||||
|
||||
val ldapNameAttributeListener = object : SettingListenerStub() {
|
||||
override fun onTextValueChanged(newValue: String) {
|
||||
val params = ldap.params.clone()
|
||||
|
|
@ -226,6 +240,7 @@ class LdapSettingsViewModel(private val ldap: Ldap, val index: String) : Generic
|
|||
ldapSearchFilter.value = params.filter
|
||||
ldapSearchMaxResults.value = params.maxResults
|
||||
ldapSearchTimeout.value = params.timeout
|
||||
ldapRequestDelay.value = params.delay
|
||||
ldapNameAttribute.value = params.nameAttribute
|
||||
ldapSipAttribute.value = params.sipAttribute
|
||||
ldapSipDomain.value = params.sipDomain
|
||||
|
|
|
|||
|
|
@ -169,6 +169,14 @@
|
|||
linphone:defaultValue="@{viewModel.ldapSearchTimeout.toString()}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_NUMBER}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/contacts_settings_ldap_request_delay_title}"
|
||||
linphone:subtitle="@{@string/contacts_settings_ldap_request_delay_subtitle}"
|
||||
linphone:listener="@{viewModel.ldapRequestDelayListener}"
|
||||
linphone:defaultValue="@{viewModel.ldapRequestDelay.toString()}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_NUMBER}"/>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/contacts_settings_ldap_parsing_title"
|
||||
|
|
|
|||
|
|
@ -624,6 +624,7 @@
|
|||
<string name="about_weblate_translation">Contribuer aux traductions</string>
|
||||
<string name="assistant_generic_account_warning">Certaines fonctionnalités avancées comme les messages de groupe ou les messages éphémères nécessitent un compte &appName;.\n\nElles seront masquées dans l\'application si vous configurez un compte SIP tiers.\n\nSi vous souhaitez les activer pour un projet professionnel, contactez-nous.</string>
|
||||
<string name="assistant_generic_account_warning_continue_button_text">J\'ai compris</string>
|
||||
<string name="contacts_settings_create_new_ldap_config_title">Nouvelle configuration LDAP</string>
|
||||
<string name="contacts_settings_ldap_title">LDAP</string>
|
||||
<string name="contacts_settings_ldap_enable_title">Activer</string>
|
||||
<string name="contacts_settings_ldap_delete_title">Supprimer</string>
|
||||
|
|
@ -646,6 +647,8 @@
|
|||
<string name="contacts_settings_ldap_search_max_results_title">Résultats maximum</string>
|
||||
<string name="contacts_settings_ldap_search_timeout_title">Durée max</string>
|
||||
<string name="contacts_settings_ldap_search_timeout_subtitle">En secondes</string>
|
||||
<string name="contacts_settings_ldap_request_delay_title">Délai entre 2 requêtes</string>
|
||||
<string name="contacts_settings_ldap_request_delay_subtitle">En millisecondes</string>
|
||||
<string name="contacts_settings_ldap_parsing_title">Analyse</string>
|
||||
<string name="contacts_settings_ldap_name_attribute_title">Attributs de nom</string>
|
||||
<string name="contacts_settings_ldap_sip_attribute_title">Attributs SIP</string>
|
||||
|
|
|
|||
|
|
@ -509,6 +509,8 @@
|
|||
<string name="contacts_settings_ldap_search_max_results_title">Max results</string>
|
||||
<string name="contacts_settings_ldap_search_timeout_title">Timeout</string>
|
||||
<string name="contacts_settings_ldap_search_timeout_subtitle">In seconds</string>
|
||||
<string name="contacts_settings_ldap_request_delay_title">Delay between two requests</string>
|
||||
<string name="contacts_settings_ldap_request_delay_subtitle">In milliseconds</string>
|
||||
<string name="contacts_settings_ldap_parsing_title">Parsing</string>
|
||||
<string name="contacts_settings_ldap_name_attribute_title">Name attributes</string>
|
||||
<string name="contacts_settings_ldap_sip_attribute_title">SIP attributes</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue