media-controls.hpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. static void OBSMediaNext(void *data, calldata_t *calldata);
  31. static void OBSMediaPrevious(void *data, calldata_t *calldata);
  32. std::unique_ptr<Ui_MediaControls> ui;
  33. private slots:
  34. void on_playPauseButton_clicked();
  35. void on_stopButton_clicked();
  36. void on_nextButton_clicked();
  37. void on_previousButton_clicked();
  38. void on_durationLabel_clicked();
  39. void MediaSliderClicked();
  40. void MediaSliderReleased();
  41. void MediaSliderHovered(int val);
  42. void MediaSliderMoved(int val);
  43. void SetSliderPosition();
  44. void SetPlayingState();
  45. void SetPausedState();
  46. void SetRestartState();
  47. void RestartMedia();
  48. void StopMedia();
  49. void PlaylistNext();
  50. void PlaylistPrevious();
  51. void SeekTimerCallback();
  52. void MoveSliderFoward(int seconds = 5);
  53. void MoveSliderBackwards(int seconds = 5);
  54. void UpdateSlideCounter();
  55. public slots:
  56. void PlayMedia();
  57. void PauseMedia();
  58. public:
  59. MediaControls(QWidget *parent = nullptr);
  60. ~MediaControls();
  61. OBSSource GetSource();
  62. void SetSource(OBSSource newSource);
  63. bool MediaPaused();
  64. };