mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Keep track of last use of variable
This commit is contained in:
parent
cb58eb9f04
commit
a7da22b7e9
|
|
@ -73,7 +73,9 @@ std::string SubstitueVariables(std::string str)
|
|||
for (const auto &v : GetVariables()) {
|
||||
const auto &variable = std::dynamic_pointer_cast<Variable>(v);
|
||||
const std::string pattern = "${" + variable->Name() + "}";
|
||||
ReplaceAll(str, pattern, variable->Value());
|
||||
if (ReplaceAll(str, pattern, variable->Value(false))) {
|
||||
variable->UpdateLastUsed();
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,28 +51,53 @@ void Variable::Save(obs_data_t *obj) const
|
|||
obs_data_set_string(obj, "defaultValue", _defaultValue.c_str());
|
||||
}
|
||||
|
||||
std::string Variable::Value(bool updateLastUsed) const
|
||||
{
|
||||
if (updateLastUsed) {
|
||||
UpdateLastUsed();
|
||||
}
|
||||
return _value;
|
||||
}
|
||||
|
||||
std::optional<double> Variable::DoubleValue() const
|
||||
{
|
||||
return GetDouble(_value);
|
||||
return GetDouble(Value());
|
||||
}
|
||||
|
||||
std::optional<int> Variable::IntValue() const
|
||||
{
|
||||
return GetInt(_value);
|
||||
return GetInt(Value());
|
||||
}
|
||||
|
||||
void Variable::SetValue(const std::string &val)
|
||||
{
|
||||
_value = val;
|
||||
_lastUsed = std::chrono::high_resolution_clock::now();
|
||||
lastVariableChange = std::chrono::high_resolution_clock::now();
|
||||
}
|
||||
|
||||
void Variable::SetValue(double value)
|
||||
{
|
||||
_value = std::to_string(value);
|
||||
_lastUsed = std::chrono::high_resolution_clock::now();
|
||||
lastVariableChange = std::chrono::high_resolution_clock::now();
|
||||
}
|
||||
|
||||
std::optional<uint64_t> Variable::SecondsSinceLastUse() const
|
||||
{
|
||||
if (_lastUsed.time_since_epoch().count() == 0) {
|
||||
return {};
|
||||
}
|
||||
const auto now = std::chrono::high_resolution_clock::now();
|
||||
return std::chrono::duration_cast<std::chrono::seconds>(now - _lastUsed)
|
||||
.count();
|
||||
}
|
||||
|
||||
void Variable::UpdateLastUsed() const
|
||||
{
|
||||
_lastUsed = std::chrono::high_resolution_clock::now();
|
||||
}
|
||||
|
||||
std::deque<std::shared_ptr<Item>> &GetVariables()
|
||||
{
|
||||
return variables;
|
||||
|
|
|
|||
|
|
@ -19,11 +19,12 @@ public:
|
|||
~Variable();
|
||||
void Load(obs_data_t *obj);
|
||||
void Save(obs_data_t *obj) const;
|
||||
EXPORT std::string Value() const { return _value; }
|
||||
EXPORT std::string Value(bool updateLastUsed = true) const;
|
||||
EXPORT std::optional<double> DoubleValue() const;
|
||||
EXPORT std::optional<int> IntValue() const;
|
||||
void SetValue(const std::string &val);
|
||||
void SetValue(double);
|
||||
std::string GetDefaultValue() const { return _defaultValue; }
|
||||
static std::shared_ptr<Item> Create()
|
||||
{
|
||||
return std::make_shared<Variable>();
|
||||
|
|
@ -34,11 +35,15 @@ public:
|
|||
SAVE,
|
||||
SET_DEFAULT,
|
||||
};
|
||||
SaveAction GetSaveAction() const { return _saveAction; }
|
||||
std::optional<uint64_t> SecondsSinceLastUse() const;
|
||||
void UpdateLastUsed() const;
|
||||
|
||||
private:
|
||||
SaveAction _saveAction = SaveAction::DONT_SAVE;
|
||||
std::string _value = "";
|
||||
std::string _defaultValue = "";
|
||||
mutable std::chrono::high_resolution_clock::time_point _lastUsed;
|
||||
|
||||
friend VariableSelection;
|
||||
friend VariableSettingsDialog;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user