From 3ce3a5cc641121fa79642abc1a18d36184642512 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 7 Jun 2017 17:03:49 +0200 Subject: [PATCH] Added microVu on conference + updated linphone to fix conference pause/resume --- .../components/conference/ConferenceModel.cpp | 24 +++++++++++++++ .../components/conference/ConferenceModel.hpp | 3 ++ .../ui/views/App/Calls/Conference.qml | 30 +++++++++++++++++-- 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/linphone-desktop/src/components/conference/ConferenceModel.cpp b/linphone-desktop/src/components/conference/ConferenceModel.cpp index 5d7dc64aa..6d32142a4 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.cpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.cpp @@ -116,6 +116,30 @@ bool ConferenceModel::getRecording () const { return mRecording; } +// ----------------------------------------------------------------------------- + +#define VU_MIN (-20.f) +#define VU_MAX (4.f) + +inline float computeVu (float volume) { + if (volume < VU_MIN) + return 0.f; + if (volume > VU_MAX) + return 1.f; + + return (volume - VU_MIN) / (VU_MAX - VU_MIN); +} + +#undef VU_MIN +#undef VU_MAX + +float ConferenceModel::getMicroVu () const { + shared_ptr core = CoreManager::getInstance()->getCore(); + return computeVu(core->getConferenceLocalInputVolume()); +} + +// ----------------------------------------------------------------------------- + void ConferenceModel::leave() { shared_ptr core = CoreManager::getInstance()->getCore(); core->leaveConference(); diff --git a/linphone-desktop/src/components/conference/ConferenceModel.hpp b/linphone-desktop/src/components/conference/ConferenceModel.hpp index 6d0bb5ca6..b500e532f 100644 --- a/linphone-desktop/src/components/conference/ConferenceModel.hpp +++ b/linphone-desktop/src/components/conference/ConferenceModel.hpp @@ -35,6 +35,8 @@ class ConferenceModel : public QSortFilterProxyModel { Q_PROPERTY(int count READ getCount NOTIFY countChanged); Q_PROPERTY(bool microMuted READ getMicroMuted WRITE setMicroMuted NOTIFY microMutedChanged); + Q_PROPERTY(float microVu READ getMicroVu CONSTANT); + Q_PROPERTY(bool recording READ getRecording NOTIFY recordingChanged); Q_PROPERTY(bool isInConf READ isInConference NOTIFY conferenceChanged); @@ -67,6 +69,7 @@ private: bool getMicroMuted () const; void setMicroMuted (bool status); + float getMicroVu () const; bool isInConference () const; diff --git a/linphone-desktop/ui/views/App/Calls/Conference.qml b/linphone-desktop/ui/views/App/Calls/Conference.qml index 7ca0b5e94..b6c24a42a 100644 --- a/linphone-desktop/ui/views/App/Calls/Conference.qml +++ b/linphone-desktop/ui/views/App/Calls/Conference.qml @@ -189,14 +189,40 @@ Rectangle { Layout.fillWidth: true Layout.preferredHeight: CallStyle.actionArea.height - RowLayout { + GridLayout { anchors { left: parent.left leftMargin: CallStyle.actionArea.leftButtonsGroupMargin verticalCenter: parent.verticalCenter } - spacing: ActionBarStyle.spacing + columns: incall.width < CallStyle.actionArea.lowWidth ? 2 : 4 + rowSpacing: ActionBarStyle.spacing + + Row { + spacing: CallStyle.actionArea.vu.spacing + + VuMeter { + Timer { + interval: 50 + repeat: true + running: micro.enabled + + onTriggered: parent.value = conference.conferenceModel.microVu + } + + enabled: micro.enabled + } + + ActionSwitch { + id: micro + + icon: 'micro' + iconSize: CallStyle.actionArea.iconSize + + onClicked: conference.conferenceModel.microMuted = !conference.conferenceModel.microMuted + } + } } ActionBar {