diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index eb31c6601..1095f5f53 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -174,6 +174,7 @@ 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.MoreInfo="More Info"
Basic.AutoConfig.StreamPage.UseStreamKey="Use Stream Key"
Basic.AutoConfig.StreamPage.Service="Service"
Basic.AutoConfig.StreamPage.Service.ShowAll="Show All..."
diff --git a/UI/forms/AutoConfigStreamPage.ui b/UI/forms/AutoConfigStreamPage.ui
index 7eec15fa9..e5940b950 100644
--- a/UI/forms/AutoConfigStreamPage.ui
+++ b/UI/forms/AutoConfigStreamPage.ui
@@ -74,7 +74,32 @@
-
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ -
+
+
+ Basic.AutoConfig.StreamPage.MoreInfo
+
+
+
+
+
-
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
index f4eaa36c0..f2b91fc4c 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
@@ -824,10 +824,41 @@
-
-
-
- 20
-
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ 20
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Basic.AutoConfig.StreamPage.MoreInfo
+
+
+
+
-
diff --git a/UI/window-basic-auto-config.cpp b/UI/window-basic-auto-config.cpp
index 466da7e15..61d291145 100644
--- a/UI/window-basic-auto-config.cpp
+++ b/UI/window-basic-auto-config.cpp
@@ -285,6 +285,8 @@ AutoConfigStreamPage::AutoConfigStreamPage(QWidget *parent)
connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
SLOT(UpdateKeyLink()));
+ connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
+ SLOT(UpdateMoreInfoLink()));
connect(ui->key, SIGNAL(textChanged(const QString &)), this,
SLOT(UpdateCompleted()));
@@ -575,6 +577,35 @@ void AutoConfigStreamPage::ServiceChanged()
UpdateCompleted();
}
+void AutoConfigStreamPage::UpdateMoreInfoLink()
+{
+ if (IsCustomService()) {
+ ui->moreInfoButton->hide();
+ return;
+ }
+
+ QString serviceName = ui->service->currentText();
+ obs_properties_t *props = obs_get_service_properties("rtmp_common");
+ obs_property_t *services = obs_properties_get(props, "service");
+
+ OBSData settings = obs_data_create();
+ obs_data_release(settings);
+
+ obs_data_set_string(settings, "service", QT_TO_UTF8(serviceName));
+ obs_property_modified(services, settings);
+
+ const char *more_info_link =
+ obs_data_get_string(settings, "more_info_link");
+
+ if (!more_info_link || (*more_info_link == '\0')) {
+ ui->moreInfoButton->hide();
+ } else {
+ ui->moreInfoButton->setTargetUrl(QUrl(more_info_link));
+ ui->moreInfoButton->show();
+ }
+ obs_properties_destroy(props);
+}
+
void AutoConfigStreamPage::UpdateKeyLink()
{
QString serviceName = ui->service->currentText();
@@ -814,6 +845,7 @@ AutoConfig::AutoConfig(QWidget *parent) : QWizard(parent)
streamPage->UpdateServerList();
streamPage->UpdateKeyLink();
+ streamPage->UpdateMoreInfoLink();
streamPage->lastService.clear();
if (!customServer) {
diff --git a/UI/window-basic-auto-config.hpp b/UI/window-basic-auto-config.hpp
index 98540c8c6..656b76f13 100644
--- a/UI/window-basic-auto-config.hpp
+++ b/UI/window-basic-auto-config.hpp
@@ -195,6 +195,7 @@ public slots:
void on_useStreamKey_clicked();
void ServiceChanged();
void UpdateKeyLink();
+ void UpdateMoreInfoLink();
void UpdateServerList();
void UpdateCompleted();
};
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index 53231d03e..4b68f9339 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -75,6 +75,8 @@ void OBSBasicSettings::InitStreamPage()
SLOT(UpdateKeyLink()));
connect(ui->customServer, SIGNAL(editingFinished(const QString &)),
this, SLOT(UpdateKeyLink()));
+ connect(ui->service, SIGNAL(currentIndexChanged(int)), this,
+ SLOT(UpdateMoreInfoLink()));
}
void OBSBasicSettings::LoadStream1Settings()
@@ -138,6 +140,7 @@ void OBSBasicSettings::LoadStream1Settings()
obs_data_release(settings);
UpdateKeyLink();
+ UpdateMoreInfoLink();
bool streamActive = obs_frontend_streaming_active();
ui->streamPage->setEnabled(!streamActive);
@@ -212,6 +215,35 @@ void OBSBasicSettings::SaveStream1Settings()
main->auth->LoadUI();
}
+void OBSBasicSettings::UpdateMoreInfoLink()
+{
+ if (IsCustomService()) {
+ ui->moreInfoButton->hide();
+ return;
+ }
+
+ QString serviceName = ui->service->currentText();
+ obs_properties_t *props = obs_get_service_properties("rtmp_common");
+ obs_property_t *services = obs_properties_get(props, "service");
+
+ OBSData settings = obs_data_create();
+ obs_data_release(settings);
+
+ obs_data_set_string(settings, "service", QT_TO_UTF8(serviceName));
+ obs_property_modified(services, settings);
+
+ const char *more_info_link =
+ obs_data_get_string(settings, "more_info_link");
+
+ if (!more_info_link || (*more_info_link == '\0')) {
+ ui->moreInfoButton->hide();
+ } else {
+ ui->moreInfoButton->setTargetUrl(QUrl(more_info_link));
+ ui->moreInfoButton->show();
+ }
+ obs_properties_destroy(props);
+}
+
void OBSBasicSettings::UpdateKeyLink()
{
QString serviceName = ui->service->currentText();
diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp
index 51179a2cd..89f679506 100644
--- a/UI/window-basic-settings.hpp
+++ b/UI/window-basic-settings.hpp
@@ -239,6 +239,7 @@ private:
private slots:
void UpdateServerList();
void UpdateKeyLink();
+ void UpdateMoreInfoLink();
void on_show_clicked();
void on_authPwShow_clicked();
void on_connectAccount_clicked();
diff --git a/plugins/rtmp-services/rtmp-common.c b/plugins/rtmp-services/rtmp-common.c
index 5c2527687..627ac7d54 100644
--- a/plugins/rtmp-services/rtmp-common.c
+++ b/plugins/rtmp-services/rtmp-common.c
@@ -370,6 +370,15 @@ static void fill_servers(obs_property_t *servers_prop, json_t *service,
}
}
+static void fill_more_info_link(json_t *service, obs_data_t *settings)
+{
+ const char *more_info_link;
+
+ more_info_link = get_string_val(service, "more_info_link");
+ if (more_info_link)
+ obs_data_set_string(settings, "more_info_link", more_info_link);
+}
+
static inline json_t *find_service(json_t *root, const char *name,
const char **p_new_name)
{
@@ -432,7 +441,7 @@ static bool service_selected(obs_properties_t *props, obs_property_t *p,
}
fill_servers(obs_properties_get(props, "server"), service, name);
-
+ fill_more_info_link(service, settings);
return true;
}