MediaControls.hpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <QTimer>
  4. #include <QWidget>
  5. class Ui_MediaControls;
  6. class MediaControls : public QWidget {
  7. Q_OBJECT
  8. private:
  9. std::vector<OBSSignal> sigs;
  10. OBSWeakSource weakSource = nullptr;
  11. QTimer mediaTimer;
  12. QTimer seekTimer;
  13. int seek;
  14. int lastSeek;
  15. bool prevPaused = false;
  16. bool countDownTimer = false;
  17. bool isSlideshow = false;
  18. QString FormatSeconds(int totalSeconds);
  19. void StartMediaTimer();
  20. void StopMediaTimer();
  21. void RefreshControls();
  22. void SetScene(OBSScene scene);
  23. int64_t GetSliderTime(int val);
  24. static void OBSMediaStopped(void *data, calldata_t *calldata);
  25. static void OBSMediaPlay(void *data, calldata_t *calldata);
  26. static void OBSMediaPause(void *data, calldata_t *calldata);
  27. static void OBSMediaStarted(void *data, calldata_t *calldata);
  28. static void OBSMediaNext(void *data, calldata_t *calldata);
  29. static void OBSMediaPrevious(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 AbsoluteSliderClicked();
  38. void AbsoluteSliderReleased();
  39. void AbsoluteSliderHovered(int val);
  40. void AbsoluteSliderMoved(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. void UpdateSlideCounter();
  53. void UpdateLabels(int val);
  54. public slots:
  55. void PlayMedia();
  56. void PauseMedia();
  57. public:
  58. MediaControls(QWidget *parent = nullptr);
  59. ~MediaControls();
  60. OBSSource GetSource();
  61. void SetSource(OBSSource newSource);
  62. bool MediaPaused();
  63. };