fix call history popup add/see friend

This commit is contained in:
gaelle 2025-04-16 12:24:12 +02:00
parent 0dcecdd578
commit ea1dd96006
6 changed files with 18 additions and 17 deletions

View file

@ -92,6 +92,7 @@ FriendCore::FriendCore(const std::shared_ptr<linphone::Friend> &contact, bool is
mIsStored = isStored; mIsStored = isStored;
mIsLdap = ToolModel::friendIsInFriendList(ToolModel::getLdapFriendList(), contact); mIsLdap = ToolModel::friendIsInFriendList(ToolModel::getLdapFriendList(), contact);
mIsCardDAV = (sourceFlags & (int)linphone::MagicSearch::Source::RemoteCardDAV) != 0; mIsCardDAV = (sourceFlags & (int)linphone::MagicSearch::Source::RemoteCardDAV) != 0;
mIsAppFriend = ToolModel::friendIsInFriendList(ToolModel::getAppFriendList(), contact);
} else { } else {
mIsSaved = false; mIsSaved = false;
mStarred = false; mStarred = false;
@ -119,6 +120,7 @@ FriendCore::FriendCore(const FriendCore &friendCore) {
mIsSaved = friendCore.mIsSaved; mIsSaved = friendCore.mIsSaved;
mIsStored = friendCore.mIsStored; mIsStored = friendCore.mIsStored;
mIsLdap = friendCore.mIsLdap; mIsLdap = friendCore.mIsLdap;
mIsAppFriend = friendCore.mIsAppFriend;
mIsCardDAV = friendCore.mIsCardDAV; mIsCardDAV = friendCore.mIsCardDAV;
} }
@ -743,6 +745,10 @@ bool FriendCore::isCardDAV() const {
return mIsCardDAV; return mIsCardDAV;
} }
bool FriendCore::isAppFriend() const {
return mIsAppFriend;
}
bool FriendCore::getReadOnly() const { bool FriendCore::getReadOnly() const {
return isLdap() || isCardDAV(); // TODO add conditions for friends retrieved via HTTP return isLdap() || isCardDAV(); // TODO add conditions for friends retrieved via HTTP
// [misc]vcards-contacts-list=<URL> & CardDAV // [misc]vcards-contacts-list=<URL> & CardDAV

View file

@ -72,6 +72,7 @@ class FriendCore : public QObject, public AbstractObject {
Q_PROPERTY(bool starred READ getStarred WRITE lSetStarred NOTIFY starredChanged) Q_PROPERTY(bool starred READ getStarred WRITE lSetStarred NOTIFY starredChanged)
Q_PROPERTY(bool readOnly READ getReadOnly CONSTANT) Q_PROPERTY(bool readOnly READ getReadOnly CONSTANT)
Q_PROPERTY(bool isLdap READ isLdap CONSTANT) Q_PROPERTY(bool isLdap READ isLdap CONSTANT)
Q_PROPERTY(bool isAppFriend READ isAppFriend CONSTANT)
Q_PROPERTY(bool isCardDAV READ isCardDAV CONSTANT) Q_PROPERTY(bool isCardDAV READ isCardDAV CONSTANT)
public: public:
@ -148,6 +149,7 @@ public:
void onPresenceReceived(LinphoneEnums::ConsolidatedPresence consolidatedPresence, QDateTime presenceTimestamp); void onPresenceReceived(LinphoneEnums::ConsolidatedPresence consolidatedPresence, QDateTime presenceTimestamp);
bool isLdap() const; bool isLdap() const;
bool isAppFriend() const;
bool isCardDAV() const; bool isCardDAV() const;
bool getReadOnly() const; bool getReadOnly() const;
@ -207,7 +209,7 @@ protected:
bool mIsSaved; bool mIsSaved;
bool mIsStored; bool mIsStored;
QString mVCardString; QString mVCardString;
bool mIsLdap, mIsCardDAV; bool mIsLdap, mIsCardDAV, mIsAppFriend;
std::shared_ptr<FriendModel> mFriendModel; std::shared_ptr<FriendModel> mFriendModel;
QSharedPointer<SafeConnection<FriendCore, FriendModel>> mFriendModelConnection; QSharedPointer<SafeConnection<FriendCore, FriendModel>> mFriendModelConnection;
QSharedPointer<SafeConnection<FriendCore, CoreModel>> mCoreModelConnection; QSharedPointer<SafeConnection<FriendCore, CoreModel>> mCoreModelConnection;

View file

@ -1000,7 +1000,7 @@
<location filename="../../view/Page/Main/Call/CallPage.qml" line="532"/> <location filename="../../view/Page/Main/Call/CallPage.qml" line="532"/>
<source>menu_see_existing_contact</source> <source>menu_see_existing_contact</source>
<extracomment>&quot;Voir le contact&quot;</extracomment> <extracomment>&quot;Voir le contact&quot;</extracomment>
<translation>See contact</translation> <translation>Show contact</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="534"/> <location filename="../../view/Page/Main/Call/CallPage.qml" line="534"/>

View file

@ -19,7 +19,6 @@
*/ */
#include "FriendsManager.hpp" #include "FriendsManager.hpp"
#include "model/core/CoreModel.hpp" #include "model/core/CoreModel.hpp"
#include "tool/Utils.hpp" #include "tool/Utils.hpp"
#include <QDebug> #include <QDebug>

View file

@ -130,10 +130,10 @@ std::shared_ptr<linphone::Friend> ToolModel::findFriendByAddress(std::shared_ptr
auto friendsManager = FriendsManager::getInstance(); auto friendsManager = FriendsManager::getInstance();
QString key = Utils::coreStringToAppString(linphoneAddr->asStringUriOnly()); QString key = Utils::coreStringToAppString(linphoneAddr->asStringUriOnly());
if (friendsManager->isInKnownFriends(key)) { if (friendsManager->isInKnownFriends(key)) {
// qDebug() << "Friend have been found in known friend, return it"; // qDebug() << key << "have been found in known friend, return it";
return friendsManager->getKnownFriendAtKey(key); return friendsManager->getKnownFriendAtKey(key);
} else if (friendsManager->isInUnknownFriends(key)) { } else if (friendsManager->isInUnknownFriends(key)) {
// qDebug() << "Friend have been found in unknown friend, return it"; // qDebug() << key << "have been found in unknown friend, return it";
return friendsManager->getUnknownFriendAtKey(key); return friendsManager->getUnknownFriendAtKey(key);
} }
auto f = CoreModel::getInstance()->getCore()->findFriend(linphoneAddr); auto f = CoreModel::getInstance()->getCore()->findFriend(linphoneAddr);

View file

@ -496,12 +496,11 @@ AbstractMainPage {
visible: mainItem.selectedRowHistoryGui != undefined visible: mainItem.selectedRowHistoryGui != undefined
callHistoryGui: selectedRowHistoryGui callHistoryGui: selectedRowHistoryGui
property var contactObj: UtilsCpp.findFriendByAddress( property var contactObj: UtilsCpp.findFriendByAddress(specificAddress)
specificAddress)
contact: contactObj && contactObj.value || null contact: contactObj && contactObj.value || null
specificAddress: callHistoryGui specificAddress: callHistoryGui
&& callHistoryGui.core.remoteAddress || "" && callHistoryGui.core.remoteAddress || ""
property bool isLocalFriend: contact ? contact.core.isAppFriend : false
buttonContent: PopupButton { buttonContent: PopupButton {
id: detailOptions id: detailOptions
@ -523,21 +522,16 @@ AbstractMainPage {
anchors.fill: parent anchors.fill: parent
IconLabelButton { IconLabelButton {
Layout.fillWidth: true Layout.fillWidth: true
property bool isLdap: contactDetail.contact?.core?.isLdap //: "Show contact"
|| false text: contactDetail.isLocalFriend ? qsTr("menu_see_existing_contact") :
property bool isCardDAV: contactDetail.contact?.core?.isCardDAV //: "Add to contacts"
|| false
property bool isLocalFriend: contactDetail.contact && !isLdap && !isCardDAV
//: "Voir le contact"
text: isLocalFriend ? qsTr("menu_see_existing_contact") :
//: "Ajouter aux contacts"
qsTr("menu_add_address_to_contacts") qsTr("menu_add_address_to_contacts")
icon.source: AppIcons.plusCircle icon.source: AppIcons.plusCircle
icon.width: Math.round(32 * DefaultStyle.dp) icon.width: Math.round(32 * DefaultStyle.dp)
icon.height: Math.round(32 * DefaultStyle.dp) icon.height: Math.round(32 * DefaultStyle.dp)
onClicked: { onClicked: {
detailOptions.close() detailOptions.close()
if (isLocalFriend) if (contactDetail.isLocalFriend)
mainWindow.displayContactPage( mainWindow.displayContactPage(
contactDetail.contactAddress) contactDetail.contactAddress)
else else