window-dock-youtube-app.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "window-dock-browser.hpp"
  3. #include "youtube-api-wrappers.hpp"
  4. class QAction;
  5. class QCefWidget;
  6. class YouTubeAppDock : public BrowserDock {
  7. Q_OBJECT
  8. public:
  9. YouTubeAppDock(const QString &title);
  10. ~YouTubeAppDock();
  11. enum streaming_mode_t { YTSM_ACCOUNT, YTSM_STREAM_KEY };
  12. void AccountConnected();
  13. void AccountDisconnected();
  14. void SettingsUpdated(bool cleanup = false);
  15. void Update();
  16. void BroadcastCreated(const char *stream_id);
  17. void BroadcastSelected(const char *stream_id);
  18. void IngestionStarted();
  19. void IngestionStopped();
  20. static bool IsYTServiceSelected();
  21. static YoutubeApiWrappers *GetYTApi();
  22. static void CleanupYouTubeUrls();
  23. protected:
  24. void IngestionStarted(const char *stream_id, streaming_mode_t mode);
  25. void IngestionStopped(const char *stream_id, streaming_mode_t mode);
  26. private:
  27. std::string InitYTUserUrl();
  28. void SetVisibleYTAppDockInMenu(bool visible);
  29. void AddYouTubeAppDock();
  30. void CreateBrowserWidget(const std::string &url);
  31. virtual void showEvent(QShowEvent *event) override;
  32. virtual void closeEvent(QCloseEvent *event) override;
  33. void DispatchYTEvent(const char *event, const char *video_id,
  34. streaming_mode_t mode);
  35. void UpdateChannelId();
  36. void SetInitEvent(streaming_mode_t mode, const char *event = nullptr,
  37. const char *video_id = nullptr,
  38. const char *channelId = nullptr);
  39. QString channelId;
  40. QPointer<QCefWidget> dockBrowser;
  41. QCefCookieManager *cookieManager; // is not a Qt object
  42. };