media-controls.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include <QWidget>
  3. #include <QTimer>
  4. #include <vector>
  5. #include <obs.hpp>
  6. #include "qt-wrappers.hpp"
  7. class Ui_MediaControls;
  8. class MediaControls : public QWidget {
  9. Q_OBJECT
  10. private:
  11. std::vector<OBSSignal> sigs;
  12. OBSWeakSource weakSource = nullptr;
  13. QTimer mediaTimer;
  14. QTimer seekTimer;
  15. int seek;
  16. int lastSeek;
  17. bool prevPaused = false;
  18. bool countDownTimer = false;
  19. bool isSlideshow = false;
  20. QString FormatSeconds(int totalSeconds);
  21. void StartMediaTimer();
  22. void StopMediaTimer();
  23. void RefreshControls();
  24. void SetScene(OBSScene scene);
  25. int64_t GetSliderTime(int val);
  26. static void OBSMediaStopped(void *data, calldata_t *calldata);
  27. static void OBSMediaPlay(void *data, calldata_t *calldata);
  28. static void OBSMediaPause(void *data, calldata_t *calldata);
  29. static void OBSMediaStarted(void *data, calldata_t *calldata);
  30. std::unique_ptr<Ui_MediaControls> ui;
  31. private slots:
  32. void on_playPauseButton_clicked();
  33. void on_stopButton_clicked();
  34. void on_nextButton_clicked();
  35. void on_previousButton_clicked();
  36. void on_durationLabel_clicked();
  37. void MediaSliderClicked();
  38. void MediaSliderReleased();
  39. void MediaSliderHovered(int val);
  40. void MediaSliderMoved(int val);
  41. void SetSliderPosition();
  42. void SetPlayingState();
  43. void SetPausedState();
  44. void SetRestartState();
  45. void RestartMedia();
  46. void StopMedia();
  47. void PlaylistNext();
  48. void PlaylistPrevious();
  49. void SeekTimerCallback();
  50. void MoveSliderFoward(int seconds = 5);
  51. void MoveSliderBackwards(int seconds = 5);
  52. public slots:
  53. void PlayMedia();
  54. void PauseMedia();
  55. public:
  56. MediaControls(QWidget *parent = nullptr);
  57. ~MediaControls();
  58. OBSSource GetSource();
  59. void SetSource(OBSSource newSource);
  60. bool MediaPaused();
  61. };