diff --git a/UI/CMakeLists.txt b/UI/CMakeLists.txt index a33f9e16d..c9f596f02 100644 --- a/UI/CMakeLists.txt +++ b/UI/CMakeLists.txt @@ -243,6 +243,7 @@ set(obs_SOURCES combobox-ignorewheel.cpp spinbox-ignorewheel.cpp record-button.cpp + url-push-button.cpp volume-control.cpp adv-audio-control.cpp item-widget-helpers.cpp @@ -298,6 +299,7 @@ set(obs_HEADERS menu-button.hpp mute-checkbox.hpp record-button.hpp + url-push-button.hpp volume-control.hpp adv-audio-control.hpp item-widget-helpers.hpp diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 3ab69de19..bc7852684 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -162,6 +162,7 @@ Basic.AutoConfig.StreamPage.ConnectAccount="Connect Account (recommended)" Basic.AutoConfig.StreamPage.DisconnectAccount="Disconnect Account" Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Disconnect Account?" Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="This change will apply immediately. Are you sure you want to disconnect your account?" +Basic.AutoConfig.StreamPage.GetStreamKey="Get Stream Key" Basic.AutoConfig.StreamPage.UseStreamKey="Use Stream Key" Basic.AutoConfig.StreamPage.Service="Service" Basic.AutoConfig.StreamPage.Service.ShowAll="Show All..." diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index 37d929761..4ca2c4a56 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -151,8 +151,8 @@ 0 0 - 803 - 977 + 630 + 1035 @@ -775,7 +775,7 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + Basic.AutoConfig.StreamPage.Service @@ -785,7 +785,7 @@ - + 20 @@ -921,7 +921,7 @@ - 0 + 1 @@ -1011,10 +1011,23 @@ + + + + + + + -4 + + + Basic.AutoConfig.StreamPage.GetStreamKey + + + - + Qt::Horizontal @@ -1027,7 +1040,7 @@ - + @@ -1051,7 +1064,7 @@ - + @@ -1076,16 +1089,20 @@ + + + Basic.Settings.Stream.BandwidthTestMode + + + + Basic.Settings.Stream.Custom.UseAuthentication - - - - + Basic.Settings.Stream.Custom.Username @@ -1095,7 +1112,10 @@ - + + + + Basic.Settings.Stream.Custom.Password @@ -1105,7 +1125,7 @@ - + @@ -1137,13 +1157,6 @@ - - - - Basic.Settings.Stream.BandwidthTestMode - - - @@ -1180,8 +1193,8 @@ 0 0 - 601 - 631 + 739 + 793 @@ -3628,8 +3641,8 @@ 0 0 - 555 - 469 + 696 + 601 @@ -4199,7 +4212,7 @@ - 0 + 1 @@ -4444,8 +4457,8 @@ 0 0 - 803 - 781 + 759 + 930 @@ -5249,6 +5262,13 @@ + + + UrlPushButton + QPushButton +
url-push-button.hpp
+
+
listWidget scrollArea_2 diff --git a/UI/url-push-button.cpp b/UI/url-push-button.cpp new file mode 100644 index 000000000..6a2b59847 --- /dev/null +++ b/UI/url-push-button.cpp @@ -0,0 +1,26 @@ +#include "url-push-button.hpp" + +#include +#include +#include + +void UrlPushButton::setTargetUrl(QUrl url) +{ + setToolTip(url.toString()); + m_targetUrl = url; +} + +QUrl UrlPushButton::targetUrl() +{ + return m_targetUrl; +} + +void UrlPushButton::mousePressEvent(QMouseEvent *event) +{ + Q_UNUSED(event) + QUrl openUrl = m_targetUrl; + if (openUrl.isEmpty()) + return; + + QDesktopServices::openUrl(openUrl); +} diff --git a/UI/url-push-button.hpp b/UI/url-push-button.hpp new file mode 100644 index 000000000..2668ade27 --- /dev/null +++ b/UI/url-push-button.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +class UrlPushButton : public QPushButton { + Q_OBJECT + Q_PROPERTY(QUrl targetUrl READ targetUrl WRITE setTargetUrl) + +public: + inline UrlPushButton(QWidget *parent = nullptr) : QPushButton(parent) {} + void setTargetUrl(QUrl url); + QUrl targetUrl(); + +protected: + void mousePressEvent(QMouseEvent *event) override; + +private: + QUrl m_targetUrl; +}; diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index f09508462..4f5b1fee4 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -1,10 +1,12 @@ #include +#include #include "window-basic-settings.hpp" #include "obs-frontend-api.h" #include "obs-app.hpp" #include "window-basic-main.hpp" #include "qt-wrappers.hpp" +#include "url-push-button.hpp" #ifdef BROWSER_AVAILABLE #include @@ -177,44 +179,34 @@ void OBSBasicSettings::SaveStream1Settings() void OBSBasicSettings::UpdateKeyLink() { - bool custom = IsCustomService(); - QString serviceName = ui->service->currentText(); - - if (custom) - serviceName = ""; - - QString text = QTStr("Basic.AutoConfig.StreamPage.StreamKey"); - if (serviceName == "Twitch") { - text += " "; - text += QTStr( - "Basic.AutoConfig.StreamPage.StreamKey.LinkToSite"); - text += ""; - } else if (serviceName == "YouTube / YouTube Gaming") { - text += " "; - text += QTStr( - "Basic.AutoConfig.StreamPage.StreamKey.LinkToSite"); - text += ""; - } else if (serviceName.startsWith("Restream.io")) { - text += " "; - text += QTStr( - "Basic.AutoConfig.StreamPage.StreamKey.LinkToSite"); - text += ""; - } else if (serviceName == "Facebook Live") { - text += " "; - text += QTStr( - "Basic.AutoConfig.StreamPage.StreamKey.LinkToSite"); - text += ""; + if (IsCustomService()) { + ui->getStreamKeyButton->hide(); + return; } - ui->streamKeyLabel->setText(text); + QString serviceName = ui->service->currentText(); + QString streamKeyLink; + if (serviceName == "Twitch") { + streamKeyLink = QTStr( + "https://www.twitch.tv/broadcast/dashboard/streamkey"); + } else if (serviceName == "YouTube / YouTube Gaming") { + streamKeyLink = QTStr("https://www.youtube.com/live_dashboard"); + } else if (serviceName.startsWith("Restream.io")) { + streamKeyLink = QTStr( + "https://restream.io/settings/streaming-setup?from=OBS"); + } else if (serviceName == "Facebook Live") { + streamKeyLink += + QTStr("https://www.facebook.com/live/create?ref=OBS"); + } else if (serviceName.startsWith("Twitter")) { + streamKeyLink = QTStr("https://www.pscp.tv/account/producer"); + } + + if (QString(streamKeyLink).isNull()) { + ui->getStreamKeyButton->hide(); + } else { + ui->getStreamKeyButton->setTargetUrl(QUrl(streamKeyLink)); + ui->getStreamKeyButton->show(); + } } void OBSBasicSettings::LoadServices(bool showAll)