mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
Synchronize ICS from actions like deletion/cancellation.
This commit is contained in:
parent
3677770de2
commit
f924a17055
4 changed files with 47 additions and 11 deletions
|
|
@ -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_ptr<linphone::ConferenceIn
|
|||
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);
|
||||
}
|
||||
|
||||
ConferenceInfoModel::~ConferenceInfoModel () {
|
||||
|
|
@ -223,6 +225,10 @@ LinphoneEnums::ConferenceInfoState ConferenceInfoModel::getConferenceInfoState()
|
|||
return LinphoneEnums::fromLinphone(mConferenceInfo->getState());
|
||||
}
|
||||
|
||||
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<std::shared_ptr<linphone::Address>> & failedInvitations) {
|
||||
qDebug() << "ConferenceInfoModel::onInvitationsSent";
|
||||
|
|
|
|||
|
|
@ -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<ConferenceInfoModel> create(std::shared_ptr<linphone::ConferenceInfo> 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<std::shared_ptr<linphone::Address>> & 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<ConferenceInfoModel>)
|
||||
|
|
|
|||
|
|
@ -25,14 +25,18 @@
|
|||
// =============================================================================
|
||||
|
||||
void LinphoneEnums::registerMetaTypes(){
|
||||
qRegisterMetaType<LinphoneEnums::MediaEncryption>();
|
||||
qRegisterMetaType<LinphoneEnums::FriendCapability>();
|
||||
qRegisterMetaType<LinphoneEnums::EventLogType>();
|
||||
qRegisterMetaType<LinphoneEnums::ChatMessageState>();
|
||||
qRegisterMetaType<LinphoneEnums::CallStatus>();
|
||||
qRegisterMetaType<LinphoneEnums::ChatMessageState>();
|
||||
qRegisterMetaType<LinphoneEnums::ConferenceLayout>();
|
||||
qRegisterMetaType<LinphoneEnums::TunnelMode>();
|
||||
qRegisterMetaType<LinphoneEnums::ConferenceInfoState>();
|
||||
qRegisterMetaType<LinphoneEnums::ConferenceSchedulerState>();
|
||||
qRegisterMetaType<LinphoneEnums::EventLogType>();
|
||||
qRegisterMetaType<LinphoneEnums::FriendCapability>();
|
||||
qRegisterMetaType<LinphoneEnums::MediaEncryption>();
|
||||
qRegisterMetaType<LinphoneEnums::ParticipantDeviceState>();
|
||||
qRegisterMetaType<LinphoneEnums::RecorderState>();
|
||||
qRegisterMetaType<LinphoneEnums::TunnelMode>();
|
||||
qRegisterMetaType<LinphoneEnums::TransportType>();
|
||||
}
|
||||
|
||||
linphone::MediaEncryption LinphoneEnums::toLinphone(const LinphoneEnums::MediaEncryption& data){
|
||||
|
|
@ -89,6 +93,14 @@ LinphoneEnums::ConferenceInfoState LinphoneEnums::fromLinphone(const linphone::C
|
|||
return static_cast<LinphoneEnums::ConferenceInfoState>(state);
|
||||
}
|
||||
|
||||
linphone::ConferenceScheduler::State LinphoneEnums::toLinphone(const LinphoneEnums::ConferenceSchedulerState& state){
|
||||
return static_cast<linphone::ConferenceScheduler::State>(state);
|
||||
}
|
||||
|
||||
LinphoneEnums::ConferenceSchedulerState LinphoneEnums::fromLinphone(const linphone::ConferenceScheduler::State& state){
|
||||
return static_cast<LinphoneEnums::ConferenceSchedulerState>(state);
|
||||
}
|
||||
|
||||
linphone::ParticipantDeviceState LinphoneEnums::toLinphone(const LinphoneEnums::ParticipantDeviceState& state){
|
||||
return static_cast<linphone::ParticipantDeviceState>(state);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue