diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index de9065e07..99dbf4736 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -1220,6 +1220,8 @@ YouTube.Actions.EnableDVR="Enable DVR"
YouTube.Actions.360Video="360 video"
YouTube.Actions.360Video.Help="(?)"
YouTube.Actions.ScheduleForLater="Schedule for later"
+YouTube.Actions.RememberSettings="Remember these settings"
+
YouTube.Actions.Create_Ready="Create broadcast"
YouTube.Actions.Create_GoLive="Create broadcast and start streaming"
YouTube.Actions.Choose_Ready="Select broadcast"
diff --git a/UI/forms/OBSYoutubeActions.ui b/UI/forms/OBSYoutubeActions.ui
index 29f8c1724..f0f4866dd 100644
--- a/UI/forms/OBSYoutubeActions.ui
+++ b/UI/forms/OBSYoutubeActions.ui
@@ -6,8 +6,8 @@
0
0
- 584
- 510
+ 585
+ 536
@@ -228,6 +228,113 @@
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ YouTube.Actions.EnableDVR
+
+
+ true
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ YouTube.Actions.360Video
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ YouTube.Actions.360Video.Help
+
+
+ Qt::RichText
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+ YouTube.Actions.ScheduleForLater
+
+
+
+
+
-
@@ -320,33 +427,6 @@
- -
-
-
-
-
-
- true
-
-
- YouTube.Actions.ScheduleForLater
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
@@ -380,22 +460,19 @@
- -
-
+
-
+
-
-
+
- YouTube.Actions.EnableDVR
-
-
- true
+ YouTube.Actions.RememberSettings
- -
-
+
-
+
Qt::Horizontal
@@ -407,59 +484,6 @@
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- YouTube.Actions.360Video
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- YouTube.Actions.360Video.Help
-
-
- Qt::RichText
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
@@ -480,7 +504,7 @@
0
0
- 179
+ 524
192
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index 3f8530852..430d7d924 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -170,6 +170,7 @@ class OBSBasic : public OBSMainWindow {
friend class DeviceCaptureToolbar;
friend class DeviceToolbarPropertiesThread;
friend class OBSBasicSourceSelect;
+ friend class OBSYoutubeActions;
friend struct BasicOutputHandler;
friend struct OBSStudioAPI;
diff --git a/UI/window-youtube-actions.cpp b/UI/window-youtube-actions.cpp
index 309ad80e7..0e543f651 100644
--- a/UI/window-youtube-actions.cpp
+++ b/UI/window-youtube-actions.cpp
@@ -232,6 +232,12 @@ OBSYoutubeActions::OBSYoutubeActions(QWidget *parent, Auth *auth,
});
workerThread->start();
+ OBSBasic *main = OBSBasic::Get();
+ bool rememberSettings = config_get_bool(main->basicConfig, "YouTube",
+ "RememberSettings");
+ if (rememberSettings)
+ LoadSettings();
+
#ifdef __APPLE__
// MacOS theming issues
this->resize(this->width() + 200, this->height() + 120);
@@ -628,6 +634,96 @@ void OBSYoutubeActions::UiToBroadcast(BroadcastDescription &broadcast)
broadcast.schedul_for_later = ui->checkScheduledLater->isChecked();
broadcast.projection = ui->check360Video->isChecked() ? "360"
: "rectangular";
+
+ if (ui->checkRememberSettings->isChecked())
+ SaveSettings(broadcast);
+}
+
+void OBSYoutubeActions::SaveSettings(BroadcastDescription &broadcast)
+{
+ OBSBasic *main = OBSBasic::Get();
+
+ config_set_string(main->basicConfig, "YouTube", "Title",
+ QT_TO_UTF8(broadcast.title));
+ config_set_string(main->basicConfig, "YouTube", "Description",
+ QT_TO_UTF8(broadcast.description));
+ config_set_string(main->basicConfig, "YouTube", "Privacy",
+ QT_TO_UTF8(broadcast.privacy));
+ config_set_string(main->basicConfig, "YouTube", "CategoryID",
+ QT_TO_UTF8(broadcast.category.id));
+ config_set_string(main->basicConfig, "YouTube", "Latency",
+ QT_TO_UTF8(broadcast.latency));
+ config_set_bool(main->basicConfig, "YouTube", "MadeForKids",
+ broadcast.made_for_kids);
+ config_set_bool(main->basicConfig, "YouTube", "AutoStart",
+ broadcast.auto_start);
+ config_set_bool(main->basicConfig, "YouTube", "AutoStop",
+ broadcast.auto_start);
+ config_set_bool(main->basicConfig, "YouTube", "DVR", broadcast.dvr);
+ config_set_bool(main->basicConfig, "YouTube", "ScheduleForLater",
+ broadcast.schedul_for_later);
+ config_set_string(main->basicConfig, "YouTube", "Projection",
+ QT_TO_UTF8(broadcast.projection));
+ config_set_bool(main->basicConfig, "YouTube", "RememberSettings", true);
+}
+
+void OBSYoutubeActions::LoadSettings()
+{
+ OBSBasic *main = OBSBasic::Get();
+
+ const char *title =
+ config_get_string(main->basicConfig, "YouTube", "Title");
+ ui->title->setText(QT_UTF8(title));
+
+ const char *desc =
+ config_get_string(main->basicConfig, "YouTube", "Description");
+ ui->description->setPlainText(QT_UTF8(desc));
+
+ const char *priv =
+ config_get_string(main->basicConfig, "YouTube", "Privacy");
+ int index = ui->privacyBox->findData(priv);
+ ui->privacyBox->setCurrentIndex(index);
+
+ const char *catID =
+ config_get_string(main->basicConfig, "YouTube", "CategoryID");
+ index = ui->categoryBox->findData(catID);
+ ui->categoryBox->setCurrentIndex(index);
+
+ const char *latency =
+ config_get_string(main->basicConfig, "YouTube", "Latency");
+ index = ui->latencyBox->findData(latency);
+ ui->latencyBox->setCurrentIndex(index);
+
+ bool dvr = config_get_bool(main->basicConfig, "YouTube", "DVR");
+ ui->checkDVR->setChecked(dvr);
+
+ bool forKids =
+ config_get_bool(main->basicConfig, "YouTube", "MadeForKids");
+ if (forKids)
+ ui->yesMakeForKids->setChecked(true);
+ else
+ ui->notMakeForKids->setChecked(true);
+
+ bool autoStart =
+ config_get_bool(main->basicConfig, "YouTube", "AutoStart");
+ ui->checkAutoStart->setChecked(autoStart);
+
+ bool autoStop =
+ config_get_bool(main->basicConfig, "YouTube", "AutoStop");
+ ui->checkAutoStop->setChecked(autoStop);
+
+ bool schedLater = config_get_bool(main->basicConfig, "YouTube",
+ "ScheduleForLater");
+ ui->checkScheduledLater->setChecked(schedLater);
+
+ const char *projection =
+ config_get_string(main->basicConfig, "YouTube", "Projection");
+ if (projection && *projection) {
+ if (strcmp(projection, "360") == 0)
+ ui->check360Video->setChecked(true);
+ else
+ ui->check360Video->setChecked(false);
+ }
}
void OBSYoutubeActions::OpenYouTubeDashboard()
diff --git a/UI/window-youtube-actions.hpp b/UI/window-youtube-actions.hpp
index c81b3496b..f922e72cf 100644
--- a/UI/window-youtube-actions.hpp
+++ b/UI/window-youtube-actions.hpp
@@ -62,6 +62,8 @@ private:
void OpenYouTubeDashboard();
void Cancel();
void Accept();
+ void SaveSettings(BroadcastDescription &broadcast);
+ void LoadSettings();
QString selectedBroadcast;
bool autostart, autostop;