1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #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,
- const QString &status, bool astart, bool astop);
- void failed();
- };
- class OBSYoutubeActions : public QDialog {
- Q_OBJECT
- Q_PROPERTY(QIcon thumbPlaceholder READ GetPlaceholder WRITE SetPlaceholder DESIGNABLE true)
- std::unique_ptr<Ui::OBSYoutubeActions> ui;
- signals:
- void ok(const QString &broadcast_id, const QString &stream_id, const QString &key, bool autostart,
- bool autostop, bool start_now);
- protected:
- void showEvent(QShowEvent *event) override;
- void UpdateOkButtonStatus();
- bool CreateEventAction(YoutubeApiWrappers *api, BroadcastDescription &broadcast, StreamDescription &stream,
- bool stream_later, bool ready_broadcast = false);
- bool ChooseAnEventAction(YoutubeApiWrappers *api, StreamDescription &stream);
- void ShowErrorDialog(QWidget *parent, QString text);
- public:
- explicit OBSYoutubeActions(QWidget *parent, Auth *auth, bool broadcastReady);
- virtual ~OBSYoutubeActions() override;
- bool Valid() { return valid; };
- private:
- void InitBroadcast();
- void ReadyBroadcast();
- void UiToBroadcast(BroadcastDescription &broadcast);
- void OpenYouTubeDashboard();
- void Cancel();
- void Accept();
- void SaveSettings(BroadcastDescription &broadcast);
- void LoadSettings();
- QIcon GetPlaceholder() { return thumbPlaceholder; }
- void SetPlaceholder(const QIcon &icon) { thumbPlaceholder = icon; }
- QString selectedBroadcast;
- bool autostart, autostop;
- bool valid = false;
- YoutubeApiWrappers *apiYouTube;
- WorkerThread *workerThread = nullptr;
- bool broadcastReady = false;
- QString thumbnailFile;
- QIcon thumbPlaceholder;
- };
|