0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

UI: Add 'Appearance' settings page

This commit is contained in:
derrod 2023-09-28 04:55:19 +02:00 committed by Warchamp7
parent 41ba8bdfdd
commit b76e0cd31b
7 changed files with 148 additions and 29 deletions

View File

@ -925,6 +925,10 @@ Basic.Settings.General.ChannelDescription.stable="Latest stable release"
Basic.Settings.General.ChannelName.beta="Betas / Release Candidates"
Basic.Settings.General.ChannelDescription.beta="Potentially unstable pre-release versions"
# basic mode 'appearance' settings
Basic.Settings.Appearance="Appearance"
Basic.Settings.Appearance.General="General"
# basic mode 'stream' settings
Basic.Settings.Stream="Stream"
Basic.Settings.Stream.Custom.UseAuthentication="Use authentication"

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#fefefe"><path d="m 1 1 v 14 h 14 v -14 z m 1 1 h 12 v 12 h -12 z m 0 0"/><path d="m 6 11 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -4 -1 h 3 v 10 h -3 z m 0 0"/><path d="m 8 3 h 1 v 10 h -1 z m 2 9 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m -1 7 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 0" fill-opacity="0.34902"/></g></svg>

After

Width:  |  Height:  |  Size: 761 B

View File

@ -69,6 +69,15 @@
<normaloff>:/settings/images/settings/general.svg</normaloff>:/settings/images/settings/general.svg</iconset>
</property>
</item>
<item>
<property name="text">
<string>Basic.Settings.Appearance</string>
</property>
<property name="icon">
<iconset resource="obs.qrc">
<normaloff>:/settings/images/settings/appearance.svg</normaloff>:/settings/images/settings/appearance.svg</iconset>
</property>
</item>
<item>
<property name="text">
<string>Basic.Settings.Stream</string>
@ -227,19 +236,6 @@
<widget class="QComboBox" name="language"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_42">
<property name="text">
<string>Basic.Settings.General.Theme</string>
</property>
<property name="buddy">
<cstring>theme</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="theme"/>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -255,14 +251,14 @@
</property>
</spacer>
</item>
<item row="2" column="1">
<item row="1" column="1">
<widget class="QCheckBox" name="openStatsOnStartup">
<property name="text">
<string>Basic.Settings.General.OpenStatsOnStartup</string>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="2" column="1">
<widget class="QCheckBox" name="hideOBSFromCapture">
<property name="toolTip">
<string>Basic.Settings.General.HideOBSWindowsFromCapture.Tooltip</string>
@ -890,6 +886,90 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="appearancePage">
<layout class="QVBoxLayout" name="formLayout_69">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea_420">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="appearancePageContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>781</width>
<height>680</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_1337">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="appearanceFrame">
<layout class="QVBoxLayout" name="verticalLayout_30">
<item>
<widget class="QGroupBox" name="appearanceGeneral">
<property name="title">
<string>Basic.Settings.Appearance.General</string>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QFormLayout" name="formLayout_37">
<item row="0" column="0">
<widget class="QLabel" name="label_45">
<property name="text">
<string>Basic.Settings.General.Theme</string>
</property>
<property name="buddy">
<cstring>theme</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="theme"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="streamPage">
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="leftMargin">
@ -7874,7 +7954,6 @@
<tabstop>listWidget</tabstop>
<tabstop>scrollArea_2</tabstop>
<tabstop>language</tabstop>
<tabstop>theme</tabstop>
<tabstop>openStatsOnStartup</tabstop>
<tabstop>hideOBSFromCapture</tabstop>
<tabstop>updateChannelBox</tabstop>
@ -7911,6 +7990,7 @@
<tabstop>multiviewDrawNames</tabstop>
<tabstop>multiviewDrawAreas</tabstop>
<tabstop>multiviewLayout</tabstop>
<tabstop>theme</tabstop>
<tabstop>service</tabstop>
<tabstop>moreInfoButton</tabstop>
<tabstop>connectAccount</tabstop>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#000000"><path d="m 1 1 v 14 h 14 v -14 z m 1 1 h 12 v 12 h -12 z m 0 0"/><path d="m 6 11 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -1 -3 h 1 v 1 h -1 z m 1 1 h 1 v 1 h -1 z m -4 -1 h 3 v 10 h -3 z m 0 0"/><path d="m 8 3 h 1 v 10 h -1 z m 2 9 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m -1 7 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 -2 h 1 v 1 h -1 z m 0 0" fill-opacity="0.34902"/></g></svg>

After

Width:  |  Height:  |  Size: 761 B

View File

@ -80,6 +80,7 @@
<file>images/settings/general.svg</file>
<file>images/settings/hotkeys.svg</file>
<file>images/settings/accessibility.svg</file>
<file>images/settings/appearance.svg</file>
</qresource>
<qresource prefix="">
<file>fonts/OpenSans-Regular.ttf</file>

View File

@ -1217,10 +1217,10 @@ void OBSBasicSettings::ReloadCodecs(const FFmpegFormat &format)
for (auto &codec : supportedCodecs) {
switch (codec.type) {
case AUDIO:
case FFmpegCodecType::AUDIO:
AddCodec(ui->advOutFFAEncoder, codec);
break;
case VIDEO:
case FFmpegCodecType::VIDEO:
AddCodec(ui->advOutFFVEncoder, codec);
break;
default:
@ -4313,7 +4313,7 @@ void OBSBasicSettings::on_listWidget_itemSelectionChanged()
if (loading || row == pageIndex)
return;
if (!hotkeysLoaded && row == 5) {
if (!hotkeysLoaded && row == Pages::HOTKEYS) {
setCursor(Qt::BusyCursor);
/* Look, I know this /feels/ wrong, but the specific issue we're dealing with
* here means that the UI locks up immediately even when using "invokeMethod".
@ -4511,7 +4511,8 @@ void OBSBasicSettings::on_advOutFFAEncoder_currentIndexChanged(int idx)
if (!itemDataVariant.isNull()) {
auto desc = itemDataVariant.value<FFmpegCodec>();
SetAdvOutputFFmpegEnablement(
AUDIO, desc.id != 0 || desc.name != nullptr, true);
FFmpegCodecType::AUDIO,
desc.id != 0 || desc.name != nullptr, true);
}
}
@ -4521,7 +4522,8 @@ void OBSBasicSettings::on_advOutFFVEncoder_currentIndexChanged(int idx)
if (!itemDataVariant.isNull()) {
auto desc = itemDataVariant.value<FFmpegCodec>();
SetAdvOutputFFmpegEnablement(
VIDEO, desc.id != 0 || desc.name != nullptr, true);
FFmpegCodecType::VIDEO,
desc.id != 0 || desc.name != nullptr, true);
}
}
@ -6089,6 +6091,11 @@ QIcon OBSBasicSettings::GetGeneralIcon() const
return generalIcon;
}
QIcon OBSBasicSettings::GetAppearanceIcon() const
{
return appearanceIcon;
}
QIcon OBSBasicSettings::GetStreamIcon() const
{
return streamIcon;
@ -6126,42 +6133,47 @@ QIcon OBSBasicSettings::GetAdvancedIcon() const
void OBSBasicSettings::SetGeneralIcon(const QIcon &icon)
{
ui->listWidget->item(0)->setIcon(icon);
ui->listWidget->item(Pages::GENERAL)->setIcon(icon);
}
void OBSBasicSettings::SetAppearanceIcon(const QIcon &icon)
{
ui->listWidget->item(Pages::APPEARANCE)->setIcon(icon);
}
void OBSBasicSettings::SetStreamIcon(const QIcon &icon)
{
ui->listWidget->item(1)->setIcon(icon);
ui->listWidget->item(Pages::STREAM)->setIcon(icon);
}
void OBSBasicSettings::SetOutputIcon(const QIcon &icon)
{
ui->listWidget->item(2)->setIcon(icon);
ui->listWidget->item(Pages::OUTPUT)->setIcon(icon);
}
void OBSBasicSettings::SetAudioIcon(const QIcon &icon)
{
ui->listWidget->item(3)->setIcon(icon);
ui->listWidget->item(Pages::AUDIO)->setIcon(icon);
}
void OBSBasicSettings::SetVideoIcon(const QIcon &icon)
{
ui->listWidget->item(4)->setIcon(icon);
ui->listWidget->item(Pages::VIDEO)->setIcon(icon);
}
void OBSBasicSettings::SetHotkeysIcon(const QIcon &icon)
{
ui->listWidget->item(5)->setIcon(icon);
ui->listWidget->item(Pages::HOTKEYS)->setIcon(icon);
}
void OBSBasicSettings::SetAccessibilityIcon(const QIcon &icon)
{
ui->listWidget->item(6)->setIcon(icon);
ui->listWidget->item(Pages::ACCESSIBILITY)->setIcon(icon);
}
void OBSBasicSettings::SetAdvancedIcon(const QIcon &icon)
{
ui->listWidget->item(7)->setIcon(icon);
ui->listWidget->item(Pages::ADVANCED)->setIcon(icon);
}
int OBSBasicSettings::CurrentFLVTrack()

View File

@ -72,6 +72,8 @@ class OBSBasicSettings : public QDialog {
Q_OBJECT
Q_PROPERTY(QIcon generalIcon READ GetGeneralIcon WRITE SetGeneralIcon
DESIGNABLE true)
Q_PROPERTY(QIcon appearanceIcon READ GetAppearanceIcon WRITE
SetAppearanceIcon DESIGNABLE true)
Q_PROPERTY(QIcon streamIcon READ GetStreamIcon WRITE SetStreamIcon
DESIGNABLE true)
Q_PROPERTY(QIcon outputIcon READ GetOutputIcon WRITE SetOutputIcon
@ -87,6 +89,19 @@ class OBSBasicSettings : public QDialog {
Q_PROPERTY(QIcon advancedIcon READ GetAdvancedIcon WRITE SetAdvancedIcon
DESIGNABLE true)
enum Pages {
GENERAL,
APPEARANCE,
STREAM,
OUTPUT,
AUDIO,
VIDEO,
HOTKEYS,
ACCESSIBILITY,
ADVANCED,
NUM_PAGES
};
private:
OBSBasic *main;
@ -355,6 +370,7 @@ private:
void UpdateYouTubeAppDockSettings();
QIcon generalIcon;
QIcon appearanceIcon;
QIcon streamIcon;
QIcon outputIcon;
QIcon audioIcon;
@ -364,6 +380,7 @@ private:
QIcon advancedIcon;
QIcon GetGeneralIcon() const;
QIcon GetAppearanceIcon() const;
QIcon GetStreamIcon() const;
QIcon GetOutputIcon() const;
QIcon GetAudioIcon() const;
@ -465,6 +482,7 @@ private slots:
OBSService SpawnTempService();
void SetGeneralIcon(const QIcon &icon);
void SetAppearanceIcon(const QIcon &icon);
void SetStreamIcon(const QIcon &icon);
void SetOutputIcon(const QIcon &icon);
void SetAudioIcon(const QIcon &icon);