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:
parent
04d1f04bd3
commit
7dd465cae1
@ -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
|
||||
)
|
||||
|
||||
|
@ -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,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;
|
||||
|
||||
|
@ -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()));
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
UI/window-dock-browser.hpp
Normal file
21
UI/window-dock-browser.hpp
Normal 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_);
|
||||
}
|
||||
};
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user