UI: Refactor integration and browser docks

Use the QAction provided by QDockWidget with new Qt connection rather
than creating a new one for each dock.

Separate extra browser docks from extra docks, the latter is meant for
plugin/integration docks.
This commit is contained in:
tytan652
2023-03-17 20:21:08 +11:00
committed by Matt Gajownik
parent 63e3e0acd0
commit e6873d3278
9 changed files with 222 additions and 108 deletions
+28 -15
View File
@@ -24,12 +24,28 @@ using namespace json11;
#define RESTREAM_STREAMKEY_URL "https://api.restream.io/v2/user/streamKey"
#define RESTREAM_SCOPE_VERSION 1
#define RESTREAM_CHAT_DOCK_NAME "restreamChat"
#define RESTREAM_INFO_DOCK_NAME "restreamInfo"
#define RESTREAM_CHANNELS_DOCK_NAME "restreamChannel"
static Auth::Def restreamDef = {"Restream", Auth::Type::OAuth_StreamKey};
/* ------------------------------------------------------------------------- */
RestreamAuth::RestreamAuth(const Def &d) : OAuthStreamKey(d) {}
RestreamAuth::~RestreamAuth()
{
if (!uiLoaded)
return;
OBSBasic *main = OBSBasic::Get();
main->RemoveDockWidget(RESTREAM_CHAT_DOCK_NAME);
main->RemoveDockWidget(RESTREAM_INFO_DOCK_NAME);
main->RemoveDockWidget(RESTREAM_CHANNELS_DOCK_NAME);
}
bool RestreamAuth::GetChannelInfo()
try {
std::string client_id = RESTREAM_CLIENTID;
@@ -134,52 +150,49 @@ void RestreamAuth::LoadUI()
QSize size = main->frameSize();
QPoint pos = main->pos();
chat.reset(new BrowserDock());
chat->setObjectName("restreamChat");
BrowserDock *chat = new BrowserDock();
chat->setObjectName(RESTREAM_CHAT_DOCK_NAME);
chat->resize(420, 600);
chat->setMinimumSize(200, 300);
chat->setWindowTitle(QTStr("Auth.Chat"));
chat->setAllowedAreas(Qt::AllDockWidgetAreas);
browser = cef->create_widget(chat.data(), url, panel_cookies);
browser = cef->create_widget(chat, url, panel_cookies);
chat->SetWidget(browser);
main->addDockWidget(Qt::RightDockWidgetArea, chat.data());
chatMenu.reset(main->AddDockWidget(chat.data()));
main->AddDockWidget(chat, Qt::RightDockWidgetArea);
/* ----------------------------------- */
url = "https://restream.io/titles/embed";
info.reset(new BrowserDock());
info->setObjectName("restreamInfo");
BrowserDock *info = new BrowserDock();
info->setObjectName(RESTREAM_INFO_DOCK_NAME);
info->resize(410, 600);
info->setMinimumSize(200, 150);
info->setWindowTitle(QTStr("Auth.StreamInfo"));
info->setAllowedAreas(Qt::AllDockWidgetAreas);
browser = cef->create_widget(info.data(), url, panel_cookies);
browser = cef->create_widget(info, url, panel_cookies);
info->SetWidget(browser);
main->addDockWidget(Qt::LeftDockWidgetArea, info.data());
infoMenu.reset(main->AddDockWidget(info.data()));
main->AddDockWidget(info, Qt::LeftDockWidgetArea);
/* ----------------------------------- */
url = "https://restream.io/channel/embed";
channels.reset(new BrowserDock());
channels->setObjectName("restreamChannel");
BrowserDock *channels = new BrowserDock();
channels->setObjectName(RESTREAM_CHANNELS_DOCK_NAME);
channels->resize(410, 600);
channels->setMinimumSize(410, 300);
channels->setWindowTitle(QTStr("RestreamAuth.Channels"));
channels->setAllowedAreas(Qt::AllDockWidgetAreas);
browser = cef->create_widget(channels.data(), url, panel_cookies);
browser = cef->create_widget(channels, url, panel_cookies);
channels->SetWidget(browser);
main->addDockWidget(Qt::LeftDockWidgetArea, channels.data());
channelMenu.reset(main->AddDockWidget(channels.data()));
main->AddDockWidget(channels, Qt::LeftDockWidgetArea);
/* ----------------------------------- */