SceneSwitcher/src/utils/transition-selection.hpp
WarmUpTill 2c5caabab0 Add advss namespace
Fixes name conflict with "Duration" class and typedef of the same name
on MacOS
2023-04-17 11:33:24 -07:00

51 lines
1.1 KiB
C++

#pragma once
#include "utility.hpp"
#include <QComboBox>
namespace advss {
class TransitionSelection {
public:
void Save(obs_data_t *obj, const char *name = "transition",
const char *typeName = "transitionType") const;
void Load(obs_data_t *obj, const char *name = "transition",
const char *typeName = "transitionType");
enum class Type {
TRANSITION,
CURRENT,
ANY,
};
Type GetType() const { return _type; }
OBSWeakSource GetTransition() const;
std::string ToString() const;
private:
OBSWeakSource _transition;
Type _type = Type::TRANSITION;
friend class TransitionSelectionWidget;
};
class TransitionSelectionWidget : public QComboBox {
Q_OBJECT
public:
TransitionSelectionWidget(QWidget *parent, bool current = true,
bool any = false);
void SetTransition(TransitionSelection &);
void Repopulate(bool current, bool any);
signals:
void TransitionChanged(const TransitionSelection &);
private slots:
void SelectionChanged(const QString &name);
private:
bool IsCurrentTransitionSelected(const QString &name);
bool IsAnyTransitionSelected(const QString &name);
};
} // namespace advss