From 8a888707d5b19764b3260cbb7fb122fefbf149aa Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 8 Jun 2017 13:44:08 +0200 Subject: [PATCH] Update pause button to reflect conference state --- linphone-desktop/assets/languages/en.ts | 8 ++++++++ linphone-desktop/assets/languages/fr.ts | 8 ++++++++ .../components/conference/ConferenceModel.cpp | 18 +++++++++++++++--- .../components/conference/ConferenceModel.hpp | 4 +++- .../ui/views/App/Calls/Conference.qml | 6 ++++++ 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts index 3aff6defd..b46ff46f2 100644 --- a/linphone-desktop/assets/languages/en.ts +++ b/linphone-desktop/assets/languages/en.ts @@ -443,6 +443,14 @@ Server url not configured. conferenceTitle CONFERENCE + + leaveConf + Temporarily leave the conference + + + joinBackConf + Join back the conference + ConferenceControls diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts index 9e9cc2578..f2818ba89 100644 --- a/linphone-desktop/assets/languages/fr.ts +++ b/linphone-desktop/assets/languages/fr.ts @@ -443,6 +443,14 @@ Url du serveur non configurée. conferenceTitle CONFÉRENCE + + leaveConf + Quitter temporairement la conférence + + + joinBackConf + Rejoindre la conférence + ConferenceControls diff --git a/linphone-desktop/src/components/conference/ConferenceModel.cpp b/linphone-desktop/src/components/conference/ConferenceModel.cpp index 565a345a0..aa7738857 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.cpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.cpp @@ -40,7 +40,12 @@ ConferenceModel::ConferenceModel (QObject *parent) : QSortFilterProxyModel(paren }); setSourceModel(CoreManager::getInstance()->getCallsListModel()); - emit conferenceChanged(true); + emit conferenceChanged(); + + QObject::connect( + CoreManager::getInstance()->getHandlers().get(), &CoreHandlers::callStateChanged, + this, &ConferenceModel::handleCallStateChanged + ); } bool ConferenceModel::filterAcceptsRow (int sourceRow, const QModelIndex &sourceParent) const { @@ -143,16 +148,23 @@ float ConferenceModel::getMicroVu () const { void ConferenceModel::leave() { shared_ptr core = CoreManager::getInstance()->getCore(); core->leaveConference(); - emit conferenceChanged(false); + emit conferenceChanged(); } void ConferenceModel::join() { shared_ptr core = CoreManager::getInstance()->getCore(); core->enterConference(); - emit conferenceChanged(true); + emit conferenceChanged(); } bool ConferenceModel::isInConference () const { shared_ptr core = CoreManager::getInstance()->getCore(); + qInfo() << QStringLiteral("Is in conf:") << core->isInConference(); return core->isInConference(); +} + +// ----------------------------------------------------------------------------- + +void ConferenceModel::handleCallStateChanged (const shared_ptr &call, linphone::CallState state) { + emit conferenceChanged(); } \ No newline at end of file diff --git a/linphone-desktop/src/components/conference/ConferenceModel.hpp b/linphone-desktop/src/components/conference/ConferenceModel.hpp index b500e532f..4427a3cb2 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.hpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.hpp @@ -60,9 +60,11 @@ signals: void microMutedChanged (bool status); void recordingChanged (bool status); - void conferenceChanged(bool status); + void conferenceChanged(); private: + void handleCallStateChanged (const std::shared_ptr &call, linphone::CallState state); + int getCount () const { return rowCount(); } diff --git a/linphone-desktop/ui/views/App/Calls/Conference.qml b/linphone-desktop/ui/views/App/Calls/Conference.qml index bea56b368..e4aebcee7 100644 --- a/linphone-desktop/ui/views/App/Calls/Conference.qml +++ b/linphone-desktop/ui/views/App/Calls/Conference.qml @@ -216,6 +216,7 @@ Rectangle { ActionSwitch { id: micro + enabled: !conference.conferenceModel.microMuted icon: 'micro' iconSize: CallStyle.actionArea.iconSize @@ -235,10 +236,15 @@ Rectangle { ActionSwitch { icon: 'pause' + enabled: conference.conferenceModel.isInConf onClicked: { conference.conferenceModel.isInConf ? conference.conferenceModel.leave() : conference.conferenceModel.join() } + + TooltipArea { + text: conference.conferenceModel.isInConf ? qsTr('leaveConf') : qsTr('joinBackConf') + } } ActionButton {