call: add audio/video muting
Refs #75601
Change-Id: Ib48aeb7e1fee4fa6af321d3e6c216841bf7cc91c
diff --git a/videooverlay.cpp b/videooverlay.cpp
index c50f82b..c3bcc79 100644
--- a/videooverlay.cpp
+++ b/videooverlay.cpp
@@ -31,11 +31,48 @@
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