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>
73 lines
1.6 KiB
C++
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();
|
|
};
|