Browse Source

UI: Refactor all browser dock classes in to one

Refactors all cases where a window class was created to show a browser
dock in to one class: BrowserDock.  Removes some unnecessary code
duplication.
jp9000 6 years ago
parent
commit
7dd465cae1

+ 1 - 0
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
 		)
 

+ 2 - 13
UI/auth-mixer.cpp

@@ -7,9 +7,9 @@
 #include <qt-wrappers.hpp>
 #include <obs-app.hpp>
 
+#include "window-dock-browser.hpp"
 #include "window-basic-main.hpp"
 #include "remote-text.hpp"
-#include "window-dock.hpp"
 
 #include <json11.hpp>
 
@@ -20,10 +20,6 @@
 
 using namespace json11;
 
-#include <browser-panel.hpp>
-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<QCefWidget> 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);

+ 2 - 2
UI/auth-mixer.hpp

@@ -2,12 +2,12 @@
 
 #include "auth-oauth.hpp"
 
-class MixerChat;
+class BrowserDock;
 
 class MixerAuth : public OAuthStreamKey {
 	Q_OBJECT
 
-	QSharedPointer<MixerChat> chat;
+	QSharedPointer<BrowserDock> chat;
 	QSharedPointer<QAction> chatMenu;
 	bool uiLoaded = false;
 

+ 7 - 17
UI/auth-restream.cpp

@@ -9,17 +9,14 @@
 #include <sstream>
 
 #include <obs-app.hpp>
+#include "window-dock-browser.hpp"
 #include "window-basic-main.hpp"
 #include "remote-text.hpp"
 #include "ui-config.h"
 #include "obf.h"
-#include <browser-panel.hpp>
 
 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<QCefWidget> 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()));

+ 4 - 4
UI/auth-restream.hpp

@@ -2,14 +2,14 @@
 
 #include "auth-oauth.hpp"
 
-class RestreamWidget;
+class BrowserDock;
 
 class RestreamAuth : public OAuthStreamKey {
 	Q_OBJECT
 
-	QSharedPointer<RestreamWidget> chat;
-	QSharedPointer<RestreamWidget> info;
-	QSharedPointer<RestreamWidget> channels;
+	QSharedPointer<BrowserDock> chat;
+	QSharedPointer<BrowserDock> info;
+	QSharedPointer<BrowserDock> channels;
 
 	QSharedPointer<QAction> chatMenu;
 	QSharedPointer<QAction> infoMenu;

+ 5 - 22
UI/auth-twitch.cpp

@@ -7,9 +7,9 @@
 #include <qt-wrappers.hpp>
 #include <obs-app.hpp>
 
+#include "window-dock-browser.hpp"
 #include "window-basic-main.hpp"
 #include "remote-text.hpp"
-#include "window-dock.hpp"
 
 #include <json11.hpp>
 
@@ -18,10 +18,6 @@
 
 using namespace json11;
 
-#include <browser-panel.hpp>
-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<QCefWidget> 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);

+ 5 - 5
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<TwitchWidget> chat;
-	QSharedPointer<TwitchWidget> info;
-	QSharedPointer<TwitchWidget> stat;
-	QSharedPointer<TwitchWidget> feed;
+	QSharedPointer<BrowserDock> chat;
+	QSharedPointer<BrowserDock> info;
+	QSharedPointer<BrowserDock> stat;
+	QSharedPointer<BrowserDock> feed;
 	QSharedPointer<QAction> chatMenu;
 	QSharedPointer<QAction> infoMenu;
 	QSharedPointer<QAction> statMenu;

+ 21 - 0
UI/window-dock-browser.hpp

@@ -0,0 +1,21 @@
+#pragma once
+
+#include "window-dock.hpp"
+#include <QScopedPointer>
+
+#include <browser-panel.hpp>
+extern QCef *cef;
+extern QCefCookieManager *panel_cookies;
+
+class BrowserDock : public OBSDock {
+public:
+	inline BrowserDock() : OBSDock() {}
+
+	QScopedPointer<QCefWidget> cefWidget;
+
+	inline void SetWidget(QCefWidget *widget_)
+	{
+		setWidget(widget_);
+		cefWidget.reset(widget_);
+	}
+};

+ 4 - 21
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 <QLineEdit>
 #include <QHBoxLayout>
@@ -10,10 +10,6 @@
 
 #include "ui_OBSExtraBrowsers.h"
 
-#include <browser-panel.hpp>
-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<QCefWidget> 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<ExtraBrowser *>(
+		BrowserDock *dock = reinterpret_cast<BrowserDock *>(
 			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<ExtraBrowser *>(
+	BrowserDock *dock = reinterpret_cast<BrowserDock *>(
 		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);