From a8b8356455fae771eb52873c8f891b66af0302c5 Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Thu, 19 Mar 2020 18:52:30 +1100 Subject: [PATCH] UI: Add setting for Mixer add-on choice MixrElixr Emotes is the emote-specific portion of MixrElixr, a popular extension for Mixer chat. Disabled by default. --- UI/auth-mixer.cpp | 15 ++++++++++++ UI/data/locale/en-US.ini | 3 +++ UI/forms/OBSBasicSettings.ui | 37 +++++++++++++++++++---------- UI/window-basic-settings-stream.cpp | 29 ++++++++++++++++++++++ UI/window-basic-settings.cpp | 1 + 5 files changed, 73 insertions(+), 12 deletions(-) diff --git a/UI/auth-mixer.cpp b/UI/auth-mixer.cpp index c30cbcd37..b379e14e9 100644 --- a/UI/auth-mixer.cpp +++ b/UI/auth-mixer.cpp @@ -177,6 +177,11 @@ bool MixerAuth::LoadInternal() return OAuthStreamKey::LoadInternal(); } +static const char *elixr_script = "\ +var elixr = document.createElement('script');\ +elixr.setAttribute('src','https://api.mixrelixr.com/scripts/elixr-emotes-embedded-chat.bundle.js');\ +document.head.appendChild(elixr);"; + void MixerAuth::LoadUI() { if (!cef) @@ -189,6 +194,7 @@ void MixerAuth::LoadUI() OBSBasic::InitBrowserPanelSafeBlock(); OBSBasic *main = OBSBasic::Get(); + std::string script = ""; std::string url; url += "https://mixer.com/embed/chat/"; url += id; @@ -206,6 +212,15 @@ void MixerAuth::LoadUI() QCefWidget *browser = cef->create_widget(nullptr, url, panel_cookies); chat->SetWidget(browser); + const int mxAddonChoice = + config_get_int(main->Config(), service(), "AddonChoice"); + if (mxAddonChoice) { + if (mxAddonChoice & 0x1) + script += elixr_script; + } + + browser->setStartupScript(script); + main->addDockWidget(Qt::RightDockWidgetArea, chat.data()); chatMenu.reset(main->AddDockWidget(chat.data())); diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index fe4b24520..eef5ba45a 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -687,6 +687,9 @@ Basic.Settings.Stream.TTVAddon.None="None" Basic.Settings.Stream.TTVAddon.BTTV="BetterTTV" Basic.Settings.Stream.TTVAddon.FFZ="FrankerFaceZ" Basic.Settings.Stream.TTVAddon.Both="BetterTTV and FrankerFaceZ" +Basic.Settings.Stream.MixerAddon="Mixer Chat Add-Ons" +Basic.Settings.Stream.MixerAddon.None="None" +Basic.Settings.Stream.MixerAddon.MEE="MixrElixr Emotes" Basic.Settings.Stream.MissingSettingAlert="Missing Stream Setup" Basic.Settings.Stream.StreamSettingsWarning="Open Settings" Basic.Settings.Stream.MissingUrlAndApiKey="URL and Stream Key are missing.\n\nOpen settings to enter the URL and Stream Key in the 'stream' tab." diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index e50cb5be0..00091630d 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -151,8 +151,8 @@ 0 0 - 806 - 1254 + 803 + 1026 @@ -1140,7 +1140,7 @@ - + Basic.Settings.Stream.Custom.Username @@ -1150,10 +1150,10 @@ - + - + Basic.Settings.Stream.Custom.Password @@ -1163,7 +1163,7 @@ - + @@ -1208,6 +1208,19 @@ + + + + Basic.Settings.Stream.MixerAddon + + + mixerAddonDropdown + + + + + + @@ -1244,8 +1257,8 @@ 0 0 - 813 - 761 + 603 + 631 @@ -3753,8 +3766,8 @@ 0 0 - 767 - 582 + 555 + 469 @@ -4609,8 +4622,8 @@ 0 0 - 791 - 970 + 596 + 781 diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index b5b3068f6..e79d404fb 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -41,6 +41,8 @@ void OBSBasicSettings::InitStreamPage() ui->bandwidthTestEnable->setVisible(false); ui->twitchAddonDropdown->setVisible(false); ui->twitchAddonLabel->setVisible(false); + ui->mixerAddonDropdown->setVisible(false); + ui->mixerAddonLabel->setVisible(false); int vertSpacing = ui->topStreamLayout->verticalSpacing(); @@ -67,6 +69,11 @@ void OBSBasicSettings::InitStreamPage() ui->twitchAddonDropdown->addItem( QTStr("Basic.Settings.Stream.TTVAddon.Both")); + ui->mixerAddonDropdown->addItem( + QTStr("Basic.Settings.Stream.MixerAddon.None")); + ui->mixerAddonDropdown->addItem( + QTStr("Basic.Settings.Stream.MixerAddon.MEE")); + connect(ui->service, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateServerList())); connect(ui->service, SIGNAL(currentIndexChanged(int)), this, @@ -112,6 +119,9 @@ void OBSBasicSettings::LoadStream1Settings() idx = config_get_int(main->Config(), "Twitch", "AddonChoice"); ui->twitchAddonDropdown->setCurrentIndex(idx); + + idx = config_get_int(main->Config(), "Mixer", "AddonChoice"); + ui->mixerAddonDropdown->setCurrentIndex(idx); } UpdateServerList(); @@ -189,6 +199,19 @@ void OBSBasicSettings::SaveStream1Settings() if (choiceExists && currentChoice != newChoice) forceAuthReload = true; } + if (!!auth && strcmp(auth->service(), "Mixer") == 0) { + bool choiceExists = config_has_user_value( + main->Config(), "Mixer", "AddonChoice"); + int currentChoice = + config_get_int(main->Config(), "Mixer", "AddonChoice"); + int newChoice = ui->mixerAddonDropdown->currentIndex(); + + config_set_int(main->Config(), "Mixer", "AddonChoice", + newChoice); + + if (choiceExists && currentChoice != newChoice) + forceAuthReload = true; + } obs_data_set_string(settings, "key", QT_TO_UTF8(ui->key->text())); @@ -309,6 +332,8 @@ void OBSBasicSettings::on_service_currentIndexChanged(int) ui->bandwidthTestEnable->setVisible(false); ui->twitchAddonDropdown->setVisible(false); ui->twitchAddonLabel->setVisible(false); + ui->mixerAddonDropdown->setVisible(false); + ui->mixerAddonLabel->setVisible(false); #ifdef BROWSER_AVAILABLE if (cef) { @@ -467,6 +492,10 @@ void OBSBasicSettings::OnOAuthStreamKeyConnected() ui->twitchAddonLabel->setVisible(true); ui->twitchAddonDropdown->setVisible(true); } + if (strcmp(a->service(), "Mixer") == 0) { + ui->mixerAddonLabel->setVisible(true); + ui->mixerAddonDropdown->setVisible(true); + } } ui->streamStackWidget->setCurrentIndex((int)Section::StreamKey); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 6ad08a9d6..77cea6218 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -371,6 +371,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->key, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->bandwidthTestEnable, CHECK_CHANGED, STREAM1_CHANGED); HookWidget(ui->twitchAddonDropdown, COMBO_CHANGED, STREAM1_CHANGED); + HookWidget(ui->mixerAddonDropdown, COMBO_CHANGED, STREAM1_CHANGED); HookWidget(ui->useAuth, CHECK_CHANGED, STREAM1_CHANGED); HookWidget(ui->authUsername, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->authPw, EDIT_CHANGED, STREAM1_CHANGED);