obs-aitum-multistream/multistream.hpp
2024-07-15 14:18:54 +02:00

54 lines
1.3 KiB
C++

#pragma once
#include "config-dialog.hpp"
#include <obs.h>
#include <obs-frontend-api.h>
#include <QFrame>
#include <QPushButton>
#include <QVBoxLayout>
class OBSBasicSettings;
class MultistreamDock : public QFrame {
Q_OBJECT
private:
OBSBasicSettings *configDialog = nullptr;
obs_data_t *current_config = nullptr;
QVBoxLayout *mainCanvasLayout = nullptr;
QVBoxLayout *verticalCanvasLayout = nullptr;
QPushButton *mainStreamButton = nullptr;
QPushButton *configButton = nullptr;
QString newer_version_available;
std::map<std::string, obs_output_t *> outputs;
void LoadSettingsFile();
void LoadSettings();
void LoadOutput(obs_data_t *data, bool vertical);
void SaveSettings();
bool StartOutput(obs_data_t *settings, QPushButton *streamButton);
void outputButtonStyle(QPushButton *button);
QIcon streamActiveIcon = QIcon(":/aitum/media/streaming.svg");
QIcon streamInactiveIcon = QIcon(":/aitum/media/stream.svg");
static void frontend_event(enum obs_frontend_event event, void *private_data);
static void stream_output_stop(void *data, calldata_t *calldata);
static void stream_output_start(void *data, calldata_t *calldata);
private slots:
void NewerVersionAvailable(QString version);
public:
MultistreamDock(QWidget *parent = nullptr);
~MultistreamDock();
void LoadVerticalOutputs();
};