0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00
obs-studio/UI/auth-youtube.hpp
Matt Gajownik 7d9f8e7cac UI: Set browser dock title in constructor
Works around a bug in Qt where setWindowTitle called on a native window
that hasn't been initialised yet causes the title data to be lost,
resulting in the window's title never being set.
2023-08-15 12:27:18 -04:00

67 lines
1.5 KiB
C++

#pragma once
#include <QObject>
#include <QString>
#include <random>
#include <string>
#include "auth-oauth.hpp"
#ifdef BROWSER_AVAILABLE
#include "window-dock-browser.hpp"
#include "lineedit-autoresize.hpp"
#include <QHBoxLayout>
class YoutubeChatDock : public BrowserDock {
Q_OBJECT
private:
std::string apiChatId;
LineEditAutoResize *lineEdit;
QPushButton *sendButton;
QHBoxLayout *chatLayout;
public:
inline YoutubeChatDock(const QString &title) : BrowserDock(title) {}
void SetWidget(QCefWidget *widget_);
void SetApiChatId(const std::string &id);
private slots:
void SendChatMessage();
void ShowErrorMessage(const QString &error);
void EnableChatInput();
};
#endif
inline const std::vector<Auth::Def> youtubeServices = {
{"YouTube - RTMP", Auth::Type::OAuth_LinkedAccount, true, true},
{"YouTube - RTMPS", Auth::Type::OAuth_LinkedAccount, true, true},
{"YouTube - HLS", Auth::Type::OAuth_LinkedAccount, true, true}};
class YoutubeAuth : public OAuthStreamKey {
Q_OBJECT
bool uiLoaded = false;
std::string section;
#ifdef BROWSER_AVAILABLE
YoutubeChatDock *chat;
#endif
virtual bool RetryLogin() override;
virtual void SaveInternal() override;
virtual bool LoadInternal() override;
virtual void LoadUI() override;
QString GenerateState();
public:
YoutubeAuth(const Def &d);
~YoutubeAuth();
void SetChatId(const QString &chat_id, const std::string &api_chat_id);
void ResetChat();
static std::shared_ptr<Auth> Login(QWidget *parent,
const std::string &service);
};