Add macro condition "count"

This commit is contained in:
WarmUpTill
2021-05-23 21:13:50 +02:00
committed by WarmUpTill
parent 77642c54d8
commit 4a84bede37
4 changed files with 321 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
#pragma once
#include "macro.hpp"
#include <QWidget>
#include <QSpinBox>
#include <QLabel>
#include <QTimer>
enum class CounterCondition {
BELOW,
ABOVE,
EQUAL,
};
class MacroConditionCounter : public MacroCondition {
public:
bool CheckCondition();
bool Save(obs_data_t *obj);
bool Load(obs_data_t *obj);
std::string GetId() { return id; };
static std::shared_ptr<MacroCondition> Create()
{
return std::make_shared<MacroConditionCounter>();
}
Macro *_macro = nullptr;
CounterCondition _condition = CounterCondition::BELOW;
int _count = 0;
private:
static bool _registered;
static const std::string id;
};
class MacroConditionCounterEdit : public QWidget {
Q_OBJECT
public:
MacroConditionCounterEdit(
QWidget *parent,
std::shared_ptr<MacroConditionCounter> cond = nullptr);
void UpdateEntryData();
static QWidget *Create(QWidget *parent,
std::shared_ptr<MacroCondition> cond)
{
return new MacroConditionCounterEdit(
parent,
std::dynamic_pointer_cast<MacroConditionCounter>(cond));
}
private slots:
void MacroChanged(const QString &text);
void CountChanged(int value);
void ConditionChanged(int cond);
void MacroAdd(const QString &name);
void MacroRemove(const QString &name);
void MacroRename(const QString &oldName, const QString &newName);
void ResetClicked();
void UpdateCount();
protected:
QComboBox *_macros;
QComboBox *_conditions;
QSpinBox *_count;
QLabel *_currentCount;
QPushButton *_resetCount;
std::unique_ptr<QTimer> _timer;
std::shared_ptr<MacroConditionCounter> _entryData;
private:
void ResetTimer();
bool _loading = true;
};