diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp index c99a2bc24..b04ae22ba 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp @@ -104,6 +104,7 @@ ConferenceInfoModel::ConferenceInfoModel (QObject * parent) : QObject(parent){ connect(this, &ConferenceInfoModel::conferenceInfoChanged, this, &ConferenceInfoModel::isScheduledChanged); connect(this, &ConferenceInfoModel::conferenceInfoChanged, this, &ConferenceInfoModel::inviteModeChanged); connect(this, &ConferenceInfoModel::conferenceInfoChanged, this, &ConferenceInfoModel::conferenceInfoStateChanged); + connect(this, &ConferenceInfoModel::conferenceInfoChanged, this, &ConferenceInfoModel::conferenceSchedulerStateChanged); } // Callable from C++ @@ -124,6 +125,7 @@ ConferenceInfoModel::ConferenceInfoModel (std::shared_ptrgetState()); } +LinphoneEnums::ConferenceSchedulerState ConferenceInfoModel::getConferenceSchedulerState() const{ + return LinphoneEnums::fromLinphone(mLastConferenceSchedulerState); +} + //------------------------------------------------------------------------------------------------ // Convert into UTC with TimeZone and pass system timezone to conference info void ConferenceInfoModel::setDateTime(const QDateTime& dateTime){ @@ -323,14 +329,14 @@ void ConferenceInfoModel::createConference(const int& securityLevel) { mConferenceScheduler = ConferenceScheduler::create(); mConferenceScheduler->mSendInvite = mInviteMode; connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent); - connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged); + connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onConferenceSchedulerStateChanged); mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo); } void ConferenceInfoModel::cancelConference(){ mConferenceScheduler = ConferenceScheduler::create(); connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent); - connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged); + connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onConferenceSchedulerStateChanged); mConferenceScheduler->getConferenceScheduler()->cancelConference(mConferenceInfo); } @@ -343,12 +349,14 @@ void ConferenceInfoModel::deleteConferenceInfo(){ //------------------------------------------------------------------------------------------------- -void ConferenceInfoModel::onStateChanged(linphone::ConferenceScheduler::State state){ - qDebug() << "ConferenceInfoModel::onStateChanged: " << (int) state; +void ConferenceInfoModel::onConferenceSchedulerStateChanged(linphone::ConferenceScheduler::State state){ + qDebug() << "ConferenceInfoModel::onConferenceSchedulerStateChanged: " << (int) state; + mLastConferenceSchedulerState = state; if( state == linphone::ConferenceScheduler::State::Ready) emit conferenceCreated(); else if( state == linphone::ConferenceScheduler::State::Error) emit conferenceCreationFailed(); + emit conferenceInfoChanged(); } void ConferenceInfoModel::onInvitationsSent(const std::list> & failedInvitations) { qDebug() << "ConferenceInfoModel::onInvitationsSent"; diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp index fa92147fa..2db672dbf 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp @@ -50,6 +50,7 @@ public: Q_PROPERTY(bool isScheduled READ isScheduled WRITE setIsScheduled NOTIFY isScheduledChanged) Q_PROPERTY(int inviteMode READ getInviteMode WRITE setInviteMode NOTIFY inviteModeChanged) Q_PROPERTY(LinphoneEnums::ConferenceInfoState state READ getConferenceInfoState NOTIFY conferenceInfoStateChanged) + Q_PROPERTY(LinphoneEnums::ConferenceSchedulerState conferenceSchedulerState READ getConferenceSchedulerState NOTIFY conferenceSchedulerStateChanged) static QSharedPointer create(std::shared_ptr conferenceInfo); ConferenceInfoModel (QObject * parent = nullptr); @@ -76,6 +77,7 @@ public: Q_INVOKABLE TimeZoneModel* getTimeZoneModel() const; Q_INVOKABLE QString getIcalendarString() const; LinphoneEnums::ConferenceInfoState getConferenceInfoState() const; + LinphoneEnums::ConferenceSchedulerState getConferenceSchedulerState() const; void setDateTime(const QDateTime& dateTime); void setDuration(const int& duration); @@ -97,7 +99,7 @@ public: // SCHEDULER - virtual void onStateChanged(linphone::ConferenceScheduler::State state); + virtual void onConferenceSchedulerStateChanged(linphone::ConferenceScheduler::State state); virtual void onInvitationsSent(const std::list> & failedInvitations); signals: @@ -112,6 +114,7 @@ signals: void isScheduledChanged(); void inviteModeChanged(); void conferenceInfoStateChanged(); + void conferenceSchedulerStateChanged(); void conferenceCreated(); void conferenceCreationFailed(); @@ -127,6 +130,7 @@ private: bool mIsScheduled = true; int mInviteMode = 0; bool mRemoveRequested = false;// true if user has request its deletion from DB + linphone::ConferenceScheduler::State mLastConferenceSchedulerState = linphone::ConferenceScheduler::State::Idle;// Workaround for missing getter in scheduler. }; Q_DECLARE_METATYPE(QSharedPointer) diff --git a/linphone-app/src/utils/LinphoneEnums.cpp b/linphone-app/src/utils/LinphoneEnums.cpp index 90026d573..e15cc1395 100644 --- a/linphone-app/src/utils/LinphoneEnums.cpp +++ b/linphone-app/src/utils/LinphoneEnums.cpp @@ -25,14 +25,18 @@ // ============================================================================= void LinphoneEnums::registerMetaTypes(){ - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); qRegisterMetaType(); - qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } linphone::MediaEncryption LinphoneEnums::toLinphone(const LinphoneEnums::MediaEncryption& data){ @@ -89,6 +93,14 @@ LinphoneEnums::ConferenceInfoState LinphoneEnums::fromLinphone(const linphone::C return static_cast(state); } +linphone::ConferenceScheduler::State LinphoneEnums::toLinphone(const LinphoneEnums::ConferenceSchedulerState& state){ + return static_cast(state); +} + +LinphoneEnums::ConferenceSchedulerState LinphoneEnums::fromLinphone(const linphone::ConferenceScheduler::State& state){ + return static_cast(state); +} + linphone::ParticipantDeviceState LinphoneEnums::toLinphone(const LinphoneEnums::ParticipantDeviceState& state){ return static_cast(state); } diff --git a/linphone-app/src/utils/LinphoneEnums.hpp b/linphone-app/src/utils/LinphoneEnums.hpp index 16af1fae9..f3bffccf0 100644 --- a/linphone-app/src/utils/LinphoneEnums.hpp +++ b/linphone-app/src/utils/LinphoneEnums.hpp @@ -133,6 +133,18 @@ Q_ENUM_NS(ConferenceInfoState) linphone::ConferenceInfo::State toLinphone(const LinphoneEnums::ConferenceInfoState& state); LinphoneEnums::ConferenceInfoState fromLinphone(const linphone::ConferenceInfo::State& state); +enum ConferenceSchedulerState { + ConferenceSchedulerStateAllocationPending = int(linphone::ConferenceScheduler::State::AllocationPending), + ConferenceSchedulerStateError = int(linphone::ConferenceScheduler::State::Error), + ConferenceSchedulerStateIdle = int(linphone::ConferenceScheduler::State::Idle), + ConferenceSchedulerStateReady = int(linphone::ConferenceScheduler::State::Ready), + ConferenceSchedulerStateUpdating = int(linphone::ConferenceScheduler::State::Updating) +}; +Q_ENUM_NS(ConferenceSchedulerState) + +linphone::ConferenceScheduler::State toLinphone(const LinphoneEnums::ConferenceSchedulerState& state); +LinphoneEnums::ConferenceSchedulerState fromLinphone(const linphone::ConferenceScheduler::State& state); + enum ParticipantDeviceState { ParticipantDeviceStateJoining = int(linphone::ParticipantDeviceState::Joining), @@ -189,10 +201,10 @@ void fromString(const QString& transportType, LinphoneEnums::TransportType *tran Q_DECLARE_METATYPE(LinphoneEnums::CallStatus) - Q_DECLARE_METATYPE(LinphoneEnums::ChatMessageState) Q_DECLARE_METATYPE(LinphoneEnums::ConferenceLayout) Q_DECLARE_METATYPE(LinphoneEnums::ConferenceInfoState) +Q_DECLARE_METATYPE(LinphoneEnums::ConferenceSchedulerState) Q_DECLARE_METATYPE(LinphoneEnums::EventLogType) Q_DECLARE_METATYPE(LinphoneEnums::FriendCapability) Q_DECLARE_METATYPE(LinphoneEnums::MediaEncryption)