From b39f7b014cf352bdb0624b1040c9d70638cbf198 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Mon, 13 Jun 2022 12:32:21 +0200 Subject: [PATCH] Remove deprecated proxy while accepting a call. Fix filtering non-empty terminated chat rooms. Recreate a new chat room if trying to create one that already exist in terminated state. Fix creating an unscheduled video conference. Remove description form from unscheduled video conference. Fix white color on call quality. --- linphone-app/assets/languages/it.ts | 2 +- .../src/components/call/CallModel.cpp | 7 ++-- .../src/components/calls/CallsListModel.cpp | 5 +++ .../components/chat-room/ChatRoomModel.cpp | 4 +++ .../components/chat-room/ChatRoomModel.hpp | 1 + .../conference/ConferenceListener.cpp | 3 ++ .../conferenceInfo/ConferenceInfoModel.cpp | 36 ++++++++++--------- .../ConferenceScheduler.cpp | 2 ++ .../components/timeline/TimelineListModel.cpp | 6 ++-- .../src/components/timeline/TimelineModel.cpp | 2 +- .../ui/views/App/Dialog/NewConference.qml | 1 + .../App/Styles/Calls/CallFullscreenStyle.qml | 2 +- .../ui/views/App/Styles/Calls/CallStyle.qml | 2 +- 13 files changed, 45 insertions(+), 28 deletions(-) diff --git a/linphone-app/assets/languages/it.ts b/linphone-app/assets/languages/it.ts index 5068de483..5e11d6559 100644 --- a/linphone-app/assets/languages/it.ts +++ b/linphone-app/assets/languages/it.ts @@ -3369,7 +3369,7 @@ Clicca: <a href="%1">%1</a> cancelButton 'Cancel' : Cancel button. - + ANNULLA startButton diff --git a/linphone-app/src/components/call/CallModel.cpp b/linphone-app/src/components/call/CallModel.cpp index f8df585a8..24bfe7a55 100644 --- a/linphone-app/src/components/call/CallModel.cpp +++ b/linphone-app/src/components/call/CallModel.cpp @@ -501,10 +501,9 @@ void CallModel::accept (bool withVideo) { params->enableVideo(withVideo); setRecordFile(params); auto localAddress = mCall->getCallLog()->getLocalAddress(); - std::list> proxies = core->getProxyConfigList() ; - for(auto proxy : proxies){ - if(proxy->getIdentityAddress()->weakEqual(localAddress)) { - params->setProxyConfig(proxy); + for(auto account : core->getAccountList()){ + if( account->getParams()->getIdentityAddress()->weakEqual(localAddress)){ + params->setAccount(account); break; } } diff --git a/linphone-app/src/components/calls/CallsListModel.cpp b/linphone-app/src/components/calls/CallsListModel.cpp index 8d02478e0..6493e09f2 100644 --- a/linphone-app/src/components/calls/CallsListModel.cpp +++ b/linphone-app/src/components/calls/CallsListModel.cpp @@ -323,11 +323,16 @@ QVariantMap CallsListModel::createChatRoom(const QString& subject, const int& se chatRoom = core->searchChatRoom(params, localAddress , nullptr , chatRoomParticipants); + if(chatRoom && ChatRoomModel::isTerminated(chatRoom)) + chatRoom = nullptr; params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject"); + if(!chatRoom) chatRoom = core->searchChatRoom(params, localAddress , nullptr , chatRoomParticipants); + if(chatRoom && ChatRoomModel::isTerminated(chatRoom)) + chatRoom = nullptr; }else params->setSubject(subject != ""?Utils::appStringToCoreString(subject):"Dummy Subject"); if( !chatRoom) { diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index 9b9df4473..bea32c713 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -849,6 +849,10 @@ int ChatRoomModel::loadTillMessage(ChatMessageModel * message){ return -1; } +bool ChatRoomModel::isTerminated(const std::shared_ptr& chatRoom){ + return chatRoom->getState() == linphone::ChatRoom::State::Terminated || chatRoom->getState() == linphone::ChatRoom::State::Deleted; +} + void ChatRoomModel::initEntries(){ if( mList.size() > mLastEntriesStep) resetData(); diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.hpp b/linphone-app/src/components/chat-room/ChatRoomModel.hpp index 7fa941864..abb884cb9 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.hpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.hpp @@ -173,6 +173,7 @@ public: void callEnded(std::shared_ptr call); void updateNewMessageNotice(const int& count); Q_INVOKABLE int loadTillMessage(ChatMessageModel * message);// Load all entries till message and return its index. -1 if not found. + static bool isTerminated(const std::shared_ptr& chatRoom); QDateTime mLastUpdateTime; int mUnreadMessagesCount = 0; diff --git a/linphone-app/src/components/conference/ConferenceListener.cpp b/linphone-app/src/components/conference/ConferenceListener.cpp index 82738d5f8..07b2b633c 100644 --- a/linphone-app/src/components/conference/ConferenceListener.cpp +++ b/linphone-app/src/components/conference/ConferenceListener.cpp @@ -52,6 +52,9 @@ void ConferenceListener::onParticipantRemoved(const std::shared_ptr & conference, const std::shared_ptr & participantDevice){ qDebug() << "onParticipantDeviceAdded"; qDebug() << "Me devices : " << conference->getMe()->getDevices().size(); + if( conference->getMe()->getDevices().size() > 1) + for(auto d : conference->getMe()->getDevices()) + qDebug() << "\t--> " << d->getAddress()->asString().c_str(); emit participantDeviceAdded(participantDevice); } void ConferenceListener::onParticipantDeviceRemoved(const std::shared_ptr & conference, const std::shared_ptr & participantDevice){ diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp index d816724a9..b60794fdb 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp @@ -221,6 +221,18 @@ void ConferenceInfoModel::setTimeZoneModel(TimeZoneModel * model){ void ConferenceInfoModel::setIsScheduled(const bool& on){ if( mIsScheduled != on){ mIsScheduled = on; + if(!mIsScheduled){ + mConferenceInfo->setDateTime(0); + mConferenceInfo->setDuration(0); + }else{ + mTimeZone = QTimeZone::systemTimeZone(); + QDateTime currentDateTime = QDateTime::currentDateTime(); + QDateTime utc = currentDateTime.addSecs( -mTimeZone.offsetFromUtc(currentDateTime)); + mConferenceInfo->setDateTime(utc.toMSecsSinceEpoch() / 1000); + mConferenceInfo->setDuration(1200); + } + emit dateTimeChanged(); + emit durationChanged(); emit isScheduledChanged(); } } @@ -232,23 +244,15 @@ void ConferenceInfoModel::createConference(const int& securityLevel, const int& shared_ptr core = CoreManager::getInstance()->getCore(); static std::shared_ptr conference; qInfo() << "Conference creation of " << getSubject() << " at " << securityLevel << " security, organized by " << getOrganizer(); + qInfo() << "Participants:"; + for(auto p : mConferenceInfo->getParticipants()) + qInfo() << "\t" << p->asString().c_str(); - if( isScheduled()){ - mConferenceScheduler = ConferenceScheduler::create(); - connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent); - connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged); - mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo); - }else{ - auto conferenceParameters = core->createConferenceParams(nullptr); - conferenceParameters->enableAudio(true); - conferenceParameters->enableVideo(true); - conferenceParameters->setDescription(mConferenceInfo->getDescription()); - conferenceParameters->setSubject(mConferenceInfo->getSubject()); - conferenceParameters->setStartTime(0); - conferenceParameters->setEndTime(0); - conferenceParameters->enableLocalParticipant(true); - conference = core->createConferenceWithParams(conferenceParameters); - } + + mConferenceScheduler = ConferenceScheduler::create(); + connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent); + connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged); + mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo); } //------------------------------------------------------------------------------------------------- diff --git a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp index deff56552..1f74d6315 100644 --- a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp +++ b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp @@ -38,6 +38,8 @@ QSharedPointer ConferenceScheduler::create( QObject *parent ConferenceScheduler::ConferenceScheduler (QObject * parent) : QObject(parent){ App::getInstance()->getEngine()->setObjectOwnership(this, QQmlEngine::CppOwnership);// Avoid QML to destroy it when passing by Q_INVOKABLE mConferenceScheduler = CoreManager::getInstance()->getCore()->createConferenceScheduler(); + qDebug() << "Create Scheduler with this account : " << CoreManager::getInstance()->getCore()->getDefaultAccount()->getContactAddress()->asString().c_str(); + mConferenceScheduler->setAccount(CoreManager::getInstance()->getCore()->getDefaultAccount()); mConferenceSchedulerListener = std::make_shared(); connectTo(mConferenceSchedulerListener.get()); mConferenceScheduler->addListener(mConferenceSchedulerListener); diff --git a/linphone-app/src/components/timeline/TimelineListModel.cpp b/linphone-app/src/components/timeline/TimelineListModel.cpp index b400ed02a..65c3d6423 100644 --- a/linphone-app/src/components/timeline/TimelineListModel.cpp +++ b/linphone-app/src/components/timeline/TimelineListModel.cpp @@ -208,11 +208,9 @@ void TimelineListModel::updateTimelines () { // Clean terminated chat rooms and conferences from timeline. allChatRooms.remove_if([](std::shared_ptr chatRoom){ - bool toRemove = chatRoom->getState() == linphone::ChatRoom::State::Terminated || chatRoom->getState() == linphone::ChatRoom::State::Deleted - || (chatRoom->getConferenceAddress() && chatRoom->getHistoryEventsSize() == 0); - if( toRemove) + if( ChatRoomModel::isTerminated(chatRoom) && chatRoom->getUnreadMessagesCount() > 0) chatRoom->markAsRead(); - return toRemove; + return chatRoom->getConferenceAddress() && chatRoom->getHistoryEventsSize() == 0; }); //Remove no more chat rooms diff --git a/linphone-app/src/components/timeline/TimelineModel.cpp b/linphone-app/src/components/timeline/TimelineModel.cpp index 6edb8a680..f680a5a44 100644 --- a/linphone-app/src/components/timeline/TimelineModel.cpp +++ b/linphone-app/src/components/timeline/TimelineModel.cpp @@ -150,7 +150,7 @@ ChatRoomModel *TimelineModel::getChatRoomModel() const{ } void TimelineModel::setSelected(const bool& selected){ - if(selected != mSelected){ + if(mChatRoomModel && selected != mSelected){ mSelected = selected; if(mSelected){ qInfo() << "Chat room selected : Subject :" << mChatRoomModel->getSubject() diff --git a/linphone-app/ui/views/App/Dialog/NewConference.qml b/linphone-app/ui/views/App/Dialog/NewConference.qml index ed0eb47ea..3e47210da 100644 --- a/linphone-app/ui/views/App/Dialog/NewConference.qml +++ b/linphone-app/ui/views/App/Dialog/NewConference.qml @@ -362,6 +362,7 @@ DialogPlus { Layout.fillHeight: true Layout.rightMargin: 15 spacing:5 + visible: scheduledSwitch.checked Text{ Layout.fillWidth: true Layout.preferredHeight: 20 diff --git a/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml b/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml index 0d02d113e..22c33498c 100644 --- a/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml +++ b/linphone-app/ui/views/App/Styles/Calls/CallFullscreenStyle.qml @@ -118,7 +118,7 @@ QtObject { property color backgroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_d', icon, 'me_d_b_inv_bg').color property color backgroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_h', icon, 'me_h_b_inv_bg').color property color backgroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_p', icon, 'me_p_b_inv_bg').color - property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_n_b_inv_fg').color + property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_h_b_inv_fg').color property color foregroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_d', icon, 'me_d_b_inv_fg').color property color foregroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_h', icon, 'me_h_b_inv_fg').color property color foregroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_p', icon, 'me_p_b_inv_fg').color diff --git a/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml b/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml index f1313b992..47c1fb3a6 100644 --- a/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml +++ b/linphone-app/ui/views/App/Styles/Calls/CallStyle.qml @@ -118,7 +118,7 @@ QtObject { property color backgroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_d', icon, 'me_d_b_inv_bg').color property color backgroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_h', icon, 'me_h_b_inv_bg').color property color backgroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_bg_p', icon, 'me_p_b_inv_bg').color - property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_n_b_inv_fg').color + property color foregroundHiddenPartNormalColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_n', icon, 'me_h_b_inv_fg').color property color foregroundHiddenPartDisabledColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_d', icon, 'me_d_b_inv_fg').color property color foregroundHiddenPartHoveredColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_h', icon, 'me_h_b_inv_fg').color property color foregroundHiddenPartPressedColor : ColorsList.addImageColor(sectionName+'_'+name+'_hidden_fg_p', icon, 'me_p_b_inv_fg').color