From b1230825599083f7ddcb1eee29f88b934537b2f5 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Aug 2024 14:00:10 +0200 Subject: [PATCH] Added back config entry to allow disabling native contacts default directory filter --- .../main/java/org/linphone/contacts/ContactLoader.kt | 9 ++++++++- .../main/java/org/linphone/contacts/ContactsManager.kt | 10 +++++++++- app/src/main/java/org/linphone/core/CorePreferences.kt | 5 +++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactLoader.kt b/app/src/main/java/org/linphone/contacts/ContactLoader.kt index c403c75b8..ddfcc1a6b 100644 --- a/app/src/main/java/org/linphone/contacts/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contacts/ContactLoader.kt @@ -65,7 +65,14 @@ class ContactLoader : LoaderManager.LoaderCallbacks { val mimeType = ContactsContract.Data.MIMETYPE val mimeSelection = "$mimeType = ? OR $mimeType = ? OR $mimeType = ? OR $mimeType = ?" - val selection = ContactsContract.Data.IN_DEFAULT_DIRECTORY + " == 1 AND ($mimeSelection)" + val selection = if (args?.getBoolean("defaultDirectory", true) == true) { + Log.i("$TAG Only fetching contacts from default directory") + ContactsContract.Data.IN_DEFAULT_DIRECTORY + " == 1 AND ($mimeSelection)" + } else { + Log.i("$TAG Fetching all available contacts") + mimeSelection + } + val selectionArgs = arrayOf( ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 5ffd20528..d3286d9ce 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -25,6 +25,7 @@ import android.content.pm.PackageManager import android.database.Cursor import android.graphics.Bitmap import android.net.Uri +import android.os.Bundle import android.provider.ContactsContract import androidx.annotation.MainThread import androidx.annotation.UiThread @@ -42,6 +43,7 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.Account import org.linphone.core.Address import org.linphone.core.ConferenceInfo @@ -85,6 +87,8 @@ class ContactsManager @UiThread constructor() { private val coroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()) private var reloadContactsJob: Job? = null + private var loadContactsOnlyFromDefaultDirectory = true + private val friendListListener: FriendListListenerStub = object : FriendListListenerStub() { @WorkerThread override fun onNewSipAddressDiscovered( @@ -147,7 +151,9 @@ class ContactsManager @UiThread constructor() { fun loadContacts(activity: MainActivity) { Log.i("$TAG Starting contacts loader") val manager = LoaderManager.getInstance(activity) - manager.restartLoader(0, null, ContactLoader()) + val args = Bundle() + args.putBoolean("defaultDirectory", loadContactsOnlyFromDefaultDirectory) + manager.restartLoader(0, args, ContactLoader()) } @WorkerThread @@ -432,6 +438,8 @@ class ContactsManager @UiThread constructor() { @WorkerThread fun onCoreStarted(core: Core) { + loadContactsOnlyFromDefaultDirectory = corePreferences.fetchContactsFromDefaultDirectory + core.addListener(coreListener) for (list in core.friendsLists) { list.addListener(friendListListener) diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index de9f86596..06c77597f 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -130,6 +130,7 @@ class CorePreferences @UiThread constructor(private val context: Context) { config.setBool("ui", "show_favorites_contacts", value) } + @get:WorkerThread @set:WorkerThread var friendListInWhichStoreNewlyCreatedFriends: String get() = config.getString( "app", @@ -247,6 +248,10 @@ class CorePreferences @UiThread constructor(private val context: Context) { false ) + @get:WorkerThread + val fetchContactsFromDefaultDirectory: Boolean + get() = config.getBool("app", "fetch_contacts_from_default_directory", true) + @get:WorkerThread val automaticallyShowDialpad: Boolean get() = config.getBool("ui", "automatically_show_dialpad", false)