diff --git a/UI/CMakeLists.txt b/UI/CMakeLists.txt index 586607417..83c6faefc 100644 --- a/UI/CMakeLists.txt +++ b/UI/CMakeLists.txt @@ -151,6 +151,7 @@ if(BROWSER_AVAILABLE_INTERNAL) list(APPEND obs_PLATFORM_HEADERS obf.h auth-oauth.hpp + window-dock-browser.hpp window-extra-browsers.hpp ) diff --git a/UI/auth-mixer.cpp b/UI/auth-mixer.cpp index 6f883d712..c13493edc 100644 --- a/UI/auth-mixer.cpp +++ b/UI/auth-mixer.cpp @@ -7,9 +7,9 @@ #include #include +#include "window-dock-browser.hpp" #include "window-basic-main.hpp" #include "remote-text.hpp" -#include "window-dock.hpp" #include @@ -20,10 +20,6 @@ using namespace json11; -#include -extern QCef *cef; -extern QCefCookieManager *panel_cookies; - /* ------------------------------------------------------------------------- */ #define MIXER_AUTH_URL "https://obsproject.com/app-auth/mixer?action=redirect" @@ -181,13 +177,6 @@ bool MixerAuth::LoadInternal() return OAuthStreamKey::LoadInternal(); } -class MixerChat : public OBSDock { -public: - inline MixerChat() : OBSDock() {} - - QScopedPointer widget; -}; - void MixerAuth::LoadUI() { if (!cef) @@ -207,7 +196,7 @@ void MixerAuth::LoadUI() QSize size = main->frameSize(); QPoint pos = main->pos(); - chat.reset(new MixerChat()); + chat.reset(new BrowserDock()); chat->setObjectName("mixerChat"); chat->resize(300, 600); chat->setMinimumSize(200, 300); diff --git a/UI/auth-mixer.hpp b/UI/auth-mixer.hpp index 29a6e3394..19f303734 100644 --- a/UI/auth-mixer.hpp +++ b/UI/auth-mixer.hpp @@ -2,12 +2,12 @@ #include "auth-oauth.hpp" -class MixerChat; +class BrowserDock; class MixerAuth : public OAuthStreamKey { Q_OBJECT - QSharedPointer chat; + QSharedPointer chat; QSharedPointer chatMenu; bool uiLoaded = false; diff --git a/UI/auth-restream.cpp b/UI/auth-restream.cpp index 38e60ad55..ee6c8b009 100644 --- a/UI/auth-restream.cpp +++ b/UI/auth-restream.cpp @@ -9,17 +9,14 @@ #include #include +#include "window-dock-browser.hpp" #include "window-basic-main.hpp" #include "remote-text.hpp" #include "ui-config.h" #include "obf.h" -#include using namespace json11; -extern QCef *cef; -extern QCefCookieManager *panel_cookies; - /* ------------------------------------------------------------------------- */ #define RESTREAM_AUTH_URL \ @@ -117,13 +114,6 @@ bool RestreamAuth::LoadInternal() return OAuthStreamKey::LoadInternal(); } -class RestreamWidget : public QDockWidget { -public: - inline RestreamWidget() : QDockWidget() {} - - QScopedPointer widget; -}; - void RestreamAuth::LoadUI() { if (uiLoaded) @@ -145,7 +135,7 @@ void RestreamAuth::LoadUI() QSize size = main->frameSize(); QPoint pos = main->pos(); - chat.reset(new RestreamWidget()); + chat.reset(new BrowserDock()); chat->setObjectName("restreamChat"); chat->resize(420, 600); chat->setMinimumSize(200, 300); @@ -153,7 +143,7 @@ void RestreamAuth::LoadUI() chat->setAllowedAreas(Qt::AllDockWidgetAreas); browser = cef->create_widget(nullptr, url, panel_cookies); - chat->setWidget(browser); + chat->SetWidget(browser); main->addDockWidget(Qt::RightDockWidgetArea, chat.data()); chatMenu.reset(main->AddDockWidget(chat.data())); @@ -162,7 +152,7 @@ void RestreamAuth::LoadUI() url = "https://restream.io/titles/embed"; - info.reset(new RestreamWidget()); + info.reset(new BrowserDock()); info->setObjectName("restreamInfo"); info->resize(410, 600); info->setMinimumSize(200, 150); @@ -170,7 +160,7 @@ void RestreamAuth::LoadUI() info->setAllowedAreas(Qt::AllDockWidgetAreas); browser = cef->create_widget(nullptr, url, panel_cookies); - info->setWidget(browser); + info->SetWidget(browser); main->addDockWidget(Qt::LeftDockWidgetArea, info.data()); infoMenu.reset(main->AddDockWidget(info.data())); @@ -179,7 +169,7 @@ void RestreamAuth::LoadUI() url = "https://restream.io/channel/embed"; - channels.reset(new RestreamWidget()); + channels.reset(new BrowserDock()); channels->setObjectName("restreamChannel"); channels->resize(410, 600); channels->setMinimumSize(410, 300); @@ -187,7 +177,7 @@ void RestreamAuth::LoadUI() channels->setAllowedAreas(Qt::AllDockWidgetAreas); browser = cef->create_widget(nullptr, url, panel_cookies); - channels->setWidget(browser); + channels->SetWidget(browser); main->addDockWidget(Qt::LeftDockWidgetArea, channels.data()); channelMenu.reset(main->AddDockWidget(channels.data())); diff --git a/UI/auth-restream.hpp b/UI/auth-restream.hpp index 401abfa27..65e52ff76 100644 --- a/UI/auth-restream.hpp +++ b/UI/auth-restream.hpp @@ -2,14 +2,14 @@ #include "auth-oauth.hpp" -class RestreamWidget; +class BrowserDock; class RestreamAuth : public OAuthStreamKey { Q_OBJECT - QSharedPointer chat; - QSharedPointer info; - QSharedPointer channels; + QSharedPointer chat; + QSharedPointer info; + QSharedPointer channels; QSharedPointer chatMenu; QSharedPointer infoMenu; diff --git a/UI/auth-twitch.cpp b/UI/auth-twitch.cpp index a83e65ff2..3cd8b79a6 100644 --- a/UI/auth-twitch.cpp +++ b/UI/auth-twitch.cpp @@ -7,9 +7,9 @@ #include #include +#include "window-dock-browser.hpp" #include "window-basic-main.hpp" #include "remote-text.hpp" -#include "window-dock.hpp" #include @@ -18,10 +18,6 @@ using namespace json11; -#include -extern QCef *cef; -extern QCefCookieManager *panel_cookies; - /* ------------------------------------------------------------------------- */ #define TWITCH_AUTH_URL "https://obsproject.com/app-auth/twitch?action=redirect" @@ -162,19 +158,6 @@ bool TwitchAuth::LoadInternal() return OAuthStreamKey::LoadInternal(); } -class TwitchWidget : public OBSDock { -public: - inline TwitchWidget() : OBSDock() {} - - QScopedPointer widget; - - inline void SetWidget(QCefWidget *widget_) - { - setWidget(widget_); - widget.reset(widget_); - } -}; - static const char *ffz_script = "\ var ffz = document.createElement('script');\ ffz.setAttribute('src','https://cdn.frankerfacez.com/script/script.min.js');\ @@ -222,7 +205,7 @@ void TwitchAuth::LoadUI() QSize size = main->frameSize(); QPoint pos = main->pos(); - chat.reset(new TwitchWidget()); + chat.reset(new BrowserDock()); chat->setObjectName("twitchChat"); chat->resize(300, 600); chat->setMinimumSize(200, 300); @@ -286,7 +269,7 @@ void TwitchAuth::LoadSecondaryUIPanes() url += name; url += "/dashboard/live/stream-info"; - info.reset(new TwitchWidget()); + info.reset(new BrowserDock()); info->setObjectName("twitchInfo"); info->resize(300, 650); info->setMinimumSize(200, 300); @@ -306,7 +289,7 @@ void TwitchAuth::LoadSecondaryUIPanes() url += name; url += "/dashboard/live/stats"; - stat.reset(new TwitchWidget()); + stat.reset(new BrowserDock()); stat->setObjectName("twitchStats"); stat->resize(200, 250); stat->setMinimumSize(200, 150); @@ -326,7 +309,7 @@ void TwitchAuth::LoadSecondaryUIPanes() url += name; url += "/dashboard/live/activity-feed"; - feed.reset(new TwitchWidget()); + feed.reset(new BrowserDock()); feed->setObjectName("twitchFeed"); feed->resize(300, 650); feed->setMinimumSize(200, 300); diff --git a/UI/auth-twitch.hpp b/UI/auth-twitch.hpp index 76698d11d..cc4079b72 100644 --- a/UI/auth-twitch.hpp +++ b/UI/auth-twitch.hpp @@ -7,17 +7,17 @@ #include "auth-oauth.hpp" -class TwitchWidget; +class BrowserDock; class TwitchAuth : public OAuthStreamKey { Q_OBJECT friend class TwitchLogin; - QSharedPointer chat; - QSharedPointer info; - QSharedPointer stat; - QSharedPointer feed; + QSharedPointer chat; + QSharedPointer info; + QSharedPointer stat; + QSharedPointer feed; QSharedPointer chatMenu; QSharedPointer infoMenu; QSharedPointer statMenu; diff --git a/UI/window-dock-browser.hpp b/UI/window-dock-browser.hpp new file mode 100644 index 000000000..e2e0a9964 --- /dev/null +++ b/UI/window-dock-browser.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include "window-dock.hpp" +#include + +#include +extern QCef *cef; +extern QCefCookieManager *panel_cookies; + +class BrowserDock : public OBSDock { +public: + inline BrowserDock() : OBSDock() {} + + QScopedPointer cefWidget; + + inline void SetWidget(QCefWidget *widget_) + { + setWidget(widget_); + cefWidget.reset(widget_); + } +}; diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp index 16cf38256..7fecae02f 100644 --- a/UI/window-extra-browsers.cpp +++ b/UI/window-extra-browsers.cpp @@ -1,7 +1,7 @@ #include "window-extra-browsers.hpp" +#include "window-dock-browser.hpp" #include "window-basic-main.hpp" #include "qt-wrappers.hpp" -#include "window-dock.hpp" #include #include @@ -10,10 +10,6 @@ #include "ui_OBSExtraBrowsers.h" -#include -extern QCef *cef; -extern QCefCookieManager *panel_cookies; - using namespace json11; #define OBJ_NAME_SUFFIX "_extraBrowser" @@ -26,19 +22,6 @@ enum class Column : int { Count, }; -class ExtraBrowser : public OBSDock { -public: - inline ExtraBrowser() : OBSDock() {} - - QScopedPointer cefWidget; - - inline void SetWidget(QCefWidget *widget_) - { - setWidget(widget_); - cefWidget.reset(widget_); - } -}; - /* ------------------------------------------------------------------------- */ void ExtraBrowsersModel::Reset() @@ -48,7 +31,7 @@ void ExtraBrowsersModel::Reset() OBSBasic *main = OBSBasic::Get(); for (int i = 0; i < main->extraBrowserDocks.size(); i++) { - ExtraBrowser *dock = reinterpret_cast( + BrowserDock *dock = reinterpret_cast( main->extraBrowserDocks[i].data()); Item item; @@ -191,7 +174,7 @@ void ExtraBrowsersModel::UpdateItem(Item &item) int idx = item.prevIdx; OBSBasic *main = OBSBasic::Get(); - ExtraBrowser *dock = reinterpret_cast( + BrowserDock *dock = reinterpret_cast( main->extraBrowserDocks[idx].data()); dock->setWindowTitle(item.title); dock->setObjectName(item.title + OBJ_NAME_SUFFIX); @@ -536,7 +519,7 @@ void OBSBasic::AddExtraBrowserDock(const QString &title, const QString &url, panel_version = obs_browser_qcef_version(); } - ExtraBrowser *dock = new ExtraBrowser(); + BrowserDock *dock = new BrowserDock(); dock->setObjectName(title + OBJ_NAME_SUFFIX); dock->resize(460, 600); dock->setMinimumSize(150, 150);