UI: Add Vertical Mixer option

This commit is contained in:
Shaolin
2018-04-27 23:49:48 -03:00
parent 288339ceda
commit c7c328dc83
14 changed files with 588 additions and 172 deletions

View File

@@ -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);
}
}