media-controls.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 AbsoluteSliderClicked();
  40. void AbsoluteSliderReleased();
  41. void AbsoluteSliderHovered(int val);
  42. void AbsoluteSliderMoved(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. void UpdateLabels(int val);
  56. public slots:
  57. void PlayMedia();
  58. void PauseMedia();
  59. public:
  60. MediaControls(QWidget *parent = nullptr);
  61. ~MediaControls();
  62. OBSSource GetSource();
  63. void SetSource(OBSSource newSource);
  64. bool MediaPaused();
  65. };