diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 1cb9f755a..465201f2a 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -620,6 +620,9 @@ Basic.Settings.General.MultiviewLayout.Horizontal.Extended.Top="Horizontal, Top # basic mode 'stream' settings Basic.Settings.Stream="Stream" Basic.Settings.Stream.StreamType="Stream Type" +Basic.Settings.Stream.Custom.UseAuthentication="Use authentication" +Basic.Settings.Stream.Custom.Username="Username" +Basic.Settings.Stream.Custom.Password="Password" # basic mode 'output' settings Basic.Settings.Output="Output" diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index f123f0e37..d4d8a4e20 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -146,7 +146,7 @@ 0 0 801 - 836 + 931 @@ -1052,6 +1052,68 @@ + + + + Basic.Settings.Stream.Custom.UseAuthentication + + + + + + + + + + Basic.Settings.Stream.Custom.Username + + + authUsername + + + + + + + Basic.Settings.Stream.Custom.Password + + + authPw + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QLineEdit::Password + + + + + + + Show + + + + + + @@ -3783,8 +3845,8 @@ 0 0 - 98 - 28 + 63 + 16 diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index d5bd66b2c..c0ed03992 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -75,6 +75,13 @@ void OBSBasicSettings::LoadStream1Settings() if (strcmp(type, "rtmp_custom") == 0) { ui->service->setCurrentIndex(0); ui->customServer->setText(server); + + bool use_auth = obs_data_get_bool(settings, "use_auth"); + const char *username = obs_data_get_string(settings, "username"); + const char *password = obs_data_get_string(settings, "password"); + ui->authUsername->setText(QT_UTF8(username)); + ui->authPw->setText(QT_UTF8(password)); + ui->useAuth->setChecked(use_auth); } else { int idx = ui->service->findText(service); if (idx == -1) { @@ -134,6 +141,14 @@ void OBSBasicSettings::SaveStream1Settings() } else { obs_data_set_string(settings, "server", QT_TO_UTF8(ui->customServer->text())); + obs_data_set_bool(settings, "use_auth", + ui->useAuth->isChecked()); + if (ui->useAuth->isChecked()) { + obs_data_set_string(settings, "username", + QT_TO_UTF8(ui->authUsername->text())); + obs_data_set_string(settings, "password", + QT_TO_UTF8(ui->authPw->text())); + } } obs_data_set_string(settings, "key", QT_TO_UTF8(ui->key->text())); @@ -267,6 +282,12 @@ void OBSBasicSettings::on_service_currentIndexChanged(int) ui->connectAccount2->setVisible(false); #endif + ui->useAuth->setVisible(custom); + ui->authUsernameLabel->setVisible(custom); + ui->authUsername->setVisible(custom); + ui->authPwLabel->setVisible(custom); + ui->authPwWidget->setVisible(custom); + if (custom) { ui->streamkeyPageLayout->insertRow(1, ui->serverLabel, ui->serverStackedWidget); @@ -274,6 +295,7 @@ void OBSBasicSettings::on_service_currentIndexChanged(int) ui->serverStackedWidget->setCurrentIndex(1); ui->serverStackedWidget->setVisible(true); ui->serverLabel->setVisible(true); + on_useAuth_toggled(); } else { ui->serverStackedWidget->setCurrentIndex(0); } @@ -337,6 +359,17 @@ void OBSBasicSettings::on_show_clicked() } } +void OBSBasicSettings::on_authPwShow_clicked() +{ + if (ui->authPw->echoMode() == QLineEdit::Password) { + ui->authPw->setEchoMode(QLineEdit::Normal); + ui->authPwShow->setText(QTStr("Hide")); + } else { + ui->authPw->setEchoMode(QLineEdit::Password); + ui->authPwShow->setText(QTStr("Show")); + } +} + OBSService OBSBasicSettings::SpawnTempService() { bool custom = IsCustomService(); @@ -447,3 +480,16 @@ void OBSBasicSettings::on_useStreamKey_clicked() { ui->streamStackWidget->setCurrentIndex((int)Section::StreamKey); } + +void OBSBasicSettings::on_useAuth_toggled() +{ + if (!IsCustomService()) + return; + + bool use_auth = ui->useAuth->isChecked(); + + ui->authUsernameLabel->setVisible(use_auth); + ui->authUsername->setVisible(use_auth); + ui->authPwLabel->setVisible(use_auth); + ui->authPwWidget->setVisible(use_auth); +} diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index ed921efcb..290011149 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -331,6 +331,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->server, COMBO_CHANGED, STREAM1_CHANGED); HookWidget(ui->customServer, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->key, EDIT_CHANGED, STREAM1_CHANGED); + HookWidget(ui->useAuth, CHECK_CHANGED, STREAM1_CHANGED); + HookWidget(ui->authUsername, EDIT_CHANGED, STREAM1_CHANGED); + HookWidget(ui->authPw, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->simpleOutputPath, EDIT_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->simpleNoSpace, CHECK_CHANGED, OUTPUTS_CHANGED); diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index e3c7ccd56..53d2f4ba1 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -222,9 +222,11 @@ private slots: void UpdateServerList(); void UpdateKeyLink(); void on_show_clicked(); + void on_authPwShow_clicked(); void on_connectAccount_clicked(); void on_disconnectAccount_clicked(); void on_useStreamKey_clicked(); + void on_useAuth_toggled(); private: /* output */