UI: Add scene names to preview/program labels

This makes it easier for users to determine what
is the current preview or program scene.
This commit is contained in:
Clayton Groeneveld 2022-06-18 02:05:46 -05:00 committed by Matt Gajownik
parent 0032d349c9
commit b3c5524a48
5 changed files with 54 additions and 30 deletions

View File

@ -86,6 +86,8 @@ HideTransition="Hide Transition"
None="None"
StudioMode.Preview="Preview"
StudioMode.Program="Program"
StudioMode.PreviewSceneName="Preview: %1"
StudioMode.ProgramSceneName="Program: %1"
ShowInMultiview="Show in Multiview"
VerticalLayout="Vertical Layout"
Group="Group"

View File

@ -42,13 +42,13 @@
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>4</number>
</property>
<property name="bottomMargin">
<number>0</number>
@ -158,11 +158,20 @@
</property>
<item>
<widget class="QLabel" name="previewLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>StudioMode.Preview</string>
<string>StudioMode.PreviewSceneName</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="themeID" stdset="0">
<string>previewProgramLabels</string>
</property>
</widget>
</item>

View File

@ -265,6 +265,7 @@ void OBSBasic::TransitionStopped()
}
EnableTransitionWidgets(true);
UpdatePreviewProgramIndicators();
if (api) {
api->on_event(OBS_FRONTEND_EVENT_TRANSITION_STOPPED);
@ -699,6 +700,7 @@ void OBSBasic::SetCurrentScene(OBSSource scene, bool force)
}
UpdateContextBar(true);
UpdatePreviewProgramIndicators();
if (scene) {
bool userSwitched = (!force && !disableSaving);
@ -1578,8 +1580,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
if (IsPreviewProgramMode() == enabled)
return;
ui->previewLabel->setHidden(!enabled);
ui->modeSwitch->setChecked(enabled);
os_atomic_set_bool(&previewProgramMode, enabled);
@ -1618,10 +1618,10 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
RefreshQuickTransitions();
programLabel = new QLabel(QTStr("StudioMode.Program"), this);
programLabel->setSizePolicy(QSizePolicy::Preferred,
programLabel =
new QLabel(QTStr("StudioMode.ProgramSceneLabel"), this);
programLabel->setSizePolicy(QSizePolicy::Ignored,
QSizePolicy::Preferred);
programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
programLabel->setProperty("themeID", "previewProgramLabels");
programWidget = new QWidget();
@ -1633,11 +1633,6 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
programLayout->addWidget(programLabel);
programLayout->addWidget(program);
bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow",
"StudioModeLabels");
programLabel->setHidden(!labels);
programWidget->setLayout(programLayout);
ui->previewLayout->addWidget(programOptions);
@ -1822,3 +1817,33 @@ int OBSBasic::GetOverrideTransitionDuration(OBSSource source)
return (int)obs_data_get_int(data, "transition_duration");
}
void OBSBasic::UpdatePreviewProgramIndicators()
{
bool labels = previewProgramMode ? config_get_bool(GetGlobalConfig(),
"BasicWindow",
"StudioModeLabels")
: false;
ui->previewLabel->setVisible(labels);
if (programLabel)
programLabel->setVisible(labels);
if (!labels)
return;
QString preview = QTStr("StudioMode.PreviewSceneName")
.arg(QT_UTF8(obs_source_get_name(
GetCurrentSceneSource())));
QString program =
QTStr("StudioMode.ProgramSceneName")
.arg(QT_UTF8(obs_source_get_name(GetProgramSource())));
if (ui->previewLabel->text() != preview)
ui->previewLabel->setText(preview);
if (programLabel && programLabel->text() != program)
programLabel->setText(program);
}

View File

@ -455,17 +455,6 @@ OBSBasic::OBSBasic(QWidget *parent)
QPoint newPos = curPos + statsDockPos;
statsDock->move(newPos);
ui->previewLabel->setProperty("themeID", "previewProgramLabels");
ui->previewLabel->style()->polish(ui->previewLabel);
bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow",
"StudioModeLabels");
if (!previewProgramMode)
ui->previewLabel->setHidden(true);
else
ui->previewLabel->setHidden(!labels);
ui->previewDisabledWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->previewDisabledWidget,
SIGNAL(customContextMenuRequested(const QPoint &)), this,
@ -2998,6 +2987,7 @@ void OBSBasic::RenameSources(OBSSource source, QString newName,
OBSProjector::UpdateMultiviewProjectors();
UpdateContextBar();
UpdatePreviewProgramIndicators();
}
void OBSBasic::ClearContextBar()
@ -4317,11 +4307,7 @@ void OBSBasic::ResetUI()
else
ui->previewLayout->setDirection(QBoxLayout::LeftToRight);
if (previewProgramMode)
ui->previewLabel->setHidden(!labels);
if (programLabel)
programLabel->setHidden(!labels);
UpdatePreviewProgramIndicators();
}
int OBSBasic::ResetVideo()

View File

@ -534,6 +534,8 @@ private:
void ReceivedIntroJson(const QString &text);
void ShowWhatsNew(const QString &url);
void UpdatePreviewProgramIndicators();
#ifdef BROWSER_AVAILABLE
QList<QSharedPointer<QDockWidget>> extraBrowserDocks;
QList<QSharedPointer<QAction>> extraBrowserDockActions;