diff --git a/linphone-app/src/components/call/CallListener.cpp b/linphone-app/src/components/call/CallListener.cpp index 603abde7d..067eae0a8 100644 --- a/linphone-app/src/components/call/CallListener.cpp +++ b/linphone-app/src/components/call/CallListener.cpp @@ -23,6 +23,7 @@ #include #include +#include #include "CallModel.hpp" // ============================================================================= diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp index 966b6ab9a..734a2f44c 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp @@ -164,6 +164,10 @@ bool ConferenceInfoModel::isScheduled() const{ return mIsScheduled; } +int ConferenceInfoModel::getInviteMode() const{ + return mInviteMode; +} + QVariantList ConferenceInfoModel::getParticipants() const{ QVariantList addresses; for(auto item : mConferenceInfo->getParticipants()){ @@ -248,9 +252,16 @@ void ConferenceInfoModel::setIsScheduled(const bool& on){ } } +void ConferenceInfoModel::setInviteMode(const int& mode){ + if( mode != mInviteMode){ + mInviteMode = mode; + emit inviteModeChanged(); + } +} + //------------------------------------------------------------------------------------------------- -void ConferenceInfoModel::createConference(const int& securityLevel, const int& inviteMode) { +void ConferenceInfoModel::createConference(const int& securityLevel) { CoreManager::getInstance()->getTimelineListModel()->mAutoSelectAfterCreation = false; shared_ptr core = CoreManager::getInstance()->getCore(); static std::shared_ptr conference; @@ -261,7 +272,7 @@ void ConferenceInfoModel::createConference(const int& securityLevel, const int& mConferenceScheduler = ConferenceScheduler::create(); - mConferenceScheduler->mSendInvite = inviteMode; + mConferenceScheduler->mSendInvite = mInviteMode; 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/conferenceInfo/ConferenceInfoModel.hpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp index 5312f4cde..0aae5b8fa 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp @@ -46,6 +46,7 @@ public: Q_PROPERTY(QString displayNamesToString READ displayNamesToString NOTIFY participantsChanged) Q_PROPERTY(QString uri READ getUri NOTIFY uriChanged) Q_PROPERTY(bool isScheduled READ isScheduled WRITE setIsScheduled NOTIFY isScheduledChanged) + Q_PROPERTY(int inviteMode READ getInviteMode WRITE setInviteMode NOTIFY inviteModeChanged) static QSharedPointer create(std::shared_ptr conferenceInfo); ConferenceInfoModel (QObject * parent = nullptr); @@ -66,6 +67,7 @@ public: Q_INVOKABLE QString displayNamesToString()const; QString getUri() const; bool isScheduled() const; + int getInviteMode() const; Q_INVOKABLE QVariantList getParticipants() const; Q_INVOKABLE int getParticipantCount()const; Q_INVOKABLE TimeZoneModel* getTimeZoneModel() const; @@ -77,12 +79,13 @@ public: void setOrganizer(const QString& organizerAddress); void setDescription(const QString& description); void setIsScheduled(const bool& on); + void setInviteMode(const int& modes); Q_INVOKABLE void setParticipants(ParticipantListModel * participants); Q_INVOKABLE void setTimeZoneModel(TimeZoneModel * model); // Tools - Q_INVOKABLE void createConference(const int& securityLevel, const int& inviteMode); + Q_INVOKABLE void createConference(const int& securityLevel); Q_INVOKABLE void deleteConferenceInfo();// Remove completly this conference info from DB // SCHEDULER @@ -101,6 +104,7 @@ signals: void participantsChanged(); void uriChanged(); void isScheduledChanged(); + void inviteModeChanged(); void conferenceCreated(); void conferenceCreationFailed(); @@ -113,6 +117,7 @@ private: QTimeZone mTimeZone; bool mIsScheduled = true; + int mInviteMode = 0; }; Q_DECLARE_METATYPE(QSharedPointer) diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoProxyModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoProxyModel.cpp index ef6b23dea..15a8c03b1 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoProxyModel.cpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoProxyModel.cpp @@ -69,5 +69,6 @@ void ConferenceInfoProxyModel::onConferenceInfoReceived(const std::shared_ptr(sourceModel()); model->add(realConferenceInfo); - } + }else + qWarning() << "No conferenceInfo have beend found for " << conferenceInfo->getUri()->asString().c_str(); } diff --git a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp index 2003c2c5f..43c8b2f5d 100644 --- a/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp +++ b/linphone-app/src/components/conferenceScheduler/ConferenceScheduler.cpp @@ -23,6 +23,7 @@ #include #include "app/App.hpp" +#include "components/core/CoreHandlers.hpp" #include "components/core/CoreManager.hpp" void ConferenceScheduler::connectTo(ConferenceSchedulerListener * listener){ @@ -57,6 +58,7 @@ void ConferenceScheduler::onStateChanged(linphone::ConferenceSchedulerState stat qDebug() << "ConferenceScheduler::onStateChanged : " << (int)state; emit stateChanged(state); if( state == linphone::ConferenceSchedulerState::Ready) { + emit CoreManager::getInstance()->getHandlers()->conferenceInfoReceived(mConferenceScheduler->getInfo()); if( (mSendInvite & 1) == 1){ std::shared_ptr params = CoreManager::getInstance()->getCore()->createDefaultChatRoomParams(); params->setBackend(linphone::ChatRoomBackend::Basic); diff --git a/linphone-app/src/components/core/CoreHandlers.cpp b/linphone-app/src/components/core/CoreHandlers.cpp index 25a98d443..16414c91e 100644 --- a/linphone-app/src/components/core/CoreHandlers.cpp +++ b/linphone-app/src/components/core/CoreHandlers.cpp @@ -326,5 +326,6 @@ void CoreHandlers::onEcCalibrationResult( //------------------------------ CONFERENCE INFO void CoreHandlers::onConferenceInfoReceived(const std::shared_ptr & core, const std::shared_ptr & conferenceInfo) { + qDebug() << "onConferenceInfoReceived: " << conferenceInfo->getUri()->asString().c_str(); emit conferenceInfoReceived(conferenceInfo); } diff --git a/linphone-app/ui/views/App/Dialog/NewConference.qml b/linphone-app/ui/views/App/Dialog/NewConference.qml index 2e6f6980b..e55655282 100644 --- a/linphone-app/ui/views/App/Dialog/NewConference.qml +++ b/linphone-app/ui/views/App/Dialog/NewConference.qml @@ -21,14 +21,23 @@ DialogPlus { property ConferenceInfoModel conferenceInfoModel: ConferenceInfoModel{} onConferenceInfoModelChanged: selectedParticipants.setAddresses(conferenceInfoModel) property int creationState: 0 + Timer{ + id: closeDelay + interval: 2000 + onTriggered: conferenceManager.exit(1) + } Connections{ target: conferenceInfoModel onConferenceCreated: { - conferenceManager.creationState = 2 + if( conferenceInfoModel.inviteMode == 0 ) { + closeDelay.start() + conferenceManager.creationState = 2 + } } onConferenceCreationFailed:{ conferenceManager.creationState = -1 } onInvitationsSent: { - exit(1) + closeDelay.start() + conferenceManager.creationState = 2 } } @@ -133,7 +142,8 @@ DialogPlus { conferenceInfoModel.setParticipants(selectedParticipants.participantListModel) - conferenceInfoModel.createConference(false && secureSwitch.checked, getInviteMode()) // TODO remove false when Encryption is ready to use + conferenceInfoModel.inviteMode = getInviteMode(); + conferenceInfoModel.createConference(false && secureSwitch.checked) // TODO remove false when Encryption is ready to use } TooltipArea{ visible: AccountSettingsModel.conferenceURI == '' || subject.text == '' || selectedParticipants.count < conferenceManager.minParticipants