0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 21:13:04 +02:00
obs-studio/UI/window-youtube-actions.hpp
2021-08-07 01:07:04 -07:00

69 lines
1.5 KiB
C++

#pragma once
#include <QDialog>
#include <QString>
#include <QThread>
#include "ui_OBSYoutubeActions.h"
#include "youtube-api-wrappers.hpp"
class WorkerThread : public QThread {
Q_OBJECT
public:
WorkerThread(YoutubeApiWrappers *api) : QThread(), apiYouTube(api) {}
void stop() { pending = false; }
protected:
YoutubeApiWrappers *apiYouTube;
bool pending = true;
public slots:
void run() override;
signals:
void ready();
void new_item(const QString &title, const QString &dateTimeString,
const QString &broadcast, bool astart, bool astop);
void failed();
};
class OBSYoutubeActions : public QDialog {
Q_OBJECT
std::unique_ptr<Ui::OBSYoutubeActions> ui;
signals:
void ok(const QString &id, const QString &key, bool autostart,
bool autostop);
protected:
void UpdateOkButtonStatus();
bool StreamNowAction(YoutubeApiWrappers *api,
StreamDescription &stream);
bool StreamLaterAction(YoutubeApiWrappers *api);
bool ChooseAnEventAction(YoutubeApiWrappers *api,
StreamDescription &stream, bool start);
void ShowErrorDialog(QWidget *parent, QString text);
public:
explicit OBSYoutubeActions(QWidget *parent, Auth *auth);
virtual ~OBSYoutubeActions() override;
bool Valid() { return valid; };
private:
void InitBroadcast();
void UiToBroadcast(BroadcastDescription &broadcast);
void OpenYouTubeDashboard();
void Cancel();
void Accept();
QString selectedBroadcast;
bool autostart, autostop;
bool valid = false;
YoutubeApiWrappers *apiYouTube;
WorkerThread *workerThread;
};