diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index a977269e..2b14059c 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -172,6 +172,7 @@ AdvSceneSwitcher.condition.macro.count.type.below="Less than" AdvSceneSwitcher.condition.macro.count.type.above="More than" AdvSceneSwitcher.condition.macro.count.type.equal="Exactly" AdvSceneSwitcher.condition.macro.count.reset="Reset" +AdvSceneSwitcher.condition.macro.pausedWarning="Selected macro is currently paused!" AdvSceneSwitcher.condition.macro.state.entry="Conditions of {{macros}} are true" AdvSceneSwitcher.condition.macro.count.entry.line1="{{macros}} was executed {{conditions}} {{count}} times" AdvSceneSwitcher.condition.macro.count.entry.line2="Current count: {{currentCount}} {{resetCount}}" diff --git a/src/headers/macro-condition-macro.hpp b/src/headers/macro-condition-macro.hpp index f121f40d..da3859d5 100644 --- a/src/headers/macro-condition-macro.hpp +++ b/src/headers/macro-condition-macro.hpp @@ -67,6 +67,7 @@ private slots: void ConditionChanged(int cond); void ResetClicked(); void UpdateCount(); + void UpdatePaused(); signals: void HeaderInfoChanged(const QString &); @@ -76,16 +77,17 @@ protected: QComboBox *_counterConditions; QSpinBox *_count; QLabel *_currentCount; + QLabel *_pausedWarning; QPushButton *_resetCount; QHBoxLayout *_settingsLine1; QHBoxLayout *_settingsLine2; - std::unique_ptr _timer; + QTimer _countTimer; + QTimer _pausedTimer; std::shared_ptr _entryData; private: void ClearLayouts(); void SetupStateWidgets(); void SetupCountWidgets(); - void ResetTimer(); bool _loading = true; }; diff --git a/src/macro-condition-macro.cpp b/src/macro-condition-macro.cpp index db1835f6..cd86be38 100644 --- a/src/macro-condition-macro.cpp +++ b/src/macro-condition-macro.cpp @@ -125,6 +125,8 @@ MacroConditionMacroEdit::MacroConditionMacroEdit( _currentCount = new QLabel(parent); _resetCount = new QPushButton(obs_module_text( "AdvSceneSwitcher.condition.macro.count.reset")); + _pausedWarning = new QLabel(obs_module_text( + "AdvSceneSwitcher.condition.macro.pausedWarning")); _count->setMaximum(10000000); populateTypeSelection(_types); @@ -156,9 +158,18 @@ MacroConditionMacroEdit::MacroConditionMacroEdit( mainLayout->addLayout(typesLayout); mainLayout->addLayout(_settingsLine1); mainLayout->addLayout(_settingsLine2); + mainLayout->addWidget(_pausedWarning); setLayout(mainLayout); _entryData = entryData; + + connect(&_countTimer, SIGNAL(timeout()), this, SLOT(UpdateCount())); + _countTimer.start(1000); + + _pausedWarning->setVisible(false); + connect(&_pausedTimer, SIGNAL(timeout()), this, SLOT(UpdatePaused())); + _pausedTimer.start(1000); + UpdateEntryData(); _loading = false; } @@ -237,7 +248,6 @@ void MacroConditionMacroEdit::UpdateEntryData() _counterConditions->setCurrentIndex( static_cast(_entryData->_counterCondition)); _count->setValue(_entryData->_count); - ResetTimer(); } void MacroConditionMacroEdit::MacroChanged(const QString &text) @@ -248,7 +258,6 @@ void MacroConditionMacroEdit::MacroChanged(const QString &text) std::lock_guard lock(switcher->m); _entryData->_macro.UpdateRef(text); - ResetTimer(); emit HeaderInfoChanged( QString::fromStdString(_entryData->GetShortDesc())); } @@ -303,7 +312,6 @@ void MacroConditionMacroEdit::ResetClicked() } _entryData->_macro->ResetCount(); - ResetTimer(); } void MacroConditionMacroEdit::UpdateCount() @@ -316,9 +324,9 @@ void MacroConditionMacroEdit::UpdateCount() } } -void MacroConditionMacroEdit::ResetTimer() +void MacroConditionMacroEdit::UpdatePaused() { - _timer.reset(new QTimer(this)); - connect(_timer.get(), SIGNAL(timeout()), this, SLOT(UpdateCount())); - _timer->start(1000); + _pausedWarning->setVisible(_entryData && _entryData->_macro.get() && + _entryData->_macro->Paused()); + adjustSize(); }