0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

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.
This commit is contained in:
jp9000 2019-09-03 16:08:48 -07:00
parent 04d1f04bd3
commit 7dd465cae1
9 changed files with 51 additions and 84 deletions

View File

@ -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
)

View File

@ -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);

View File

@ -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;

View File

@ -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()));

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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_);
}
};

View File

@ -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);