diff --git a/tests/src/components/contacts/ContactModel.hpp b/tests/src/components/contacts/ContactModel.hpp index 1e3ad1af6..21eb561bb 100644 --- a/tests/src/components/contacts/ContactModel.hpp +++ b/tests/src/components/contacts/ContactModel.hpp @@ -46,6 +46,7 @@ class ContactModel : public QObject { public: ContactModel (std::shared_ptr linphone_friend) { + linphone_friend->setData("contact-model", *this); m_linphone_friend = linphone_friend; } diff --git a/tests/src/components/contacts/ContactsListModel.cpp b/tests/src/components/contacts/ContactsListModel.cpp index 1153509bf..d9d52e5e4 100644 --- a/tests/src/components/contacts/ContactsListModel.cpp +++ b/tests/src/components/contacts/ContactsListModel.cpp @@ -22,7 +22,6 @@ ContactsListModel::ContactsListModel (QObject *parent): QAbstractListModel(paren contact, QQmlEngine::CppOwnership ); - m_friend_to_contact[friend_.get()] = contact; m_list << contact; } } @@ -61,7 +60,6 @@ bool ContactsListModel::removeRows (int row, int count, const QModelIndex &paren ContactModel *contact = m_list[row]; m_list.removeAt(row); - m_friend_to_contact.remove(contact->m_linphone_friend.get()); m_linphone_friends->removeFriend(contact->m_linphone_friend); contact->deleteLater(); @@ -76,15 +74,19 @@ bool ContactsListModel::removeRows (int row, int count, const QModelIndex &paren ContactModel *ContactsListModel::mapSipAddressToContact (const QString &sipAddress) const { // Maybe use a hashtable in future version to get a lower cost? - ContactModel *contact = m_friend_to_contact.value( - m_linphone_friends->findFriendByUri( - Utils::qStringToLinphoneString(sipAddress) - ).get() + std::shared_ptr friend_ = m_linphone_friends->findFriendByUri( + Utils::qStringToLinphoneString(sipAddress) ); - qInfo() << "Map sip address to contact:" << sipAddress << "->" << contact; + if (!friend_) { + qInfo() << "Map sip address to contact:" << sipAddress << "-> nullptr"; + return nullptr; + } - return contact; + ContactModel &contact = friend_->getData("contact-model"); + qInfo() << "Map sip address to contact:" << sipAddress << "->" << &contact; + + return &contact; } void ContactsListModel::removeContact (ContactModel *contact) { diff --git a/tests/src/components/contacts/ContactsListModel.hpp b/tests/src/components/contacts/ContactsListModel.hpp index f9664f4b3..e9cb110da 100644 --- a/tests/src/components/contacts/ContactsListModel.hpp +++ b/tests/src/components/contacts/ContactsListModel.hpp @@ -35,8 +35,6 @@ public slots: private: QList m_list; - QHash m_friend_to_contact; - std::shared_ptr m_linphone_friends; };