diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 41fe1f54..bc60988a 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -84,7 +84,7 @@ AdvSceneSwitcher.variableTab.lastUsed.text.never="Never" AdvSceneSwitcher.variableTab.lastChanged.header="Last changed" AdvSceneSwitcher.variableTab.lastChanged.text="%1 seconds ago" AdvSceneSwitcher.variableTab.lastChanged.text.none="No change since launch" -AdvSceneSwitcher.variableTab.lastChanged.tooltip="Previous value: %1" +AdvSceneSwitcher.variableTab.lastChanged.tooltip="Times changed: %1\n\nPrevious value: %2" ; Macro Tab AdvSceneSwitcher.macroTab.title="Macro" diff --git a/lib/variables/variable-tab.cpp b/lib/variables/variable-tab.cpp index b10e553c..77cf8bce 100644 --- a/lib/variables/variable-tab.cpp +++ b/lib/variables/variable-tab.cpp @@ -85,7 +85,8 @@ static QString formatLastChangedTooltip(Variable *variable) QString tooltip = obs_module_text( "AdvSceneSwitcher.variableTab.lastChanged.tooltip"); - return tooltip.arg(QString::fromStdString(variable->GetPreviousValue())); + return tooltip.arg(QString::number(variable->GetValueChangeCount())) + .arg(QString::fromStdString(variable->GetPreviousValue())); } static void addVariableRow(QTableWidget *table, Variable *variable) diff --git a/lib/variables/variable.cpp b/lib/variables/variable.cpp index 901232b0..db9dbb30 100644 --- a/lib/variables/variable.cpp +++ b/lib/variables/variable.cpp @@ -113,10 +113,11 @@ void Variable::UpdateLastUsed() const _lastUsed = std::chrono::high_resolution_clock::now(); } -void Variable::UpdateLastChanged() const +void Variable::UpdateLastChanged() { if (_previousValue != _value) { _lastChanged = std::chrono::high_resolution_clock::now(); + ++_valueChangeCount; } } diff --git a/lib/variables/variable.hpp b/lib/variables/variable.hpp index 1a6fb0b5..fa673781 100644 --- a/lib/variables/variable.hpp +++ b/lib/variables/variable.hpp @@ -38,16 +38,18 @@ public: void SetValue(const std::string &value); void SetValue(double value); SaveAction GetSaveAction() const { return _saveAction; } + int GetValueChangeCount() const { return _valueChangeCount; } std::optional GetSecondsSinceLastUse() const; std::optional GetSecondsSinceLastChange() const; void UpdateLastUsed() const; - void UpdateLastChanged() const; + void UpdateLastChanged(); private: SaveAction _saveAction = SaveAction::DONT_SAVE; std::string _value = ""; std::string _previousValue = ""; std::string _defaultValue = ""; + int _valueChangeCount = 0; mutable std::chrono::high_resolution_clock::time_point _lastUsed; mutable std::chrono::high_resolution_clock::time_point _lastChanged; diff --git a/tests/test-variable.cpp b/tests/test-variable.cpp index 14d208fe..265e54e9 100644 --- a/tests/test-variable.cpp +++ b/tests/test-variable.cpp @@ -9,15 +9,20 @@ TEST_CASE("Variable", "[variable]") REQUIRE_FALSE(variable.GetSecondsSinceLastUse()); REQUIRE(variable.Value() == ""); + REQUIRE(variable.GetPreviousValue() == ""); REQUIRE(variable.GetDefaultValue() == ""); REQUIRE(variable.GetSaveAction() == advss::Variable::SaveAction::DONT_SAVE); + REQUIRE(variable.GetValueChangeCount() == 0); variable.SetValue("testing"); REQUIRE(variable.Value() == "testing"); + REQUIRE(variable.GetPreviousValue() == ""); + REQUIRE(variable.GetValueChangeCount() == 1); variable.SetValue(123); REQUIRE(variable.Value() == "123"); + REQUIRE(variable.GetPreviousValue() == "testing"); variable.SetValue(123.0); REQUIRE(variable.Value() == "123");