mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-23 14:48:15 +00:00
Friends search optimization, remove Qt conversion on strings and feedback on chat room selection
This commit is contained in:
parent
09ac6e45d7
commit
0db46dd918
19 changed files with 82 additions and 204 deletions
|
|
@ -231,13 +231,13 @@ bool AssistantModel::addOtherSipAccount (const QVariantMap &map) {
|
|||
}
|
||||
|
||||
// Sip Address.
|
||||
shared_ptr<linphone::Address> address = factory->createAddress(sipAddress.toStdString());
|
||||
shared_ptr<linphone::Address> 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))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,6 @@ CallModel::CallModel (shared_ptr<linphone::Call> 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<linphone::CallParams> &callParam
|
|||
|
||||
void CallModel::setRecordFile (const shared_ptr<linphone::CallParams> &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<linphone::CallLog> 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())
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ void CallsListModel::launchAudioCall (const QString &sipAddress, const QHash<QSt
|
|||
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<linphone::ProxyConfig> 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<linphone::ProxyConfig> currentProxyConfig = core->getDefaultProxyConfig();
|
||||
params->setMediaEncryption(LinphoneEnums::toLinphone(encryption));
|
||||
if(currentProxyConfig){
|
||||
|
|
@ -189,7 +189,7 @@ void CallsListModel::launchVideoCall (const QString &sipAddress) const {
|
|||
shared_ptr<linphone::CallParams> 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 <shared_ptr<linphone::Address> > participants;
|
||||
std::shared_ptr<const linphone::Address> localAddress;
|
||||
participants.push_back(address);
|
||||
auto proxy = core->getDefaultProxyConfig();
|
||||
|
||||
params->setBackend(linphone::ChatRoomBackend::Basic);
|
||||
|
||||
std::shared_ptr<linphone::ChatRoom> 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)
|
||||
|
|
|
|||
|
|
@ -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<linphone::ChatMessage> 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;
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ ChatRoomModel::ChatRoomModel (std::shared_ptr<linphone::ChatRoom> 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_ptr<linphone::Frien
|
|||
canUpdatePresence = mChatRoom->getLocalAddress()->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<linphone::
|
|||
}
|
||||
|
||||
void ChatRoomModel::onChatMessageParticipantImdnStateChanged(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<linphone::ChatMessage> & message, const std::shared_ptr<const linphone::ParticipantImdnState> & state){
|
||||
qWarning() << "ChatRoom Imdn received :" << (state->getParticipant() != nullptr);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ private:
|
|||
void addContact (ContactModel *contact);
|
||||
|
||||
QList<ContactModel *> mList;
|
||||
QMap<QString, ContactModel*> mOptimizedSearch;
|
||||
std::shared_ptr<linphone::FriendList> mLinphoneFriends;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -122,129 +122,6 @@ CoreManager *CoreManager::getInstance (){
|
|||
return mInstance;
|
||||
}
|
||||
|
||||
/*
|
||||
shared_ptr<ChatRoomModel> CoreManager::getChatRoomModel (const QString &peerAddress, const QString &localAddress, const bool& isSecure) {
|
||||
if (peerAddress.isEmpty() || localAddress.isEmpty())
|
||||
return nullptr;
|
||||
|
||||
// Create a new chat model.
|
||||
QPair<bool, QPair<QString, QString>> 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> chatRoomModel(new ChatRoomModel(peerAddress, localAddress, isSecure), deleter);
|
||||
mChatRoomModels[chatRoomModelId] = chatRoomModel;
|
||||
|
||||
emit chatRoomModelCreated(chatRoomModel);
|
||||
|
||||
return chatRoomModel;
|
||||
}
|
||||
|
||||
// Returns an existing chat model.
|
||||
shared_ptr<ChatRoomModel> chatRoomModel = mChatRoomModels[chatRoomModelId].lock();
|
||||
Q_CHECK_PTR(chatRoomModel);
|
||||
return chatRoomModel;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
shared_ptr<ChatRoomModel> 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<ChatRoomModel> CoreManager::getChatRoomModel (std::shared_ptr<linphone::ChatRoom> 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> chatRoomModel = a;
|
||||
Q_CHECK_PTR(chatRoomModel);
|
||||
return chatRoomModel;
|
||||
}
|
||||
}
|
||||
if(!create){
|
||||
return nullptr;
|
||||
}else{
|
||||
//auto deleter = [this, chatRoomModelId](ChatRoomModel *chatRoomModel) {
|
||||
shared_ptr<ChatRoomModel> 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 = ChatRoomModel::create(chatRoom);
|
||||
connect(chatRoomModel.get(), &QObject::destroyed, deleter);
|
||||
mChatRoomModels.append({chatRoom, chatRoomModel});
|
||||
qWarning() << chatRoom.use_count();
|
||||
|
||||
//shared_ptr<ChatRoomModel> 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<linphone::ChatRoom> chatRoom) {
|
||||
//return mChatRoomModels.contains({isSecure, { peerAddress, localAddress}});
|
||||
return mChatRoomModels.contains(chatRoom);
|
||||
}*/
|
||||
|
||||
HistoryModel* CoreManager::getHistoryModel(){
|
||||
if(!mHistoryModel){
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ static inline void fillCallStartEntry (QVariantMap &dest, const shared_ptr<linph
|
|||
dest["isOutgoing"] = callLog->getDir() == linphone::Call::Dir::Outgoing;
|
||||
dest["status"] = static_cast<HistoryModel::CallStatus>(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<linphone::CallLog> &callLog) {
|
||||
|
|
@ -62,7 +62,7 @@ static inline void fillCallEndEntry (QVariantMap &dest, const shared_ptr<linphon
|
|||
dest["isOutgoing"] = callLog->getDir() == linphone::Call::Dir::Outgoing;
|
||||
dest["status"] = static_cast<HistoryModel::CallStatus>(callLog->getStatus());
|
||||
dest["isStart"] = false;
|
||||
dest["sipAddress"] = QString::fromStdString(callLog->getRemoteAddress()->asString());
|
||||
dest["sipAddress"] = Utils::coreStringToAppString(callLog->getRemoteAddress()->asString());
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -278,8 +278,8 @@ void Notifier::notifyReceivedMessage (const shared_ptr<linphone::ChatMessage> &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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ void ColorListModel::useConfig (const std::shared_ptr<linphone::Config> &config)
|
|||
|
||||
QString ColorListModel::getNames(){
|
||||
QStringList names;
|
||||
qWarning() << "A";
|
||||
const QMetaObject *info = metaObject();
|
||||
|
||||
for (int i = info->propertyOffset(); i < info->propertyCount(); ++i) {
|
||||
|
|
|
|||
|
|
@ -317,8 +317,6 @@ void ParticipantListModel::onParticipantDeviceRemoved(const std::shared_ptr<linp
|
|||
}
|
||||
}
|
||||
void ParticipantListModel::onParticipantRegistrationSubscriptionRequested(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<const linphone::Address> & participantAddress){
|
||||
qWarning() << "Toto";
|
||||
}
|
||||
void ParticipantListModel::onParticipantRegistrationUnsubscriptionRequested(const std::shared_ptr<linphone::ChatRoom> & chatRoom, const std::shared_ptr<const linphone::Address> & participantAddress){
|
||||
qWarning() << "Toto";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
#include "components/contact/ContactModel.hpp"
|
||||
#include "components/contacts/ContactsListModel.hpp"
|
||||
|
||||
#include "utils/Utils.hpp"
|
||||
|
||||
// =============================================================================
|
||||
|
||||
SearchResultModel::SearchResultModel(std::shared_ptr<const linphone::Friend> linphoneFriend, std::shared_ptr<const linphone::Address> address, QObject * parent) : QObject(parent){
|
||||
|
|
@ -34,11 +36,11 @@ SearchResultModel::SearchResultModel(std::shared_ptr<const linphone::Friend> 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<linphone::Address> SearchResultModel::getAddress() const{
|
||||
|
|
|
|||
|
|
@ -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<std::shared_ptr<linphone::SearchResult>> results){
|
||||
|
|
|
|||
|
|
@ -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<li
|
|||
{
|
||||
const shared_ptr<const linphone::Address> 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<linphone::Address> address = linphone::Factory::get()->createAddress(literal.toStdString());
|
||||
shared_ptr<linphone::Address> 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<const linphone::Address> 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<linphone::Address> 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());
|
||||
|
|
|
|||
|
|
@ -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<const linphone::Address> address = linphone::Factory::get()->createAddress(sipAddress.toStdString());
|
||||
const shared_ptr<const linphone::Address> 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<linphone::Address> address = linphone::Factory::get()->createAddress(sipAddress.toStdString());
|
||||
shared_ptr<linphone::Address> 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<linphone::Address> address = linphone::Factory::get()->createAddress(sipAddress.toStdString());
|
||||
shared_ptr<linphone::Address> 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<linphone::ChatMessage> &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<linphone::ChatMessage> &message) {
|
||||
qInfo() << "Handle message sent.";
|
||||
const QString peerAddress(Utils::coreStringToAppString(message->getChatRoom()->getPeerAddress()->asStringUriOnly()));
|
||||
addOrUpdateSipAddress(peerAddress, message);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue