From 0db46dd9184d0ce29951b57341a3fe4fa013e144 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Thu, 5 Aug 2021 11:56:02 +0200 Subject: [PATCH] Friends search optimization, remove Qt conversion on strings and feedback on chat room selection --- .../components/assistant/AssistantModel.cpp | 10 +- .../src/components/call/CallModel.cpp | 13 +- .../src/components/calls/CallsListModel.cpp | 26 +--- .../chat-events/ChatMessageModel.cpp | 4 +- .../components/chat-room/ChatRoomModel.cpp | 19 ++- .../chat-room/ChatRoomProxyModel.cpp | 6 +- .../src/components/contact/VcardModel.cpp | 2 +- .../components/contacts/ContactsListModel.cpp | 14 ++ .../components/contacts/ContactsListModel.hpp | 1 + .../src/components/core/CoreManager.cpp | 123 ------------------ .../src/components/history/HistoryModel.cpp | 4 +- .../src/components/notifier/Notifier.cpp | 4 +- .../other/colors/ColorListModel.cpp | 1 - .../participant/ParticipantListModel.cpp | 2 - .../components/search/SearchResultModel.cpp | 6 +- .../search/SearchSipAddressesModel.cpp | 4 +- .../settings/AccountSettingsModel.cpp | 22 ++-- .../sip-addresses/SipAddressesModel.cpp | 14 +- .../src/components/timeline/TimelineModel.cpp | 11 +- 19 files changed, 82 insertions(+), 204 deletions(-) diff --git a/linphone-app/src/components/assistant/AssistantModel.cpp b/linphone-app/src/components/assistant/AssistantModel.cpp index 03918eed1..6f3b8e8dc 100644 --- a/linphone-app/src/components/assistant/AssistantModel.cpp +++ b/linphone-app/src/components/assistant/AssistantModel.cpp @@ -231,13 +231,13 @@ bool AssistantModel::addOtherSipAccount (const QVariantMap &map) { } // Sip Address. - shared_ptr address = factory->createAddress(sipAddress.toStdString()); + shared_ptr address = factory->createAddress(Utils::appStringToCoreString(sipAddress)); if (!address) { qWarning() << QStringLiteral("Unable to create sip address object from: `%1`.").arg(sipAddress); return false; } - address->setDisplayName(map["displayName"].toString().toStdString()); + address->setDisplayName(Utils::appStringToCoreString(map["displayName"].toString())); proxyConfig->setIdentityAddress(address); // AuthInfo. @@ -364,7 +364,7 @@ void AssistantModel::setPhoneNumber (const QString &phoneNumber) { // ----------------------------------------------------------------------------- QString AssistantModel::getUsername () const { - return QString::fromStdString(mAccountCreator->getUsername()); + return Utils::coreStringToAppString(mAccountCreator->getUsername()); } void AssistantModel::setUsername (const QString &username) { @@ -379,14 +379,14 @@ void AssistantModel::setUsername (const QString &username) { // ----------------------------------------------------------------------------- QString AssistantModel::getDisplayName () const { - return QString::fromStdString(mAccountCreator->getDisplayName()); + return Utils::coreStringToAppString(mAccountCreator->getDisplayName()); } void AssistantModel::setDisplayName (const QString &displayName) { emit displayNameChanged( displayName, mapAccountCreatorUsernameStatusToString( - mAccountCreator->setDisplayName(displayName.toStdString()) + mAccountCreator->setDisplayName(Utils::appStringToCoreString(displayName)) ) ); } diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index 309286b5b..56901e8a8 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -90,7 +90,6 @@ CallModel::CallModel (shared_ptr call){ mRemoteAddress = mCall->getRemoteAddress()->clone(); mMagicSearch->getContactListFromFilterAsync(mRemoteAddress->getUsername(),mRemoteAddress->getDomain()); - qWarning() << getFullPeerAddress(); } CallModel::~CallModel () { @@ -108,16 +107,16 @@ QString CallModel::getLocalAddress () const { return Utils::coreStringToAppString(mCall->getCallLog()->getLocalAddress()->asStringUriOnly()); } QString CallModel::getFullPeerAddress () const { - return QString::fromStdString(mRemoteAddress->asString()); + return Utils::coreStringToAppString(mRemoteAddress->asString()); } QString CallModel::getFullLocalAddress () const { - return QString::fromStdString(mCall->getCallLog()->getLocalAddress()->asString()); + return Utils::coreStringToAppString(mCall->getCallLog()->getLocalAddress()->asString()); } // ----------------------------------------------------------------------------- ContactModel *CallModel::getContactModel() const{ - auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(QString::fromStdString(mCall->getRemoteAddress()->asString())); + auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString(mCall->getRemoteAddress()->asString())); return contact; } @@ -139,7 +138,7 @@ void CallModel::setRecordFile (const shared_ptr &callParam void CallModel::setRecordFile (const shared_ptr &callParams, const QString &to) { const QString from( - QString::fromStdString( + Utils::coreStringToAppString( CoreManager::getInstance()->getAccountSettingsModel()->getUsedSipAddress()->getUsername() ) ); @@ -831,8 +830,8 @@ QString CallModel::iceStateToString (linphone::IceState state) const { QString CallModel::generateSavedFilename () const { const shared_ptr callLog(mCall->getCallLog()); return generateSavedFilename( - QString::fromStdString(callLog->getFromAddress()->getUsername()), - QString::fromStdString(callLog->getToAddress()->getUsername()) + Utils::coreStringToAppString(callLog->getFromAddress()->getUsername()), + Utils::coreStringToAppString(callLog->getToAddress()->getUsername()) ); } diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp index a7c0416f5..ebf5bc7db 100644 --- a/linphone-app/src/components/calls/CallsListModel.cpp +++ b/linphone-app/src/components/calls/CallsListModel.cpp @@ -117,7 +117,7 @@ void CallsListModel::launchAudioCall (const QString &sipAddress, const QHashaddCustomHeader(Utils::appStringToCoreString(iterator.key()), Utils::appStringToCoreString(iterator.value())); } params->setProxyConfig(core->getDefaultProxyConfig()); - CallModel::setRecordFile(params, QString::fromStdString(address->getUsername())); + CallModel::setRecordFile(params, Utils::coreStringToAppString(address->getUsername())); shared_ptr currentProxyConfig = core->getDefaultProxyConfig(); if(currentProxyConfig){ if(currentProxyConfig->getState() == linphone::RegistrationState::Ok) @@ -153,7 +153,7 @@ void CallsListModel::launchSecureAudioCall (const QString &sipAddress, LinphoneE params->addCustomHeader(Utils::appStringToCoreString(iterator.key()), Utils::appStringToCoreString(iterator.value())); } params->setProxyConfig(core->getDefaultProxyConfig()); - CallModel::setRecordFile(params, QString::fromStdString(address->getUsername())); + CallModel::setRecordFile(params, Utils::coreStringToAppString(address->getUsername())); shared_ptr currentProxyConfig = core->getDefaultProxyConfig(); params->setMediaEncryption(LinphoneEnums::toLinphone(encryption)); if(currentProxyConfig){ @@ -189,7 +189,7 @@ void CallsListModel::launchVideoCall (const QString &sipAddress) const { shared_ptr params = core->createCallParams(nullptr); params->enableVideo(true); params->setProxyConfig(core->getDefaultProxyConfig()); - CallModel::setRecordFile(params, QString::fromStdString(address->getUsername())); + CallModel::setRecordFile(params, Utils::coreStringToAppString(address->getUsername())); core->inviteAddressWithParams(address, params); } @@ -240,23 +240,11 @@ ChatRoomModel* CallsListModel::createChat (const QString &participantAddress) co std::list > participants; std::shared_ptr localAddress; participants.push_back(address); - auto proxy = core->getDefaultProxyConfig(); params->setBackend(linphone::ChatRoomBackend::Basic); std::shared_ptr chatRoom = core->createChatRoom(params, localAddress, participants); - /* - if( chatRoom!=nullptr){ - auto search = core->searchChatRoom(params, localAddress - , address - , participants); - if(search != chatRoom) - qWarning("toto"); - } - - - return chatRoom!=nullptr; - */ + if( chatRoom != nullptr){ auto timelineList = CoreManager::getInstance()->getTimelineListModel(); auto timeline = timelineList->getTimeline(chatRoom, true); @@ -286,7 +274,7 @@ bool CallsListModel::createSecureChat (const QString& subject, const QString &pa auto proxy = core->getDefaultProxyConfig(); params->enableEncryption(true); - params->setSubject(subject.toStdString()); + params->setSubject(Utils::appStringToCoreString(subject)); params->setBackend(linphone::ChatRoomBackend::FlexisipChat); params->setEncryptionBackend(linphone::ChatRoomEncryptionBackend::Lime); params->enableGroup(true); @@ -336,13 +324,13 @@ QVariantMap CallsListModel::createChatRoom(const QString& subject, const int& se chatRoom = core->searchChatRoom(params, localAddress , localAddress , chatRoomParticipants); - params->setSubject(subject != ""?subject.toStdString():"Dummy Subject"); + params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject"); if(!chatRoom) chatRoom = core->searchChatRoom(params, localAddress , localAddress , chatRoomParticipants); }else - params->setSubject(subject != ""?subject.toStdString():"Dummy Subject"); + params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject"); if( !chatRoom) { chatRoom = core->createChatRoom(params, localAddress, chatRoomParticipants); if(chatRoom != nullptr && admins.size() > 0) diff --git a/linphone-app/src/components/chat-events/ChatMessageModel.cpp b/linphone-app/src/components/chat-events/ChatMessageModel.cpp index ebeebdfcd..44e1cb1eb 100644 --- a/linphone-app/src/components/chat-events/ChatMessageModel.cpp +++ b/linphone-app/src/components/chat-events/ChatMessageModel.cpp @@ -99,7 +99,7 @@ quint64 ContentModel::getFileSize() const{ } QString ContentModel::getName() const{ - return QString::fromStdString(mContent->getName()); + return Utils::coreStringToAppString(mContent->getName()); } QString ContentModel::getThumbnail() const{ @@ -329,7 +329,7 @@ ChatMessageModel::ChatMessageModel ( std::shared_ptr chat QString txt; for(auto content : contents){ if(content->isText()) - txt += QString::fromStdString(content->getUtf8Text()); + txt += Utils::coreStringToAppString(content->getUtf8Text()); } mContent = txt; //mIsOutgoing = chatMessage->isOutgoing() || chatMessage->getState() == linphone::ChatMessage::State::Idle; diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index 908c1e320..ed31d6ed7 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -223,7 +223,7 @@ ChatRoomModel::ChatRoomModel (std::shared_ptr chatRoom, QObj connect(mParticipantListModel.get(), &ParticipantListModel::participantsChanged, this, &ChatRoomModel::usernameChanged); auto participants = mChatRoom->getParticipants(); for(auto participant : participants){ - auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(QString::fromStdString((participant)->getAddress()->asString())); + auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((participant)->getAddress()->asString())); if(contact) { connect(contact, &ContactModel::contactUpdated, this, &ChatRoomModel::fullPeerAddressChanged); connect(contact, &ContactModel::contactUpdated, this, &ChatRoomModel::usernameChanged); @@ -368,7 +368,7 @@ QString ChatRoomModel::getFullPeerAddress () const { } QString ChatRoomModel::getFullLocalAddress () const { - return mChatRoom ? QString::fromStdString(mChatRoom->getLocalAddress()->asString()) : ""; + return mChatRoom ? Utils::coreStringToAppString(mChatRoom->getLocalAddress()->asString()) : ""; } QString ChatRoomModel::getConferenceAddress () const { @@ -376,12 +376,12 @@ QString ChatRoomModel::getConferenceAddress () const { return ""; else { auto address = mChatRoom->getConferenceAddress(); - return address?QString::fromStdString(address->asString()):""; + return address?Utils::coreStringToAppString(address->asString()):""; } } QString ChatRoomModel::getSubject () const { - return mChatRoom ? QString::fromStdString(mChatRoom->getSubject()) : ""; + return mChatRoom ? Utils::coreStringToAppString(mChatRoom->getSubject()) : ""; } QString ChatRoomModel::getUsername () const { @@ -389,7 +389,7 @@ QString ChatRoomModel::getUsername () const { if( !mChatRoom) return ""; if( isGroupEnabled()) - username = QString::fromStdString(mChatRoom->getSubject()); + username = Utils::coreStringToAppString(mChatRoom->getSubject()); if(username != "") return username; @@ -402,13 +402,13 @@ QString ChatRoomModel::getUsername () const { username = Utils::getDisplayName(mChatRoom->getPeerAddress()); if(username != "") return username; - return QString::fromStdString(mChatRoom->getPeerAddress()->asStringUriOnly()); + return Utils::coreStringToAppString(mChatRoom->getPeerAddress()->asStringUriOnly()); } QString ChatRoomModel::getAvatar () const { if( mChatRoom && mChatRoom->getNbParticipants() == 1){ auto participants = mChatRoom->getParticipants(); - auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(QString::fromStdString((*participants.begin())->getAddress()->asString())); + auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact) return contact->getVcardModel()->getAvatar(); } @@ -418,7 +418,7 @@ QString ChatRoomModel::getAvatar () const { int ChatRoomModel::getPresenceStatus() const { if( mChatRoom && mChatRoom->getNbParticipants() == 1 && !isGroupEnabled()){ auto participants = mChatRoom->getParticipants(); - auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(QString::fromStdString((*participants.begin())->getAddress()->asString())); + auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact) { int p = contact->getPresenceLevel(); return p; @@ -747,7 +747,7 @@ void ChatRoomModel::handlePresenceStatusReceived(std::shared_ptrgetLocalAddress()->weakEqual(*itContactAddress); if(!canUpdatePresence && !isGroupEnabled() && mChatRoom->getNbParticipants() == 1){ auto participants = mChatRoom->getParticipants(); - auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(QString::fromStdString((*participants.begin())->getAddress()->asString())); + auto contact = CoreManager::getInstance()->getContactsListModel()->findContactModelFromSipAddress(Utils::coreStringToAppString((*participants.begin())->getAddress()->asString())); if(contact){ auto friendsAddresses = contact->getVcardModel()->getSipAddresses(); for(auto friendAddress = friendsAddresses.begin() ; !canUpdatePresence && friendAddress != friendsAddresses.end() ; ++friendAddress){ @@ -948,6 +948,5 @@ void ChatRoomModel::onChatMessageShouldBeStored(const std::shared_ptr & chatRoom, const std::shared_ptr & message, const std::shared_ptr & state){ - qWarning() << "ChatRoom Imdn received :" << (state->getParticipant() != nullptr); } diff --git a/linphone-app/src/components/chat-room/ChatRoomProxyModel.cpp b/linphone-app/src/components/chat-room/ChatRoomProxyModel.cpp index 98d3d4c4b..a9c797a61 100644 --- a/linphone-app/src/components/chat-room/ChatRoomProxyModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomProxyModel.cpp @@ -261,13 +261,9 @@ void ChatRoomProxyModel::reload (ChatRoomModel *chatRoomModel) { QObject::disconnect(ChatRoomModel, &ChatRoomModel::messageSent, this, &ChatRoomProxyModel::handleMessageSent); } - //mChatRoomModel = CoreManager::getInstance()->getChatRoomModel(mPeerAddress, mLocalAddress, mIsSecure); - //if(mChatRoom) + mChatRoomModel = CoreManager::getInstance()->getTimelineListModel()->getChatRoomModel(chatRoomModel); - if(!mChatRoomModel) - qWarning() << "mChatRoomModel is null!"; - if (mChatRoomModel) { ChatRoomModel *ChatRoomModel = mChatRoomModel.get(); diff --git a/linphone-app/src/components/contact/VcardModel.cpp b/linphone-app/src/components/contact/VcardModel.cpp index c71122a25..f5a1de4df 100644 --- a/linphone-app/src/components/contact/VcardModel.cpp +++ b/linphone-app/src/components/contact/VcardModel.cpp @@ -196,7 +196,7 @@ void VcardModel::setUsername (const QString &username) { if (username.length() == 0 || username == getUsername()) return; - mVcard->setFullName(encode(username).toStdString()); + mVcard->setFullName(Utils::appStringToCoreString(encode(username))); emit vcardUpdated(); } diff --git a/linphone-app/src/components/contacts/ContactsListModel.cpp b/linphone-app/src/components/contacts/ContactsListModel.cpp index 146117961..751f15a4e 100644 --- a/linphone-app/src/components/contacts/ContactsListModel.cpp +++ b/linphone-app/src/components/contacts/ContactsListModel.cpp @@ -96,6 +96,9 @@ bool ContactsListModel::removeRows (int row, int count, const QModelIndex &paren for (int i = 0; i < count; ++i) { ContactModel *contact = mList.takeAt(row); + for(auto address : contact->getVcardModel()->getSipAddresses()){ + mOptimizedSearch.remove(address.toString()); + } mLinphoneFriends->removeFriend(contact->mLinphoneFriend); @@ -111,10 +114,16 @@ bool ContactsListModel::removeRows (int row, int count, const QModelIndex &paren // ----------------------------------------------------------------------------- ContactModel *ContactsListModel::findContactModelFromSipAddress (const QString &sipAddress) const { + if(mOptimizedSearch.contains(sipAddress)) + return mOptimizedSearch[sipAddress]; + else + return nullptr; +/* auto it = find_if(mList.begin(), mList.end(), [&sipAddress](ContactModel *contactModel) { return contactModel->getVcardModel()->getSipAddresses().contains(sipAddress); }); return it != mList.end() ? *it : nullptr; + */ } ContactModel *ContactsListModel::findContactModelFromUsername (const QString &username) const { @@ -186,11 +195,16 @@ void ContactsListModel::addContact (ContactModel *contact) { emit contactUpdated(contact); }); QObject::connect(contact, &ContactModel::sipAddressAdded, this, [this, contact](const QString &sipAddress) { + mOptimizedSearch[sipAddress] = contact; emit sipAddressAdded(contact, sipAddress); }); QObject::connect(contact, &ContactModel::sipAddressRemoved, this, [this, contact](const QString &sipAddress) { + mOptimizedSearch.remove(sipAddress); emit sipAddressRemoved(contact, sipAddress); }); mList << contact; + for(auto address : contact->getVcardModel()->getSipAddresses()){ + mOptimizedSearch[address.toString()] = contact; + } } diff --git a/linphone-app/src/components/contacts/ContactsListModel.hpp b/linphone-app/src/components/contacts/ContactsListModel.hpp index cd155da86..7963d1015 100644 --- a/linphone-app/src/components/contacts/ContactsListModel.hpp +++ b/linphone-app/src/components/contacts/ContactsListModel.hpp @@ -70,6 +70,7 @@ private: void addContact (ContactModel *contact); QList mList; + QMap mOptimizedSearch; std::shared_ptr mLinphoneFriends; }; diff --git a/linphone-app/src/components/core/CoreManager.cpp b/linphone-app/src/components/core/CoreManager.cpp index eee1b481c..547fed01a 100644 --- a/linphone-app/src/components/core/CoreManager.cpp +++ b/linphone-app/src/components/core/CoreManager.cpp @@ -122,129 +122,6 @@ CoreManager *CoreManager::getInstance (){ return mInstance; } -/* -shared_ptr CoreManager::getChatRoomModel (const QString &peerAddress, const QString &localAddress, const bool& isSecure) { - if (peerAddress.isEmpty() || localAddress.isEmpty()) - return nullptr; - - // Create a new chat model. - QPair> chatRoomModelId{isSecure,{ peerAddress, localAddress }}; - if (!mChatRoomModels.contains(chatRoomModelId)) { - if ( - !mCore->createAddress(peerAddress.toStdString()) || - !mCore->createAddress(localAddress.toStdString()) - ) { - qWarning() << QStringLiteral("Unable to get chat model from invalid chat model id: (%1, %2).") - .arg(peerAddress).arg(localAddress); - return nullptr; - } - - auto deleter = [this, chatRoomModelId](ChatRoomModel *chatRoomModel) { - bool removed = mChatRoomModels.remove(chatRoomModelId); - Q_ASSERT(removed); - delete chatRoomModel; - }; - - shared_ptr chatRoomModel(new ChatRoomModel(peerAddress, localAddress, isSecure), deleter); - mChatRoomModels[chatRoomModelId] = chatRoomModel; - - emit chatRoomModelCreated(chatRoomModel); - - return chatRoomModel; - } - - // Returns an existing chat model. - shared_ptr chatRoomModel = mChatRoomModels[chatRoomModelId].lock(); - Q_CHECK_PTR(chatRoomModel); - return chatRoomModel; -} -*/ -/* -shared_ptr CoreManager::getChatRoomModel (ChatRoomModel * data) { - if(data){ - return getChatRoomListModel()->getChatRoomModel(data); - - //for(auto it = mChatRoomModels.begin() ; it != mChatRoomModels.end() ; ++it){ - // auto a = it->second.lock(); - // if(a.get() == data) - // return a; - //} - } - return nullptr; -}*/ -/* -shared_ptr CoreManager::getChatRoomModel (std::shared_ptr chatRoom, const bool& create) { - if (!chatRoom) - return nullptr; - auto pc = chatRoom->getCurrentParams(); - for(auto it = mChatRoomModels.begin() ; it != mChatRoomModels.end() ; ++it) { - auto a = it->second.lock(); - auto pa = a->getChatRoom()->getCurrentParams(); - if( a->getChatRoom()->getConferenceAddress() == chatRoom->getConferenceAddress() - && a->getChatRoom()->getLocalAddress() == chatRoom->getLocalAddress() - && a->getChatRoom()->getPeerAddress() == chatRoom->getPeerAddress() - && pa->encryptionEnabled() == pc->encryptionEnabled() - ){ - // Returns an existing chat model. - if(a->mDeleteChatRoom) - return nullptr; - shared_ptr chatRoomModel = a; - Q_CHECK_PTR(chatRoomModel); - return chatRoomModel; - } - } - if(!create){ - return nullptr; - }else{ - //auto deleter = [this, chatRoomModelId](ChatRoomModel *chatRoomModel) { - shared_ptr chatRoomModel = ChatRoomModel::create(chatRoom); - auto deleter = [this](QObject * obj) { - //bool removed = mChatRoomModels.remove(chatRoomModelId); - ChatRoomModel * chatRoomModel = (ChatRoomModel*)obj; - auto c = chatRoomModel->getChatRoom(); - auto iterator = mChatRoomModels.begin(); - qWarning() << c.use_count(); - while(iterator != mChatRoomModels.end()) { - if(iterator->first != chatRoomModel->getChatRoom()) - ++iterator; - else{ - //iterator->first->removeListener(iterator->second.lock()); - auto i = *iterator; - qWarning() << c.use_count(); - mChatRoomModels.erase(iterator); - qWarning() << c.use_count(); - iterator = mChatRoomModels.end(); - } - } - qWarning() << c.use_count(); - if(chatRoomModel->mDeleteChatRoom){ - CoreManager::getInstance()->getCore()->deleteChatRoom(c); - } - qWarning() << c.use_count(); - }; - -// shared_ptr chatRoomModel = ChatRoomModel::create(chatRoom); - connect(chatRoomModel.get(), &QObject::destroyed, deleter); - mChatRoomModels.append({chatRoom, chatRoomModel}); - qWarning() << chatRoom.use_count(); - - //shared_ptr chatRoomModel = ChatRoomModel::create(chatRoom); - //(new ChatRoomModel(chatRoom), deleter); - //chatRoom->addListener(chatRoomModel); - //mChatRoomModels.append({chatRoom, chatRoomModel}); - - emit chatRoomModelCreated(chatRoomModel); - - return chatRoomModel; - } -} -*/ -/* -//bool CoreManager::chatRoomModelExists (const QString &peerAddress, const QString &localAddress, const bool &isSecure) { -bool CoreManager::chatRoomModelExists (std::shared_ptr chatRoom) { - //return mChatRoomModels.contains({isSecure, { peerAddress, localAddress}}); - return mChatRoomModels.contains(chatRoom); -}*/ HistoryModel* CoreManager::getHistoryModel(){ if(!mHistoryModel){ diff --git a/linphone-app/src/components/history/HistoryModel.cpp b/linphone-app/src/components/history/HistoryModel.cpp index 2e506cf3d..6c341f7cb 100644 --- a/linphone-app/src/components/history/HistoryModel.cpp +++ b/linphone-app/src/components/history/HistoryModel.cpp @@ -53,7 +53,7 @@ static inline void fillCallStartEntry (QVariantMap &dest, const shared_ptrgetDir() == linphone::Call::Dir::Outgoing; dest["status"] = static_cast(callLog->getStatus()); dest["isStart"] = true; - dest["sipAddress"] = QString::fromStdString(callLog->getRemoteAddress()->asString()); + dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString()); } static inline void fillCallEndEntry (QVariantMap &dest, const shared_ptr &callLog) { @@ -62,7 +62,7 @@ static inline void fillCallEndEntry (QVariantMap &dest, const shared_ptrgetDir() == linphone::Call::Dir::Outgoing; dest["status"] = static_cast(callLog->getStatus()); dest["isStart"] = false; - dest["sipAddress"] = QString::fromStdString(callLog->getRemoteAddress()->asString()); + dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString()); } // ----------------------------------------------------------------------------- diff --git a/linphone-app/src/components/notifier/Notifier.cpp b/linphone-app/src/components/notifier/Notifier.cpp index 6617e64fc..61a291e14 100644 --- a/linphone-app/src/components/notifier/Notifier.cpp +++ b/linphone-app/src/components/notifier/Notifier.cpp @@ -278,8 +278,8 @@ void Notifier::notifyReceivedMessage (const shared_ptr &m map["timelineModel"].setValue(CoreManager::getInstance()->getTimelineListModel()->getTimeline(chatRoom, true).get()); map["peerAddress"] = Utils::coreStringToAppString(chatRoom->getPeerAddress()->asStringUriOnly()); map["localAddress"] = Utils::coreStringToAppString(chatRoom->getLocalAddress()->asStringUriOnly()); - map["fullPeerAddress"] = QString::fromStdString(chatRoom->getPeerAddress()->asString()); - map["fullLocalAddress"] = QString::fromStdString(chatRoom->getLocalAddress()->asString()); + map["fullPeerAddress"] = Utils::coreStringToAppString(chatRoom->getPeerAddress()->asString()); + map["fullLocalAddress"] = Utils::coreStringToAppString(chatRoom->getLocalAddress()->asString()); map["window"].setValue(App::getInstance()->getMainWindow()); CREATE_NOTIFICATION(Notifier::ReceivedMessage, map) } diff --git a/linphone-app/src/components/other/colors/ColorListModel.cpp b/linphone-app/src/components/other/colors/ColorListModel.cpp index a73877eb4..dd0cebc3b 100644 --- a/linphone-app/src/components/other/colors/ColorListModel.cpp +++ b/linphone-app/src/components/other/colors/ColorListModel.cpp @@ -107,7 +107,6 @@ void ColorListModel::useConfig (const std::shared_ptr &config) QString ColorListModel::getNames(){ QStringList names; - qWarning() << "A"; const QMetaObject *info = metaObject(); for (int i = info->propertyOffset(); i < info->propertyCount(); ++i) { diff --git a/linphone-app/src/components/participant/ParticipantListModel.cpp b/linphone-app/src/components/participant/ParticipantListModel.cpp index 0853bac8e..c02eab7d0 100644 --- a/linphone-app/src/components/participant/ParticipantListModel.cpp +++ b/linphone-app/src/components/participant/ParticipantListModel.cpp @@ -317,8 +317,6 @@ void ParticipantListModel::onParticipantDeviceRemoved(const std::shared_ptr & chatRoom, const std::shared_ptr & participantAddress){ - qWarning() << "Toto"; } void ParticipantListModel::onParticipantRegistrationUnsubscriptionRequested(const std::shared_ptr & chatRoom, const std::shared_ptr & participantAddress){ - qWarning() << "Toto"; } diff --git a/linphone-app/src/components/search/SearchResultModel.cpp b/linphone-app/src/components/search/SearchResultModel.cpp index 9701d46f6..e47556be8 100644 --- a/linphone-app/src/components/search/SearchResultModel.cpp +++ b/linphone-app/src/components/search/SearchResultModel.cpp @@ -23,6 +23,8 @@ #include "components/contact/ContactModel.hpp" #include "components/contacts/ContactsListModel.hpp" +#include "utils/Utils.hpp" + // ============================================================================= SearchResultModel::SearchResultModel(std::shared_ptr linphoneFriend, std::shared_ptr address, QObject * parent) : QObject(parent){ @@ -34,11 +36,11 @@ SearchResultModel::SearchResultModel(std::shared_ptr lin } QString SearchResultModel::getAddressString() const{ - return QString::fromStdString(mAddress->asString()); + return Utils::coreStringToAppString(mAddress->asString()); } QString SearchResultModel::getAddressStringUriOnly() const{ - return QString::fromStdString(mAddress->asStringUriOnly()); + return Utils::coreStringToAppString(mAddress->asStringUriOnly()); } std::shared_ptr SearchResultModel::getAddress() const{ diff --git a/linphone-app/src/components/search/SearchSipAddressesModel.cpp b/linphone-app/src/components/search/SearchSipAddressesModel.cpp index d580c9f6b..3acb447fb 100644 --- a/linphone-app/src/components/search/SearchSipAddressesModel.cpp +++ b/linphone-app/src/components/search/SearchSipAddressesModel.cpp @@ -106,8 +106,8 @@ bool SearchSipAddressesModel::removeRows (int row, int count, const QModelIndex } void SearchSipAddressesModel::setFilter(const QString& filter){ - mMagicSearch->getContactListFromFilterAsync(filter.toStdString(),""); - //searchReceived(mMagicSearch->getContactListFromFilter(filter.toStdString(),"")); // Just to show how to use sync method + mMagicSearch->getContactListFromFilterAsync(Utils::appStringToCoreString(filter),""); + //searchReceived(mMagicSearch->getContactListFromFilter(Utils::appStringToCoreString(filter),"")); // Just to show how to use sync method } void SearchSipAddressesModel::searchReceived(std::list> results){ diff --git a/linphone-app/src/components/settings/AccountSettingsModel.cpp b/linphone-app/src/components/settings/AccountSettingsModel.cpp index 25b8fe1d1..d657c9e82 100644 --- a/linphone-app/src/components/settings/AccountSettingsModel.cpp +++ b/linphone-app/src/components/settings/AccountSettingsModel.cpp @@ -84,7 +84,7 @@ QString AccountSettingsModel::getUsedSipAddressAsStringUriOnly () const { } QString AccountSettingsModel::getUsedSipAddressAsString () const { - return QString::fromStdString(getUsedSipAddress()->asString()); + return Utils::coreStringToAppString(getUsedSipAddress()->asString()); } // ----------------------------------------------------------------------------- @@ -123,7 +123,7 @@ QVariantMap AccountSettingsModel::getProxyConfigDescription (const shared_ptr
  • address = proxyConfig->getIdentityAddress(); map["sipAddress"] = address - ? QString::fromStdString(proxyConfig->getIdentityAddress()->asString()) + ? Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asString()) : QString(""); } map["serverAddress"] = Utils::coreStringToAppString(proxyConfig->getServerAddr()); @@ -223,7 +223,7 @@ bool AccountSettingsModel::addOrUpdateProxyConfig ( // Sip address. { - shared_ptr address = linphone::Factory::get()->createAddress(literal.toStdString()); + shared_ptr address = linphone::Factory::get()->createAddress(Utils::appStringToCoreString(literal)); if (!address) { qWarning() << QStringLiteral("Unable to create sip address object from: `%1`.").arg(literal); return false; @@ -331,7 +331,7 @@ QString AccountSettingsModel::getUsername () const { shared_ptr address = getUsedSipAddress(); const string displayName = address->getDisplayName(); - return QString::fromStdString( + return Utils::coreStringToAppString( displayName.empty() ? address->getUsername() : displayName ); } @@ -341,7 +341,7 @@ void AccountSettingsModel::setUsername (const QString &username) { shared_ptr newAddress = address->clone(); QString oldUsername = Utils::coreStringToAppString(newAddress->getUsername()); if( oldUsername != username) { - if (newAddress->setDisplayName(username.toStdString())) { + if (newAddress->setDisplayName(Utils::appStringToCoreString(username))) { qWarning() << QStringLiteral("Unable to set displayName on sip address: `%1`.") .arg(Utils::coreStringToAppString(newAddress->asStringUriOnly())); } else { @@ -359,7 +359,7 @@ AccountSettingsModel::RegistrationState AccountSettingsModel::getRegistrationSta // ----------------------------------------------------------------------------- QString AccountSettingsModel::getPrimaryUsername () const { - return QString::fromStdString( + return Utils::coreStringToAppString( CoreManager::getInstance()->getCore()->createPrimaryContactParsed()->getUsername() ); } @@ -379,7 +379,7 @@ void AccountSettingsModel::setPrimaryUsername (const QString &username) { } QString AccountSettingsModel::getPrimaryDisplayName () const { - return QString::fromStdString(CoreManager::getInstance()->getCore()->createPrimaryContactParsed()->getDisplayName()); + return Utils::coreStringToAppString(CoreManager::getInstance()->getCore()->createPrimaryContactParsed()->getDisplayName()); } void AccountSettingsModel::setPrimaryDisplayName (const QString &displayName) { @@ -388,14 +388,14 @@ void AccountSettingsModel::setPrimaryDisplayName (const QString &displayName) { QString oldDisplayName = Utils::coreStringToAppString(primary->getDisplayName()); if(oldDisplayName != displayName){ - primary->setDisplayName(displayName.toStdString()); + primary->setDisplayName(Utils::appStringToCoreString(displayName)); core->setPrimaryContact(primary->asString()); emit accountSettingsUpdated(); } } QString AccountSettingsModel::getPrimarySipAddress () const { - return QString::fromStdString( + return Utils::coreStringToAppString( CoreManager::getInstance()->getCore()->createPrimaryContactParsed()->asString() ); } @@ -409,7 +409,7 @@ QVariantList AccountSettingsModel::getAccounts () const { if(CoreManager::getInstance()->getSettingsModel()->getShowLocalSipAccount()) { QVariantMap account; account["sipAddress"] = Utils::coreStringToAppString(core->createPrimaryContactParsed()->asStringUriOnly()); - account["fullSipAddress"] = QString::fromStdString(core->createPrimaryContactParsed()->asString()); + account["fullSipAddress"] = Utils::coreStringToAppString(core->createPrimaryContactParsed()->asString()); account["unreadMessageCount"] = core->getUnreadChatMessageCountFromLocal(core->createPrimaryContactParsed()); account["missedCallCount"] = CoreManager::getInstance()->getMissedCallCountFromLocal(account["sipAddress"].toString()); account["proxyConfig"].setValue(nullptr); @@ -419,7 +419,7 @@ QVariantList AccountSettingsModel::getAccounts () const { for (const auto &proxyConfig : core->getProxyConfigList()) { QVariantMap account; account["sipAddress"] = Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asStringUriOnly()); - account["fullSipAddress"] = QString::fromStdString(proxyConfig->getIdentityAddress()->asString()); + account["fullSipAddress"] = Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asString()); account["proxyConfig"].setValue(proxyConfig); account["unreadMessageCount"] = proxyConfig->getUnreadChatMessageCount(); account["missedCallCount"] = CoreManager::getInstance()->getMissedCallCountFromLocal(account["sipAddress"].toString()); diff --git a/linphone-app/src/components/sip-addresses/SipAddressesModel.cpp b/linphone-app/src/components/sip-addresses/SipAddressesModel.cpp index 049bc0dd7..08104dacb 100644 --- a/linphone-app/src/components/sip-addresses/SipAddressesModel.cpp +++ b/linphone-app/src/components/sip-addresses/SipAddressesModel.cpp @@ -154,7 +154,7 @@ SipAddressObserver *SipAddressesModel::getSipAddressObserver (const QString &pee QString SipAddressesModel::getTransportFromSipAddress (const QString &sipAddress) { if( sipAddress.toUpper().contains("TRANSPORT=")) {// Transport has been specified : check for it - const shared_ptr address = linphone::Factory::get()->createAddress(sipAddress.toStdString()); + const shared_ptr address = linphone::Factory::get()->createAddress(Utils::appStringToCoreString(sipAddress)); if (!address) return QString("TLS"); // Return TLS by default @@ -174,14 +174,14 @@ QString SipAddressesModel::getTransportFromSipAddress (const QString &sipAddress } QString SipAddressesModel::addTransportToSipAddress (const QString &sipAddress, const QString &transport) { - shared_ptr address = linphone::Factory::get()->createAddress(sipAddress.toStdString()); + shared_ptr address = linphone::Factory::get()->createAddress(Utils::appStringToCoreString(sipAddress)); if (!address) return QString(""); address->setTransport(Utils::stringToTransportType(transport.toUpper())); - return QString::fromStdString(address->asString()); + return Utils::coreStringToAppString(address->asString()); } // ----------------------------------------------------------------------------- @@ -227,11 +227,11 @@ QString SipAddressesModel::interpretSipAddress (const QUrl &sipAddress) { } bool SipAddressesModel::addressIsValid (const QString &address) { - return !!linphone::Factory::get()->createAddress(address.toStdString()); + return !!linphone::Factory::get()->createAddress(Utils::appStringToCoreString(address)); } bool SipAddressesModel::sipAddressIsValid (const QString &sipAddress) { - shared_ptr address = linphone::Factory::get()->createAddress(sipAddress.toStdString()); + shared_ptr address = linphone::Factory::get()->createAddress(Utils::appStringToCoreString(sipAddress)); return address && !address->getUsername().empty(); } // Return at most : sip:username@domain @@ -286,7 +286,6 @@ void SipAddressesModel::handleHistoryModelCreated (HistoryModel *historyModel) { } void SipAddressesModel::handleContactAdded (ContactModel *contact) { for (const auto &sipAddress : contact->getVcardModel()->getSipAddresses()) { - qWarning() << "handleContactAdded " << sipAddress.toString(); addOrUpdateSipAddress(sipAddress.toString(), contact); } } @@ -302,7 +301,6 @@ void SipAddressesModel::handleSipAddressAdded (ContactModel *contact, const QStr qWarning() << "Unable to map sip address" << sipAddress << "to" << contact << "- already used by" << mappedContact; return; } - qWarning() << "handleSipAddressAdded " << sipAddress; addOrUpdateSipAddress(sipAddress, contact); } @@ -317,7 +315,6 @@ void SipAddressesModel::handleSipAddressRemoved (ContactModel *contact, const QS } void SipAddressesModel::handleMessageReceived (const shared_ptr &message) { - qInfo() << "Handle message received."; const QString peerAddress(Utils::coreStringToAppString(message->getChatRoom()->getPeerAddress()->asStringUriOnly())); addOrUpdateSipAddress(peerAddress, message); } @@ -442,7 +439,6 @@ void SipAddressesModel::handleMessageCountReset (ChatRoomModel *chatRoomModel) { } void SipAddressesModel::handleMessageSent (const shared_ptr &message) { - qInfo() << "Handle message sent."; const QString peerAddress(Utils::coreStringToAppString(message->getChatRoom()->getPeerAddress()->asStringUriOnly())); addOrUpdateSipAddress(peerAddress, message); } diff --git a/linphone-app/src/components/timeline/TimelineModel.cpp b/linphone-app/src/components/timeline/TimelineModel.cpp index 7d35b2892..081ec65a7 100644 --- a/linphone-app/src/components/timeline/TimelineModel.cpp +++ b/linphone-app/src/components/timeline/TimelineModel.cpp @@ -92,8 +92,17 @@ ChatRoomModel *TimelineModel::getChatRoomModel() const{ void TimelineModel::setSelected(const bool& selected){ if(selected != mSelected){ mSelected = selected; - if(mSelected) + if(mSelected){ + qInfo() << "Chat room selected : Subject :" << mChatRoomModel->getSubject() + << ", Username:" << mChatRoomModel->getUsername() + << ", GroupEnabled:"<< mChatRoomModel->isGroupEnabled() + << ", Encrypted:"<< mChatRoomModel->haveEncryption() + << ", ephemeralEnabled:" << mChatRoomModel->haveEncryption() + << ", isAdmin:"<< mChatRoomModel->isMeAdmin() + << ", canHandleParticipants:"<< mChatRoomModel->canHandleParticipants() + << ", hasBeenLeft:" << mChatRoomModel->hasBeenLeft(); mChatRoomModel->initEntries(); + } emit selectedChanged(mSelected); } }