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: