From 3e23545ec037f029e4fa1bf02ae5a7b0745e701e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 1 Mar 2022 15:49:38 +0100 Subject: [PATCH] Finished LDAP settings using newly added APIs --- .../contact/fragments/MasterContactsFragment.kt | 9 +++++++++ .../contact/viewmodels/ContactsListViewModel.kt | 14 ++++++++++---- .../settings/viewmodels/LdapSettingsViewModel.kt | 15 +++++++++++++++ .../main/res/layout/settings_ldap_fragment.xml | 7 +++++++ app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt index 85b67c0e4..20f03be09 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt @@ -36,6 +36,7 @@ import com.google.android.material.transition.MaterialSharedAxis import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R +import org.linphone.activities.SnackBarActivity import org.linphone.activities.clearDisplayedContact import org.linphone.activities.main.MainActivity import org.linphone.activities.main.contact.adapters.ContactsListAdapter @@ -247,6 +248,14 @@ class MasterContactsFragment : MasterFragment() @@ -44,6 +42,10 @@ class ContactsListViewModel : ViewModel() { val filter = MutableLiveData() private var previousFilter = "NotSet" + val moreResultsAvailableEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + private val contactsUpdatedListener = object : ContactsUpdatedListenerStub() { override fun onContactsUpdated() { Log.i("[Contacts] Contacts have changed") @@ -56,6 +58,10 @@ class ContactsListViewModel : ViewModel() { processMagicSearchResults(magicSearch.lastSearch) fetchInProgress.value = false } + + override fun onLdapHaveMoreResults(magicSearch: MagicSearch, ldap: Ldap) { + moreResultsAvailableEvent.value = Event(true) + } } init { diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/LdapSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/LdapSettingsViewModel.kt index 97f03d9d2..ab6abcf15 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/LdapSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/LdapSettingsViewModel.kt @@ -192,6 +192,20 @@ class LdapSettingsViewModel(private val ldap: Ldap, val index: String) : Generic } val ldapRequestDelay = MutableLiveData() + val ldapMinimumCharactersListener = object : SettingListenerStub() { + override fun onTextValueChanged(newValue: String) { + try { + val intValue = newValue.toInt() + val params = ldap.params.clone() + params.minChars = intValue + ldap.params = params + } catch (nfe: NumberFormatException) { + Log.e("[LDAP Settings] Failed to set minimum characters ($newValue): $nfe") + } + } + } + val ldapMinimumCharacters = MutableLiveData() + val ldapNameAttributeListener = object : SettingListenerStub() { override fun onTextValueChanged(newValue: String) { val params = ldap.params.clone() @@ -241,6 +255,7 @@ class LdapSettingsViewModel(private val ldap: Ldap, val index: String) : Generic ldapSearchMaxResults.value = params.maxResults ldapSearchTimeout.value = params.timeout ldapRequestDelay.value = params.delay + ldapMinimumCharacters.value = params.minChars ldapNameAttribute.value = params.nameAttribute ldapSipAttribute.value = params.sipAttribute ldapSipDomain.value = params.sipDomain diff --git a/app/src/main/res/layout/settings_ldap_fragment.xml b/app/src/main/res/layout/settings_ldap_fragment.xml index 7da8013d5..3005446a8 100644 --- a/app/src/main/res/layout/settings_ldap_fragment.xml +++ b/app/src/main/res/layout/settings_ldap_fragment.xml @@ -177,6 +177,13 @@ linphone:defaultValue="@{viewModel.ldapRequestDelay.toString()}" linphone:inputType="@{InputType.TYPE_CLASS_NUMBER}"/> + + En secondes Délai entre 2 requêtes En millisecondes + Nombre minimum de caractères pour lancer la requête Analyse Attributs de nom Attributs SIP @@ -656,4 +657,5 @@ Divers Débogage Ce contact ne peut être supprimé + Plus de résultats sont disponibles, affinez votre recherche \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7ceaa553e..fb5127966 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,6 +115,7 @@ Choose where to save the contact Store locally This contact can\'t be deleted + More results are available, refine your search Enter a number or an address @@ -511,6 +512,7 @@ In seconds Delay between two requests In milliseconds + Minimum characters to start query Parsing Name attributes SIP attributes