From c4b1a1030bdf5b96dc4685a4eb4ea6d3971604dd Mon Sep 17 00:00:00 2001 From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com> Date: Tue, 2 Feb 2016 11:48:30 -0500 Subject: [PATCH] videoview: fix selection of source ALso litle code refactoring Change-Id: I01de12122a7c4b6bb980031033329528c5ea6426 Tuleap: #317 --- videoview.cpp | 53 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/videoview.cpp b/videoview.cpp index f4dd5bf..b270798 100644 --- a/videoview.cpp +++ b/videoview.cpp @@ -168,21 +168,27 @@ VideoView::showContextMenu(const QPoint& pos) QPoint globalPos = this->mapToGlobal(pos); QMenu menu; + Media::Video* outVideo = nullptr; + int activeIndex = -1; + + if (auto call = CallModel::instance().selectedCall()) { + outVideo = call->firstMedia<Media::Video>(Media::Media::Direction::OUT); + if (outVideo) + activeIndex = outVideo->sourceModel()->activeIndex(); + } for (auto device : Video::DeviceModel::instance().devices()) { std::unique_ptr<QAction> deviceAction(new QAction(device->name(), this)); deviceAction->setCheckable(true); - if (device == Video::DeviceModel::instance().activeDevice()) - deviceAction->setChecked(true); + if (outVideo) + if (outVideo->sourceModel()->getDeviceIndex(device) == activeIndex) + deviceAction->setChecked(true); auto ptr = deviceAction.release(); menu.addAction(ptr); connect(ptr, &QAction::toggled, [=](bool checked) { if (checked == true) { - if (auto call = CallModel::instance().selectedCall()) { - if (auto outVideo = call->firstMedia<Media::Video>(Media::Media::Direction::OUT)) { - outVideo->sourceModel()->switchTo(device); - } - } + if (outVideo) + outVideo->sourceModel()->switchTo(device); Video::DeviceModel::instance().setActive(device); } }); @@ -192,21 +198,33 @@ VideoView::showContextMenu(const QPoint& pos) auto shareAction = new QAction(tr("Share entire screen"), this); menu.addAction(shareAction); - connect(shareAction, &QAction::triggered, [=]() { - if (auto call = CallModel::instance().selectedCall()) { - if (auto outVideo = call->firstMedia<Media::Video>(Media::Media::Direction::OUT)) { - outVideo->sourceModel()->setDisplay(0, QApplication::desktop()->rect()); - } - } - }); + shareAction->setCheckable(true); auto shareAreaAction = new QAction(tr("Share screen area"), this); menu.addAction(shareAreaAction); + shareAreaAction->setCheckable(true); connect(shareAreaAction, &QAction::triggered, [=]() { SelectAreaDialog selec; selec.exec(); }); auto shareFileAction = new QAction(tr("Share file"), this); menu.addAction(shareFileAction); + shareFileAction->setCheckable(true); + + switch(activeIndex) { + + case Video::SourceModel::ExtendedDeviceList::SCREEN: + shareAction->setChecked(true); + break; + case Video::SourceModel::ExtendedDeviceList::FILE: + shareFileAction->setChecked(true); + break; + + } + + connect(shareAction, &QAction::triggered, [=]() { + if (outVideo) + outVideo->sourceModel()->setDisplay(0, QApplication::desktop()->rect()); + }); connect(shareFileAction, &QAction::triggered, [=]() { QFileDialog dialog(this); dialog.setFileMode(QFileDialog::AnyFile); @@ -214,11 +232,8 @@ VideoView::showContextMenu(const QPoint& pos) if (!dialog.exec()) return; fileNames = dialog.selectedFiles(); - if (auto call = CallModel::instance().selectedCall()) { - if (auto outVideo = call->firstMedia<Media::Video>(Media::Media::Direction::OUT)) { - outVideo->sourceModel()->setFile(QUrl::fromLocalFile(fileNames.at(0))); - } - } + if (outVideo) + outVideo->sourceModel()->setFile(QUrl::fromLocalFile(fileNames.at(0))); }); menu.exec(globalPos); -- GitLab