Add option to check for value change

This commit is contained in:
WarmUpTill 2022-10-03 11:29:43 +02:00 committed by WarmUpTill
parent c22f40e333
commit 3e1e8d01b6
3 changed files with 23 additions and 0 deletions

View File

@ -350,6 +350,7 @@ AdvSceneSwitcher.condition.variable.type.empty="is empty"
AdvSceneSwitcher.condition.variable.type.number="is a number"
AdvSceneSwitcher.condition.variable.type.lessThan="is less than"
AdvSceneSwitcher.condition.variable.type.greaterThan="is greater than"
AdvSceneSwitcher.condition.variable.type.valueChanged="value changed"
AdvSceneSwitcher.condition.variable.regex="Use regular expressions"
AdvSceneSwitcher.condition.variable.entry="{{variables}}{{conditions}}{{strValue}}{{numValue}}"

View File

@ -24,6 +24,8 @@ const static std::map<MacroConditionVariable::Type, std::string>
"AdvSceneSwitcher.condition.variable.type.lessThan"},
{MacroConditionVariable::Type::GREATER_THAN,
"AdvSceneSwitcher.condition.variable.type.greaterThan"},
{MacroConditionVariable::Type::VALUE_CHANGED,
"AdvSceneSwitcher.condition.variable.type.valueChanged"},
};
static bool isNumber(const Variable &var)
@ -59,6 +61,15 @@ bool MacroConditionVariable::Compare(const Variable &var) const
}
}
bool MacroConditionVariable::ValueChanged(const Variable &var)
{
bool changed = var.Value() != _lastValue;
if (changed) {
_lastValue = var.Value();
}
return changed;
}
bool MacroConditionVariable::CheckCondition()
{
auto var = GetVariableByName(_variableName);
@ -77,6 +88,8 @@ bool MacroConditionVariable::CheckCondition()
return compareNumber(*var, _numValue, true);
case MacroConditionVariable::Type::GREATER_THAN:
return compareNumber(*var, _numValue, false);
case MacroConditionVariable::Type::VALUE_CHANGED:
return ValueChanged(*var);
}
return false;
@ -258,6 +271,11 @@ void MacroConditionVariableEdit::SetWidgetVisibility()
_strValue->hide();
_numValue->show();
break;
case MacroConditionVariable::Type::VALUE_CHANGED:
_regex->hide();
_strValue->hide();
_numValue->hide();
break;
}
adjustSize();

View File

@ -26,6 +26,7 @@ public:
IS_NUMBER,
LESS_THAN,
GREATER_THAN,
VALUE_CHANGED,
//...
};
@ -37,6 +38,9 @@ public:
private:
bool Compare(const Variable &) const;
bool ValueChanged(const Variable &);
std::string _lastValue = "";
static bool _registered;
static const std::string id;