From 5927d04af9c4c2ebb4843bada3a97bf8116aac79 Mon Sep 17 00:00:00 2001 From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com> Date: Mon, 15 Jun 2015 12:45:29 -0400 Subject: [PATCH] call: add audio/video muting Refs #75601 Change-Id: Ib48aeb7e1fee4fa6af321d3e6c216841bf7cc91c --- videooverlay.cpp | 37 +++++++++++++++++++++++++++++++++++++ videooverlay.h | 2 ++ videooverlay.ui | 25 ++++++++++++++++--------- 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/videooverlay.cpp b/videooverlay.cpp index c50f82b..c3bcc79 100644 --- a/videooverlay.cpp +++ b/videooverlay.cpp @@ -31,11 +31,48 @@ VideoOverlay::VideoOverlay(QWidget *parent) : actionModel_ = CallModel::instance()->userActionModel(); setAttribute(Qt::WA_NoSystemBackground); + + menu_ = new QMenu(this); + auto muteAudio = new QAction("Mute Audio", this); + muteAudio->setCheckable(true); + connect(muteAudio, &QAction::triggered, [=](bool) { + actionModel_->execute(UserActionModel::Action::MUTE_AUDIO); + }); + menu_->addAction(muteAudio); + + auto muteVideo = new QAction("Mute Video", this); + muteVideo->setCheckable(true); + connect(muteVideo, &QAction::triggered, [=](bool) { + actionModel_->execute(UserActionModel::Action::MUTE_VIDEO); + }); + menu_->addAction(muteVideo); + + connect(actionModel_,&UserActionModel::dataChanged, [=](const QModelIndex& tl, const QModelIndex& br) { + const int first(tl.row()),last(br.row()); + for(int i = first; i <= last;i++) { + const QModelIndex& idx = actionModel_->index(i,0); + switch (idx.data(UserActionModel::Role::ACTION).value<UserActionModel::Action>()) { + case UserActionModel::Action::MUTE_AUDIO: + muteAudio->setChecked(idx.data(Qt::CheckStateRole).value<bool>()); + muteAudio->setEnabled(idx.flags() & Qt::ItemIsEnabled); + break; + case UserActionModel::Action::MUTE_VIDEO: + muteVideo->setChecked(idx.data(Qt::CheckStateRole).value<bool>()); + muteVideo->setEnabled(idx.flags() & Qt::ItemIsEnabled); + break; + default: + break; + } + } + }); + + ui->moreButton->setMenu(menu_); } VideoOverlay::~VideoOverlay() { delete ui; + delete menu_; } void diff --git a/videooverlay.h b/videooverlay.h index e31d0f9..8568a84 100644 --- a/videooverlay.h +++ b/videooverlay.h @@ -20,6 +20,7 @@ #define VIDEOOVERLAY_H #include <QWidget> +#include <QMenu> #include "useractionmodel.h" @@ -48,6 +49,7 @@ private slots: private: Ui::VideoOverlay *ui; UserActionModel* actionModel_; + QMenu* menu_; signals: void setChatVisibility(bool visible); diff --git a/videooverlay.ui b/videooverlay.ui index 092208a..19a3c00 100644 --- a/videooverlay.ui +++ b/videooverlay.ui @@ -17,13 +17,6 @@ <string>Form</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="2"> - <widget class="QPushButton" name="hangupButton"> - <property name="text"> - <string>Hangup</string> - </property> - </widget> - </item> <item row="1" column="1"> <widget class="QPushButton" name="holdButton"> <property name="text"> @@ -54,7 +47,7 @@ </property> </spacer> </item> - <item row="1" column="4"> + <item row="1" column="5"> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -111,7 +104,7 @@ </property> </widget> </item> - <item row="0" column="4" alignment="Qt::AlignRight|Qt::AlignTop"> + <item row="0" column="5" alignment="Qt::AlignRight|Qt::AlignTop"> <widget class="QLabel" name="timerLabel"> <property name="palette"> <palette> @@ -155,6 +148,20 @@ </property> </widget> </item> + <item row="1" column="2"> + <widget class="QPushButton" name="hangupButton"> + <property name="text"> + <string>Hangup</string> + </property> + </widget> + </item> + <item row="1" column="4"> + <widget class="QPushButton" name="moreButton"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> </layout> </widget> <resources/> -- GitLab