UI: Add Studio Mode layout option for portrait mode displays

This commit adds a checkbox to general setting to allow users to enable
a vertically oriented layout for studio mode.

This commit addresses mantis issue 827:
https://obsproject.com/mantis/view.php?id=827

Closes jp9000/obs-studio#1072
master
Ryan Foster 2017-11-08 23:44:22 -05:00 committed by jp9000
parent 68e67366d2
commit f140104da8
6 changed files with 38 additions and 3 deletions

View File

@ -558,6 +558,7 @@ Basic.Settings.General.SysTrayWhenStarted="Minimize to system tray when started"
Basic.Settings.General.SystemTrayHideMinimize="Always minimize to system tray instead of task bar"
Basic.Settings.General.SaveProjectors="Save projectors on exit"
Basic.Settings.General.SwitchOnDoubleClick="Transition to scene when double-clicked"
Basic.Settings.General.StudioPortraitLayout="Enable portrait/vertical layout"
# basic mode 'stream' settings
Basic.Settings.Stream="Stream"

View File

@ -146,7 +146,7 @@
<x>0</x>
<y>0</y>
<width>801</width>
<height>698</height>
<height>715</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_19">
@ -572,6 +572,13 @@
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="studioPortraitLayout">
<property name="text">
<string>Basic.Settings.General.StudioPortraitLayout</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -3349,7 +3356,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>80</width>
<width>63</width>
<height>16</height>
</rect>
</property>
@ -3733,7 +3740,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>593</width>
<width>803</width>
<height>761</height>
</rect>
</property>

View File

@ -1016,6 +1016,7 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
ui->previewLayout->addWidget(programOptions);
ui->previewLayout->addWidget(program);
ui->previewLayout->setAlignment(programOptions, Qt::AlignCenter);
program->show();
if (api)
@ -1059,6 +1060,7 @@ void OBSBasic::SetPreviewProgramMode(bool enabled)
"-------------------");
}
ResetUI();
UpdateTitleBar();
}

View File

@ -2986,6 +2986,17 @@ static inline enum video_format GetVideoFormatFromName(const char *name)
return VIDEO_FORMAT_RGBA;
}
void OBSBasic::ResetUI()
{
bool studioPortraitLayout = config_get_bool(GetGlobalConfig(),
"BasicWindow", "StudioPortraitLayout");
if (studioPortraitLayout)
ui->previewLayout->setDirection(QBoxLayout::TopToBottom);
else
ui->previewLayout->setDirection(QBoxLayout::LeftToRight);
}
int OBSBasic::ResetVideo()
{
if (outputHandler && outputHandler->Active())

View File

@ -494,6 +494,7 @@ public:
bool StreamingActive() const;
bool Active() const;
void ResetUI();
int ResetVideo();
bool ResetAudio();

View File

@ -316,6 +316,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->sourceSnapping, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->snapDistance, DSCROLL_CHANGED,GENERAL_CHANGED);
HookWidget(ui->doubleClickSwitch, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->studioPortraitLayout, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->streamType, COMBO_CHANGED, STREAM1_CHANGED);
HookWidget(ui->simpleOutputPath, EDIT_CHANGED, OUTPUTS_CHANGED);
@ -1082,6 +1083,10 @@ void OBSBasicSettings::LoadGeneralSettings()
"BasicWindow", "TransitionOnDoubleClick");
ui->doubleClickSwitch->setChecked(doubleClickSwitch);
bool studioPortraitLayout = config_get_bool(GetGlobalConfig(),
"BasicWindow", "StudioPortraitLayout");
ui->studioPortraitLayout->setChecked(studioPortraitLayout);
loading = false;
}
@ -2643,6 +2648,14 @@ void OBSBasicSettings::SaveGeneralSettings()
config_set_bool(GetGlobalConfig(), "BasicWindow",
"SaveProjectors",
ui->saveProjectors->isChecked());
if (WidgetChanged(ui->studioPortraitLayout)) {
config_set_bool(GetGlobalConfig(), "BasicWindow",
"StudioPortraitLayout",
ui->studioPortraitLayout->isChecked());
main->ResetUI();
}
}
void OBSBasicSettings::SaveStream1Settings()