|
@@ -12,6 +12,17 @@
|
|
#include "ui_AutoConfigVideoPage.h"
|
|
#include "ui_AutoConfigVideoPage.h"
|
|
#include "ui_AutoConfigStreamPage.h"
|
|
#include "ui_AutoConfigStreamPage.h"
|
|
|
|
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+#include <browser-panel.hpp>
|
|
|
|
+#include "auth-oauth.hpp"
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+struct QCef;
|
|
|
|
+struct QCefCookieManager;
|
|
|
|
+
|
|
|
|
+extern QCef *cef;
|
|
|
|
+extern QCefCookieManager *panel_cookies;
|
|
|
|
+
|
|
#define wiz reinterpret_cast<AutoConfig*>(wizard())
|
|
#define wiz reinterpret_cast<AutoConfig*>(wizard())
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -222,6 +233,8 @@ AutoConfigStreamPage::AutoConfigStreamPage(QWidget *parent)
|
|
ui->setupUi(this);
|
|
ui->setupUi(this);
|
|
ui->bitrateLabel->setVisible(false);
|
|
ui->bitrateLabel->setVisible(false);
|
|
ui->bitrate->setVisible(false);
|
|
ui->bitrate->setVisible(false);
|
|
|
|
+ ui->connectAccount2->setVisible(false);
|
|
|
|
+ ui->disconnectAccount->setVisible(false);
|
|
|
|
|
|
int vertSpacing = ui->topLayout->verticalSpacing();
|
|
int vertSpacing = ui->topLayout->verticalSpacing();
|
|
|
|
|
|
@@ -229,6 +242,10 @@ AutoConfigStreamPage::AutoConfigStreamPage(QWidget *parent)
|
|
m.setBottom(vertSpacing / 2);
|
|
m.setBottom(vertSpacing / 2);
|
|
ui->topLayout->setContentsMargins(m);
|
|
ui->topLayout->setContentsMargins(m);
|
|
|
|
|
|
|
|
+ m = ui->loginPageLayout->contentsMargins();
|
|
|
|
+ m.setTop(vertSpacing / 2);
|
|
|
|
+ ui->loginPageLayout->setContentsMargins(m);
|
|
|
|
+
|
|
m = ui->streamkeyPageLayout->contentsMargins();
|
|
m = ui->streamkeyPageLayout->contentsMargins();
|
|
m.setTop(vertSpacing / 2);
|
|
m.setTop(vertSpacing / 2);
|
|
ui->streamkeyPageLayout->setContentsMargins(m);
|
|
ui->streamkeyPageLayout->setContentsMargins(m);
|
|
@@ -371,6 +388,94 @@ void AutoConfigStreamPage::on_show_clicked()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void AutoConfigStreamPage::OnOAuthStreamKeyConnected()
|
|
|
|
+{
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+ OAuthStreamKey *a = reinterpret_cast<OAuthStreamKey*>(auth.get());
|
|
|
|
+
|
|
|
|
+ if (a) {
|
|
|
|
+ bool validKey = !a->key().empty();
|
|
|
|
+
|
|
|
|
+ if (validKey)
|
|
|
|
+ ui->key->setText(QT_UTF8(a->key().c_str()));
|
|
|
|
+
|
|
|
|
+ ui->streamKeyWidget->setVisible(!validKey);
|
|
|
|
+ ui->streamKeyLabel->setVisible(!validKey);
|
|
|
|
+ ui->connectAccount2->setVisible(!validKey);
|
|
|
|
+ ui->disconnectAccount->setVisible(validKey);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ui->stackedWidget->setCurrentIndex((int)Section::StreamKey);
|
|
|
|
+ UpdateCompleted();
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void AutoConfigStreamPage::OnAuthConnected()
|
|
|
|
+{
|
|
|
|
+ std::string service = QT_TO_UTF8(ui->service->currentText());
|
|
|
|
+ Auth::Type type = Auth::AuthType(service);
|
|
|
|
+
|
|
|
|
+ if (type == Auth::Type::OAuth_StreamKey) {
|
|
|
|
+ OnOAuthStreamKeyConnected();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void AutoConfigStreamPage::on_connectAccount_clicked()
|
|
|
|
+{
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+ std::string service = QT_TO_UTF8(ui->service->currentText());
|
|
|
|
+
|
|
|
|
+ auth = OAuthStreamKey::Login(this, service);
|
|
|
|
+ if (!!auth)
|
|
|
|
+ OnAuthConnected();
|
|
|
|
+#endif
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#define DISCONNECT_COMFIRM_TITLE \
|
|
|
|
+ "Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title"
|
|
|
|
+#define DISCONNECT_COMFIRM_TEXT \
|
|
|
|
+ "Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text"
|
|
|
|
+
|
|
|
|
+void AutoConfigStreamPage::on_disconnectAccount_clicked()
|
|
|
|
+{
|
|
|
|
+ QMessageBox::StandardButton button;
|
|
|
|
+
|
|
|
|
+ button = OBSMessageBox::question(this,
|
|
|
|
+ QTStr(DISCONNECT_COMFIRM_TITLE),
|
|
|
|
+ QTStr(DISCONNECT_COMFIRM_TEXT));
|
|
|
|
+
|
|
|
|
+ if (button == QMessageBox::No) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ OBSBasic *main = OBSBasic::Get();
|
|
|
|
+
|
|
|
|
+ main->auth.reset();
|
|
|
|
+ auth.reset();
|
|
|
|
+
|
|
|
|
+ std::string service = QT_TO_UTF8(ui->service->currentText());
|
|
|
|
+
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+ OAuth::DeleteCookies(service);
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ ui->streamKeyWidget->setVisible(true);
|
|
|
|
+ ui->streamKeyLabel->setVisible(true);
|
|
|
|
+ ui->connectAccount2->setVisible(true);
|
|
|
|
+ ui->disconnectAccount->setVisible(false);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void AutoConfigStreamPage::on_useStreamKey_clicked()
|
|
|
|
+{
|
|
|
|
+ ui->stackedWidget->setCurrentIndex((int)Section::StreamKey);
|
|
|
|
+ UpdateCompleted();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline bool is_auth_service(const std::string &service)
|
|
|
|
+{
|
|
|
|
+ return Auth::AuthType(service) != Auth::Type::None;
|
|
|
|
+}
|
|
|
|
+
|
|
void AutoConfigStreamPage::ServiceChanged()
|
|
void AutoConfigStreamPage::ServiceChanged()
|
|
{
|
|
{
|
|
bool showMore =
|
|
bool showMore =
|
|
@@ -384,6 +489,32 @@ void AutoConfigStreamPage::ServiceChanged()
|
|
bool testBandwidth = ui->doBandwidthTest->isChecked();
|
|
bool testBandwidth = ui->doBandwidthTest->isChecked();
|
|
bool custom = IsCustom();
|
|
bool custom = IsCustom();
|
|
|
|
|
|
|
|
+ ui->disconnectAccount->setVisible(false);
|
|
|
|
+
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+ if (cef) {
|
|
|
|
+ if (lastService != service.c_str()) {
|
|
|
|
+ bool can_auth = is_auth_service(service);
|
|
|
|
+ int page = can_auth
|
|
|
|
+ ? (int)Section::Connect
|
|
|
|
+ : (int)Section::StreamKey;
|
|
|
|
+
|
|
|
|
+ ui->stackedWidget->setCurrentIndex(page);
|
|
|
|
+ ui->streamKeyWidget->setVisible(true);
|
|
|
|
+ ui->streamKeyLabel->setVisible(true);
|
|
|
|
+ ui->connectAccount2->setVisible(can_auth);
|
|
|
|
+ auth.reset();
|
|
|
|
+
|
|
|
|
+ if (lastService.isEmpty())
|
|
|
|
+ lastService = service.c_str();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ ui->connectAccount2->setVisible(false);
|
|
|
|
+ }
|
|
|
|
+#else
|
|
|
|
+ ui->connectAccount2->setVisible(false);
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* Test three closest servers if "Auto" is available for Twitch */
|
|
/* Test three closest servers if "Auto" is available for Twitch */
|
|
if (service == "Twitch" && wiz->twitchAuto)
|
|
if (service == "Twitch" && wiz->twitchAuto)
|
|
regionBased = false;
|
|
regionBased = false;
|
|
@@ -415,6 +546,17 @@ void AutoConfigStreamPage::ServiceChanged()
|
|
ui->bitrateLabel->setHidden(testBandwidth);
|
|
ui->bitrateLabel->setHidden(testBandwidth);
|
|
ui->bitrate->setHidden(testBandwidth);
|
|
ui->bitrate->setHidden(testBandwidth);
|
|
|
|
|
|
|
|
+#ifdef BROWSER_AVAILABLE
|
|
|
|
+ OBSBasic *main = OBSBasic::Get();
|
|
|
|
+ auth.reset();
|
|
|
|
+
|
|
|
|
+ if (!!main->auth &&
|
|
|
|
+ service.find(main->auth->service()) != std::string::npos) {
|
|
|
|
+ auth = main->auth;
|
|
|
|
+ OnAuthConnected();
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+
|
|
UpdateCompleted();
|
|
UpdateCompleted();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -544,7 +686,8 @@ void AutoConfigStreamPage::UpdateServerList()
|
|
|
|
|
|
void AutoConfigStreamPage::UpdateCompleted()
|
|
void AutoConfigStreamPage::UpdateCompleted()
|
|
{
|
|
{
|
|
- if (ui->key->text().isEmpty()) {
|
|
|
|
|
|
+ if (ui->stackedWidget->currentIndex() == (int)Section::Connect ||
|
|
|
|
+ (ui->key->text().isEmpty() && !auth)) {
|
|
ready = false;
|
|
ready = false;
|
|
} else {
|
|
} else {
|
|
bool custom = IsCustom();
|
|
bool custom = IsCustom();
|
|
@@ -802,6 +945,9 @@ void AutoConfig::SaveStreamSettings()
|
|
|
|
|
|
main->SetService(newService);
|
|
main->SetService(newService);
|
|
main->SaveService();
|
|
main->SaveService();
|
|
|
|
+ main->auth = streamPage->auth;
|
|
|
|
+ if (!!main->auth)
|
|
|
|
+ main->auth->LoadUI();
|
|
|
|
|
|
/* ---------------------------------- */
|
|
/* ---------------------------------- */
|
|
/* save stream settings */
|
|
/* save stream settings */
|