From 8463c3e5f95111af026da9a95f0bbe7579552df8 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 16 Apr 2025 16:10:53 +0200 Subject: [PATCH] fix magic search : call address found from research if friend with more than one address --- Linphone/core/friend/FriendCore.cpp | 1 + Linphone/tool/Utils.cpp | 9 +++++++++ Linphone/tool/Utils.hpp | 1 + .../Control/Display/Contact/ContactListItem.qml | 17 +++++++---------- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Linphone/core/friend/FriendCore.cpp b/Linphone/core/friend/FriendCore.cpp index 4214ec211..1e6d8086b 100644 --- a/Linphone/core/friend/FriendCore.cpp +++ b/Linphone/core/friend/FriendCore.cpp @@ -406,6 +406,7 @@ void FriendCore::removeAddress(int index) { if (index < 0 && index >= mAddressList.size()) return; auto map = mAddressList[index].toMap(); if (map["address"].toString() == mDefaultFullAddress) mDefaultFullAddress.clear(); + if (map["address"].toString() == mDefaultAddress) mDefaultAddress.clear(); mAddressList.remove(index); emit addressChanged(); setIsSaved(false); diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index 786b71c51..c58024baa 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -1438,6 +1438,15 @@ QList Utils::append(const QList a, const QList b) return a + b; } +QString Utils::getAddressToDisplay(QVariantList addressList, QString filter, QString defaultAddress) { + if (filter.isEmpty()) return defaultAddress; + for (auto& item: addressList) { + QString address = item.toMap()["address"].toString(); + if (address.contains(filter)) return address; + } + return defaultAddress; +} + // Codecs download QList> Utils::getDownloadableVideoPayloadTypes() { diff --git a/Linphone/tool/Utils.hpp b/Linphone/tool/Utils.hpp index 50a692636..9f81a823b 100644 --- a/Linphone/tool/Utils.hpp +++ b/Linphone/tool/Utils.hpp @@ -138,6 +138,7 @@ public: Q_INVOKABLE QString boldTextPart(const QString &text, const QString ®ex); Q_INVOKABLE static QString getFileChecksum(const QString &filePath); Q_INVOKABLE QList append(const QList a, const QList b); + Q_INVOKABLE QString getAddressToDisplay(QVariantList addressList, QString filter, QString defaultAddress); // QDir findDirectoryByName(QString startPath, QString name); diff --git a/Linphone/view/Control/Display/Contact/ContactListItem.qml b/Linphone/view/Control/Display/Contact/ContactListItem.qml index b0fa30efb..b98bbc7ab 100644 --- a/Linphone/view/Control/Display/Contact/ContactListItem.qml +++ b/Linphone/view/Control/Display/Contact/ContactListItem.qml @@ -17,6 +17,7 @@ FocusScope { property bool showActions: false // Display actions layout (call buttons) property bool showContactMenu: true // Display the dot menu for contacts. property string highlightText + property string addressFromFilter: UtilsCpp.getAddressToDisplay(searchResultItem.core.addresses, highlightText, searchResultItem.core.defaultAddress) // Bold characters in Display name. property bool displayNameCapitalization: true // Capitalize display name. @@ -90,7 +91,9 @@ FocusScope { Layout.topMargin: Math.round(2 * DefaultStyle.dp) Layout.fillWidth: true visible: mainItem.showDefaultAddress - property string address: SettingsCpp.onlyDisplaySipUriUsername ? UtilsCpp.getUsername(searchResultItem.core.defaultAddress) : searchResultItem.core.defaultAddress + property string address: SettingsCpp.onlyDisplaySipUriUsername + ? UtilsCpp.getUsername(mainItem.addressFromFilter) + : mainItem.addressFromFilter text: UtilsCpp.boldTextPart(address, mainItem.highlightText) maximumLineCount: 1 elide: Text.ElideRight @@ -113,8 +116,7 @@ FocusScope { EffectImage { id: isSelectedCheck visible: mainItem.multiSelectionEnabled - && (mainItem.selectedContacts.indexOf( - searchResultItem.core.defaultAddress) != -1) + && (mainItem.selectedContacts.indexOf(mainItem.addressFromFilter) != -1) Layout.preferredWidth: Math.round(24 * DefaultStyle.dp) Layout.preferredHeight: Math.round(24 * DefaultStyle.dp) imageSource: AppIcons.check @@ -134,8 +136,7 @@ FocusScope { focus: visible radius: Math.round(40 * DefaultStyle.dp) style: ButtonStyle.grey - onClicked: UtilsCpp.createCall( - searchResultItem.core.defaultFullAddress) + onClicked: UtilsCpp.createCall(mainItem.addressFromFilter) KeyNavigation.left: chatButton KeyNavigation.right: videoCallButton } @@ -150,11 +151,7 @@ FocusScope { focus: visible && !callButton.visible radius: Math.round(40 * DefaultStyle.dp) style: ButtonStyle.grey - onClicked: UtilsCpp.createCall( - searchResultItem.core.defaultFullAddress, - { - "localVideoEnabled": true - }) + onClicked: UtilsCpp.createCall(mainItem.addressFromFilter, {"localVideoEnabled": true}) KeyNavigation.left: callButton KeyNavigation.right: chatButton }