obs-studio/UI/media-controls.hpp
Colin Edwards fddbbe259d UI: Source Toolbar
The source toolbar allows quick and easy access to properties and
filers, and shows common properties/features of a source type.  For
example, when you select a media source, VLC source, or the slideshow
source, you'll get media controls to control playback of the media.  If
you select a text source you can edit the font, color, or text if
applicable.  Or if you select a capture source, you can select the
display/window/etc to capture for that source.

If the source toolbar is not desired and is viewed as taking up valuable
space in the window, it can be disabled via the view menu.

Co-authored-by: Clayton Groeneveld <claytong1214@gmail.com>
Co-authored-by: Jim <obs.jim@gmail.com>
2020-08-17 07:18:18 -07:00

73 lines
1.6 KiB
C++

#pragma once
#include <QWidget>
#include <QTimer>
#include <vector>
#include <obs.hpp>
#include "qt-wrappers.hpp"
class Ui_MediaControls;
class MediaControls : public QWidget {
Q_OBJECT
private:
std::vector<OBSSignal> sigs;
OBSWeakSource weakSource = nullptr;
QTimer mediaTimer;
QTimer seekTimer;
int seek;
int lastSeek;
bool prevPaused = false;
bool countDownTimer = false;
bool isSlideshow = false;
QString FormatSeconds(int totalSeconds);
void StartMediaTimer();
void StopMediaTimer();
void RefreshControls();
void SetScene(OBSScene scene);
int64_t GetSliderTime(int val);
static void OBSMediaStopped(void *data, calldata_t *calldata);
static void OBSMediaPlay(void *data, calldata_t *calldata);
static void OBSMediaPause(void *data, calldata_t *calldata);
static void OBSMediaStarted(void *data, calldata_t *calldata);
Ui_MediaControls *ui;
private slots:
void on_playPauseButton_clicked();
void on_stopButton_clicked();
void on_nextButton_clicked();
void on_previousButton_clicked();
void on_durationLabel_clicked();
void MediaSliderClicked();
void MediaSliderReleased();
void MediaSliderHovered(int val);
void MediaSliderMoved(int val);
void SetSliderPosition();
void SetPlayingState();
void SetPausedState();
void SetRestartState();
void RestartMedia();
void StopMedia();
void PlaylistNext();
void PlaylistPrevious();
void SeekTimerCallback();
public slots:
void PlayMedia();
void PauseMedia();
public:
MediaControls(QWidget *parent = nullptr);
~MediaControls();
OBSSource GetSource();
void SetSource(OBSSource newSource);
bool MediaPaused();
};