From 97ead131c116f54aae4b34574f194f00ab66ec88 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sat, 20 Jun 2015 18:57:06 -0700 Subject: [PATCH] UI: Show popup menu w/ vol. control config button Use the config button on volume controls to allow the ability for filters/properties to be accessed via the mixer. Particularly useful for the purpose of accessing filters/properties of global audio outputs that are added via audio settings. --- obs/window-basic-main.cpp | 48 ++++++++++++++++++++++++++++++++++++++- obs/window-basic-main.hpp | 4 ++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 630c74f86..2c19ace85 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -1245,9 +1245,55 @@ void OBSBasic::MoveSceneItem(OBSSceneItem item, obs_order_movement movement) ui->sources->setCurrentRow(curRow); } +void OBSBasic::GetAudioSourceFilters() +{ + QAction *action = reinterpret_cast(sender()); + VolControl *vol = action->property("volControl").value(); + obs_source_t *source = vol->GetSource(); + + CreateFiltersWindow(source); +} + +void OBSBasic::GetAudioSourceProperties() +{ + QAction *action = reinterpret_cast(sender()); + VolControl *vol = action->property("volControl").value(); + obs_source_t *source = vol->GetSource(); + + CreatePropertiesWindow(source); +} + +void OBSBasic::VolControlContextMenu() +{ + VolControl *vol = reinterpret_cast(sender()); + + QAction filtersAction(QTStr("Filters"), this); + QAction propertiesAction(QTStr("Properties"), this); + + connect(&filtersAction, &QAction::triggered, + this, &OBSBasic::GetAudioSourceFilters, + Qt::DirectConnection); + connect(&propertiesAction, &QAction::triggered, + this, &OBSBasic::GetAudioSourceProperties, + Qt::DirectConnection); + + filtersAction.setProperty("volControl", + QVariant::fromValue(vol)); + propertiesAction.setProperty("volControl", + QVariant::fromValue(vol)); + + QMenu popup(this); + popup.addAction(&filtersAction); + popup.addAction(&propertiesAction); + popup.exec(QCursor::pos()); +} + void OBSBasic::ActivateAudioSource(OBSSource source) { - VolControl *vol = new VolControl(source); + VolControl *vol = new VolControl(source, true); + + connect(vol, &VolControl::ConfigClicked, + this, &OBSBasic::VolControlContextMenu); volumes.push_back(vol); ui->volumeWidgets->layout()->addWidget(vol); diff --git a/obs/window-basic-main.hpp b/obs/window-basic-main.hpp index 2825e288d..a8b3582b0 100644 --- a/obs/window-basic-main.hpp +++ b/obs/window-basic-main.hpp @@ -156,6 +156,10 @@ private: void Nudge(int dist, MoveDir dir); void OpenProjector(obs_source_t *source, int monitor); + void GetAudioSourceFilters(); + void GetAudioSourceProperties(); + void VolControlContextMenu(); + obs_hotkey_pair_id streamingHotkeys, recordingHotkeys; public slots: