mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-07-19 11:44:38 -04:00
UI: Add Vertical Mixer option
This commit is contained in:
@@ -1572,6 +1572,10 @@ void OBSBasic::OBSInit()
|
||||
}
|
||||
}
|
||||
|
||||
bool vertical = config_get_bool(App()->GlobalConfig(), "BasicWindow",
|
||||
"VerticalVolControl");
|
||||
ui->stackedMixerArea->setCurrentIndex(vertical);
|
||||
|
||||
if (config_get_bool(basicConfig, "General", "OpenStatsOnStartup"))
|
||||
on_stats_triggered();
|
||||
|
||||
@@ -2471,6 +2475,11 @@ void OBSBasic::VolControlContextMenu()
|
||||
QAction propertiesAction(QTStr("Properties"), this);
|
||||
QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this);
|
||||
|
||||
QAction toggleControlLayoutAction(QTStr("VerticalLayout"), this);
|
||||
toggleControlLayoutAction.setCheckable(true);
|
||||
toggleControlLayoutAction.setChecked(config_get_bool(GetGlobalConfig(),
|
||||
"BasicWindow", "VerticalVolControl"));
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
connect(&hideAction, &QAction::triggered,
|
||||
@@ -2495,6 +2504,12 @@ void OBSBasic::VolControlContextMenu()
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
connect(&toggleControlLayoutAction, &QAction::changed, this,
|
||||
&OBSBasic::ToggleVolControlLayout,
|
||||
Qt::DirectConnection);
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
hideAction.setProperty("volControl",
|
||||
QVariant::fromValue<VolControl*>(vol));
|
||||
mixerRenameAction.setProperty("volControl",
|
||||
@@ -2512,18 +2527,35 @@ void OBSBasic::VolControlContextMenu()
|
||||
popup.addAction(&hideAction);
|
||||
popup.addAction(&mixerRenameAction);
|
||||
popup.addSeparator();
|
||||
popup.addAction(&toggleControlLayoutAction);
|
||||
popup.addSeparator();
|
||||
popup.addAction(&filtersAction);
|
||||
popup.addAction(&propertiesAction);
|
||||
popup.addAction(&advPropAction);
|
||||
popup.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void OBSBasic::on_mixerScrollArea_customContextMenuRequested()
|
||||
void OBSBasic::on_hMixerScrollArea_customContextMenuRequested()
|
||||
{
|
||||
StackedMixerAreaContextMenuRequested();
|
||||
}
|
||||
|
||||
void OBSBasic::on_vMixerScrollArea_customContextMenuRequested()
|
||||
{
|
||||
StackedMixerAreaContextMenuRequested();
|
||||
}
|
||||
|
||||
void OBSBasic::StackedMixerAreaContextMenuRequested()
|
||||
{
|
||||
QAction unhideAllAction(QTStr("UnhideAll"), this);
|
||||
|
||||
QAction advPropAction(QTStr("Basic.MainMenu.Edit.AdvAudio"), this);
|
||||
|
||||
QAction toggleControlLayoutAction(QTStr("VerticalLayout"), this);
|
||||
toggleControlLayoutAction.setCheckable(true);
|
||||
toggleControlLayoutAction.setChecked(config_get_bool(GetGlobalConfig(),
|
||||
"BasicWindow", "VerticalVolControl"));
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
connect(&unhideAllAction, &QAction::triggered,
|
||||
@@ -2536,19 +2568,49 @@ void OBSBasic::on_mixerScrollArea_customContextMenuRequested()
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
connect(&toggleControlLayoutAction, &QAction::changed, this,
|
||||
&OBSBasic::ToggleVolControlLayout,
|
||||
Qt::DirectConnection);
|
||||
|
||||
/* ------------------- */
|
||||
|
||||
QMenu popup(this);
|
||||
popup.addAction(&unhideAllAction);
|
||||
popup.addSeparator();
|
||||
popup.addAction(&toggleControlLayoutAction);
|
||||
popup.addSeparator();
|
||||
popup.addAction(&advPropAction);
|
||||
popup.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
void OBSBasic::ToggleVolControlLayout()
|
||||
{
|
||||
bool vertical = !config_get_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"VerticalVolControl");
|
||||
config_set_bool(GetGlobalConfig(), "BasicWindow", "VerticalVolControl",
|
||||
vertical);
|
||||
ui->stackedMixerArea->setCurrentIndex(vertical);
|
||||
|
||||
// We need to store it so we can delete current and then add
|
||||
// at the right order
|
||||
vector<OBSSource> sources;
|
||||
for (size_t i = 0; i != volumes.size(); i++)
|
||||
sources.emplace_back(volumes[i]->GetSource());
|
||||
|
||||
ClearVolumeControls();
|
||||
|
||||
for (const auto &source : sources)
|
||||
ActivateAudioSource(source);
|
||||
}
|
||||
|
||||
void OBSBasic::ActivateAudioSource(OBSSource source)
|
||||
{
|
||||
if (SourceMixerHidden(source))
|
||||
return;
|
||||
|
||||
VolControl *vol = new VolControl(source, true);
|
||||
bool vertical = config_get_bool(GetGlobalConfig(), "BasicWindow",
|
||||
"VerticalVolControl");
|
||||
VolControl *vol = new VolControl(source, true, vertical);
|
||||
|
||||
double meterDecayRate = config_get_double(basicConfig, "Audio",
|
||||
"MeterDecayRate");
|
||||
@@ -2582,7 +2644,10 @@ void OBSBasic::ActivateAudioSource(OBSSource source)
|
||||
InsertQObjectByName(volumes, vol);
|
||||
|
||||
for (auto volume : volumes) {
|
||||
ui->volumeWidgets->layout()->addWidget(volume);
|
||||
if (vertical)
|
||||
ui->vVolControlLayout->addWidget(volume);
|
||||
else
|
||||
ui->hVolControlLayout->addWidget(volume);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user