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;