diff --git a/lib/legacy/scene-group.cpp b/lib/legacy/scene-group.cpp index c2c0429a..018b7a79 100644 --- a/lib/legacy/scene-group.cpp +++ b/lib/legacy/scene-group.cpp @@ -12,7 +12,7 @@ namespace advss { -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; SceneGroupEditWidget *typeEdit = nullptr; std::deque &GetSceneGroups() @@ -170,7 +170,8 @@ void AdvSceneSwitcher::on_sceneGroupAdd_clicked() item->setData(Qt::UserRole, text); ui->sceneGroups->setCurrentItem(item); - ui->sceneGroupAdd->disconnect(addPulse); + addPulse->deleteLater(); + addPulse = nullptr; ui->sceneGroupHelp->setVisible(false); emit SceneGroupAdded(QString::fromStdString(name)); @@ -512,8 +513,8 @@ void AdvSceneSwitcher::SetupSceneGroupTab() if (switcher->sceneGroups.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->sceneGroupAdd, - QColor(Qt::green)); + addPulse = HighlightWidget(ui->sceneGroupAdd, + QColor(Qt::green)); } ui->sceneGroupHelp->setVisible(true); } else { diff --git a/lib/legacy/scene-trigger.cpp b/lib/legacy/scene-trigger.cpp index b27f0085..ff45c021 100644 --- a/lib/legacy/scene-trigger.cpp +++ b/lib/legacy/scene-trigger.cpp @@ -12,7 +12,7 @@ namespace advss { bool SceneTrigger::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_triggerAdd_clicked() { @@ -22,7 +22,7 @@ void AdvSceneSwitcher::on_triggerAdd_clicked() listAddClicked(ui->sceneTriggers, new SceneTriggerWidget(this, &switcher->sceneTriggers.back()), - ui->triggerAdd, &addPulse); + ui->triggerAdd, addPulse); ui->triggerHelp->setVisible(false); } @@ -370,8 +370,8 @@ void AdvSceneSwitcher::SetupTriggerTab() if (switcher->sceneTriggers.size() == 0) { if (!switcher->disableHints) { - addPulse = - PulseWidget(ui->triggerAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->triggerAdd, + QColor(Qt::green)); } ui->triggerHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-audio.cpp b/lib/legacy/switch-audio.cpp index 05d028e6..489daf0e 100644 --- a/lib/legacy/switch-audio.cpp +++ b/lib/legacy/switch-audio.cpp @@ -12,7 +12,7 @@ namespace advss { bool AudioSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_audioAdd_clicked() { @@ -22,7 +22,7 @@ void AdvSceneSwitcher::on_audioAdd_clicked() AudioSwitchWidget *sw = new AudioSwitchWidget(this, &switcher->audioSwitches.back()); - listAddClicked(ui->audioSwitches, sw, ui->audioAdd, &addPulse); + listAddClicked(ui->audioSwitches, sw, ui->audioAdd, addPulse); ui->audioHelp->setVisible(false); } @@ -232,7 +232,8 @@ void AdvSceneSwitcher::SetupAudioTab() if (switcher->audioSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->audioAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->audioAdd, + QColor(Qt::green)); } ui->audioHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-executable.cpp b/lib/legacy/switch-executable.cpp index 48d86197..59ff1671 100644 --- a/lib/legacy/switch-executable.cpp +++ b/lib/legacy/switch-executable.cpp @@ -9,7 +9,7 @@ namespace advss { bool ExecutableSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_executableAdd_clicked() { @@ -19,7 +19,7 @@ void AdvSceneSwitcher::on_executableAdd_clicked() listAddClicked(ui->executables, new ExecutableSwitchWidget( this, &switcher->executableSwitches.back()), - ui->executableAdd, &addPulse); + ui->executableAdd, addPulse); ui->exeHelp->setVisible(false); } @@ -177,8 +177,8 @@ void AdvSceneSwitcher::SetupExecutableTab() if (switcher->executableSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->executableAdd, - QColor(Qt::green)); + addPulse = HighlightWidget(ui->executableAdd, + QColor(Qt::green)); } ui->exeHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-file.cpp b/lib/legacy/switch-file.cpp index 7cede730..617a851f 100644 --- a/lib/legacy/switch-file.cpp +++ b/lib/legacy/switch-file.cpp @@ -18,7 +18,7 @@ namespace advss { bool FileSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; static std::hash strHash; void AdvSceneSwitcher::on_browseButton_clicked() @@ -291,7 +291,7 @@ void AdvSceneSwitcher::on_fileAdd_clicked() listAddClicked(ui->fileSwitches, new FileSwitchWidget(this, &switcher->fileSwitches.back()), - ui->fileAdd, &addPulse); + ui->fileAdd, addPulse); ui->fileHelp->setVisible(false); } @@ -441,7 +441,8 @@ void AdvSceneSwitcher::SetupFileTab() if (switcher->fileSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->fileAdd, QColor(Qt::green)); + addPulse = + HighlightWidget(ui->fileAdd, QColor(Qt::green)); } ui->fileHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-media.cpp b/lib/legacy/switch-media.cpp index 973ef77b..29e61f80 100644 --- a/lib/legacy/switch-media.cpp +++ b/lib/legacy/switch-media.cpp @@ -9,7 +9,7 @@ namespace advss { bool MediaSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; constexpr auto media_played_to_end_idx = 8; constexpr auto media_any_idx = 9; @@ -22,7 +22,7 @@ void AdvSceneSwitcher::on_mediaAdd_clicked() listAddClicked(ui->mediaSwitches, new MediaSwitchWidget(this, &switcher->mediaSwitches.back()), - ui->mediaAdd, &addPulse); + ui->mediaAdd, addPulse); ui->mediaHelp->setVisible(false); } @@ -252,7 +252,8 @@ void AdvSceneSwitcher::SetupMediaTab() if (switcher->mediaSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->mediaAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->mediaAdd, + QColor(Qt::green)); } ui->mediaHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-pause.cpp b/lib/legacy/switch-pause.cpp index d37d87b8..324fba9d 100644 --- a/lib/legacy/switch-pause.cpp +++ b/lib/legacy/switch-pause.cpp @@ -10,7 +10,7 @@ namespace advss { -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_pauseAdd_clicked() { @@ -20,7 +20,7 @@ void AdvSceneSwitcher::on_pauseAdd_clicked() listAddClicked(ui->pauseEntries, new PauseEntryWidget(this, &switcher->pauseEntries.back()), - ui->pauseAdd, &addPulse); + ui->pauseAdd, addPulse); ui->pauseHelp->setVisible(false); } @@ -264,7 +264,8 @@ void AdvSceneSwitcher::SetupPauseTab() if (switcher->pauseEntries.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->pauseAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->pauseAdd, + QColor(Qt::green)); } ui->pauseHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-random.cpp b/lib/legacy/switch-random.cpp index 94bc1349..1a3d35ed 100644 --- a/lib/legacy/switch-random.cpp +++ b/lib/legacy/switch-random.cpp @@ -9,7 +9,7 @@ namespace advss { bool RandomSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_randomAdd_clicked() { @@ -19,7 +19,7 @@ void AdvSceneSwitcher::on_randomAdd_clicked() listAddClicked(ui->randomSwitches, new RandomSwitchWidget(this, &switcher->randomSwitches.back()), - ui->randomAdd, &addPulse); + ui->randomAdd, addPulse); ui->randomHelp->setVisible(false); } @@ -131,8 +131,8 @@ void AdvSceneSwitcher::SetupRandomTab() if (switcher->randomSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = - PulseWidget(ui->randomAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->randomAdd, + QColor(Qt::green)); } ui->randomHelp->setVisible(true); } else { @@ -147,8 +147,8 @@ void AdvSceneSwitcher::SetupRandomTab() }"); if (switcher->switchIfNotMatching != NoMatchBehavior::RANDOM_SWITCH) { if (!switcher->disableHints) { - PulseWidget(ui->randomDisabledWarning, QColor(Qt::red), - QColor(0, 0, 0, 0)); + HighlightWidget(ui->randomDisabledWarning, + QColor(Qt::red), QColor(0, 0, 0, 0)); } } else { ui->randomDisabledWarning->setVisible(false); diff --git a/lib/legacy/switch-screen-region.cpp b/lib/legacy/switch-screen-region.cpp index 5eee0824..24c6cfaf 100644 --- a/lib/legacy/switch-screen-region.cpp +++ b/lib/legacy/switch-screen-region.cpp @@ -11,7 +11,7 @@ namespace advss { bool ScreenRegionSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::ClearFrames(QListWidget *list) { @@ -79,7 +79,7 @@ void AdvSceneSwitcher::on_screenRegionAdd_clicked() listAddClicked(ui->screenRegionSwitches, new ScreenRegionWidget( this, &switcher->screenRegionSwitches.back()), - ui->screenRegionAdd, &addPulse); + ui->screenRegionAdd, addPulse); ui->regionHelp->setVisible(false); } @@ -248,8 +248,8 @@ void AdvSceneSwitcher::SetupRegionTab() if (switcher->screenRegionSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->screenRegionAdd, - QColor(Qt::green)); + addPulse = HighlightWidget(ui->screenRegionAdd, + QColor(Qt::green)); } ui->regionHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-sequence.cpp b/lib/legacy/switch-sequence.cpp index 5b407c21..62ad2964 100644 --- a/lib/legacy/switch-sequence.cpp +++ b/lib/legacy/switch-sequence.cpp @@ -16,7 +16,7 @@ namespace advss { constexpr auto max_extend_text_size = 150; bool SceneSequenceSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_sceneSequenceAdd_clicked() { @@ -26,7 +26,7 @@ void AdvSceneSwitcher::on_sceneSequenceAdd_clicked() listAddClicked(ui->sceneSequenceSwitches, new SequenceWidget( this, &switcher->sceneSequenceSwitches.back()), - ui->sceneSequenceAdd, &addPulse); + ui->sceneSequenceAdd, addPulse); ui->sequenceHelp->setVisible(false); } @@ -299,8 +299,8 @@ void AdvSceneSwitcher::SetupSequenceTab() if (switcher->sceneSequenceSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->sceneSequenceAdd, - QColor(Qt::green)); + addPulse = HighlightWidget(ui->sceneSequenceAdd, + QColor(Qt::green)); } ui->sequenceHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-time.cpp b/lib/legacy/switch-time.cpp index f6964a14..2a3154e7 100644 --- a/lib/legacy/switch-time.cpp +++ b/lib/legacy/switch-time.cpp @@ -7,7 +7,7 @@ namespace advss { bool TimeSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_timeAdd_clicked() { @@ -17,7 +17,7 @@ void AdvSceneSwitcher::on_timeAdd_clicked() listAddClicked(ui->timeSwitches, new TimeSwitchWidget(this, &switcher->timeSwitches.back()), - ui->timeAdd, &addPulse); + ui->timeAdd, addPulse); ui->timeHelp->setVisible(false); } @@ -197,7 +197,8 @@ void AdvSceneSwitcher::SetupTimeTab() if (switcher->timeSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->timeAdd, QColor(Qt::green)); + addPulse = + HighlightWidget(ui->timeAdd, QColor(Qt::green)); } ui->timeHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-video.cpp b/lib/legacy/switch-video.cpp index 451f9c80..8064390c 100644 --- a/lib/legacy/switch-video.cpp +++ b/lib/legacy/switch-video.cpp @@ -14,7 +14,7 @@ namespace advss { bool VideoSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_videoAdd_clicked() { @@ -24,7 +24,7 @@ void AdvSceneSwitcher::on_videoAdd_clicked() VideoSwitchWidget *sw = new VideoSwitchWidget(this, &switcher->videoSwitches.back()); - listAddClicked(ui->videoSwitches, sw, ui->videoAdd, &addPulse); + listAddClicked(ui->videoSwitches, sw, ui->videoAdd, addPulse); ui->videoHelp->setVisible(false); } @@ -202,7 +202,8 @@ void AdvSceneSwitcher::SetupVideoTab() if (switcher->videoSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = PulseWidget(ui->videoAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->videoAdd, + QColor(Qt::green)); } ui->videoHelp->setVisible(true); } else { diff --git a/lib/legacy/switch-window.cpp b/lib/legacy/switch-window.cpp index 190b2754..87199409 100644 --- a/lib/legacy/switch-window.cpp +++ b/lib/legacy/switch-window.cpp @@ -11,7 +11,7 @@ namespace advss { bool WindowSwitch::pause = false; -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; void AdvSceneSwitcher::on_windowAdd_clicked() { @@ -21,7 +21,7 @@ void AdvSceneSwitcher::on_windowAdd_clicked() listAddClicked(ui->windowSwitches, new WindowSwitchWidget(this, &switcher->windowSwitches.back()), - ui->windowAdd, &addPulse); + ui->windowAdd, addPulse); ui->windowHelp->setVisible(false); } @@ -335,8 +335,8 @@ void AdvSceneSwitcher::SetupTitleTab() if (switcher->windowSwitches.size() == 0) { if (!switcher->disableHints) { - addPulse = - PulseWidget(ui->windowAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->windowAdd, + QColor(Qt::green)); } ui->windowHelp->setVisible(true); } else { diff --git a/lib/macro/macro-dock.cpp b/lib/macro/macro-dock.cpp index cd5b4aa2..61395338 100644 --- a/lib/macro/macro-dock.cpp +++ b/lib/macro/macro-dock.cpp @@ -167,7 +167,7 @@ void MacroDock::Highlight() } if (_lastHighlightCheckTime.time_since_epoch().count() != 0 && macro->WasExecutedSince(_lastHighlightCheckTime)) { - PulseWidget(this, Qt::green, QColor(0, 0, 0, 0), true); + HighlightWidget(this, Qt::green, QColor(0, 0, 0, 0), true); } _lastHighlightCheckTime = std::chrono::high_resolution_clock::now(); } diff --git a/lib/macro/macro-segment-list.cpp b/lib/macro/macro-segment-list.cpp index 3de34df5..bc95b43d 100644 --- a/lib/macro/macro-segment-list.cpp +++ b/lib/macro/macro-segment-list.cpp @@ -130,7 +130,7 @@ void MacroSegmentList::Highlight(int idx, QColor color) if (!widget) { return; } - PulseWidget(widget, color, QColor(0, 0, 0, 0), true); + HighlightWidget(widget, color, QColor(0, 0, 0, 0), true); } void MacroSegmentList::SetCollapsed(bool collapse) diff --git a/lib/macro/macro-segment-selection.cpp b/lib/macro/macro-segment-selection.cpp index 14340644..cdd37a2b 100644 --- a/lib/macro/macro-segment-selection.cpp +++ b/lib/macro/macro-segment-selection.cpp @@ -175,7 +175,7 @@ void MacroSegmentSelection::MarkSelectedSegment() index - 1, QColor(Qt::lightGray)); } - PulseWidget(this, QColor(Qt::lightGray), QColor(0, 0, 0, 0), true); + HighlightWidget(this, QColor(Qt::lightGray), QColor(0, 0, 0, 0), true); } } // namespace advss diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index 0cb1fb9a..4feee462 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -23,7 +23,7 @@ namespace advss { -static QMetaObject::Connection addPulse; +static QObject *addPulse = nullptr; static QTimer onChangeHighlightTimer; static bool macroNameExists(const std::string &name) @@ -99,7 +99,8 @@ void AdvSceneSwitcher::on_macroAdd_clicked() } ui->macros->Add(newMacro); - ui->macroAdd->disconnect(addPulse); + addPulse->deleteLater(); + addPulse = nullptr; emit MacroAdded(QString::fromStdString(name)); } @@ -753,8 +754,8 @@ void AdvSceneSwitcher::HighlightOnChange() } if (macro->OnChangePreventedActionsRecently()) { - PulseWidget(ui->runMacroOnChange, Qt::yellow, Qt::transparent, - true); + HighlightWidget(ui->runMacroOnChange, Qt::yellow, + Qt::transparent, true); } } @@ -832,7 +833,7 @@ void AdvSceneSwitcher::SetupMacroTab() ui->macros->installEventFilter(this); if (GetMacros().size() == 0 && !switcher->disableHints) { - addPulse = PulseWidget(ui->macroAdd, QColor(Qt::green)); + addPulse = HighlightWidget(ui->macroAdd, QColor(Qt::green)); } ui->macros->Reset(GetMacros(), GetGlobalMacroProperties()._highlightExecuted); @@ -1106,7 +1107,8 @@ void AdvSceneSwitcher::CopyMacro() Macro::PrepareMoveToGroup(macro->Parent(), newMacro); ui->macros->Add(newMacro, macro); - ui->macroAdd->disconnect(addPulse); + addPulse->deleteLater(); + addPulse = nullptr; emit MacroAdded(QString::fromStdString(name)); } diff --git a/lib/macro/macro-tree.cpp b/lib/macro/macro-tree.cpp index 5dc84ff3..cb5166af 100644 --- a/lib/macro/macro-tree.cpp +++ b/lib/macro/macro-tree.cpp @@ -108,7 +108,7 @@ void MacroTreeItem::HighlightIfExecuted() if (_lastHighlightCheckTime.time_since_epoch().count() != 0 && _macro->WasExecutedSince(_lastHighlightCheckTime)) { - PulseWidget(this, Qt::green, QColor(0, 0, 0, 0), true); + HighlightWidget(this, Qt::green, QColor(0, 0, 0, 0), true); } _lastHighlightCheckTime = std::chrono::high_resolution_clock::now(); } diff --git a/lib/utils/resource-table.cpp b/lib/utils/resource-table.cpp index e531c877..fd976204 100644 --- a/lib/utils/resource-table.cpp +++ b/lib/utils/resource-table.cpp @@ -81,9 +81,13 @@ void ResourceTable::SetHelpVisible(bool visible) const void ResourceTable::HighlightAddButton(bool enable) { - _add->disconnect(_highlightConnection); + if (_highlightConnection) { + _highlightConnection->deleteLater(); + _highlightConnection = nullptr; + } + if (enable && HighlightUIElementsEnabled()) { - _highlightConnection = PulseWidget(_add, QColor(Qt::green)); + _highlightConnection = HighlightWidget(_add, QColor(Qt::green)); } } diff --git a/lib/utils/resource-table.hpp b/lib/utils/resource-table.hpp index c081a7a2..23c1421d 100644 --- a/lib/utils/resource-table.hpp +++ b/lib/utils/resource-table.hpp @@ -37,7 +37,7 @@ private: QPushButton *_remove; QLabel *_help; - QMetaObject::Connection _highlightConnection; + QObject *_highlightConnection = nullptr; }; EXPORT void AddItemTableRow(QTableWidget *table, const QStringList &cells); diff --git a/lib/utils/status-control.cpp b/lib/utils/status-control.cpp index e0999360..9282a6fe 100644 --- a/lib/utils/status-control.cpp +++ b/lib/utils/status-control.cpp @@ -132,9 +132,8 @@ void StatusControl::SetStarted() _button->setText( obs_module_text("AdvSceneSwitcher.generalTab.status.stop")); _status->setText(obs_module_text("AdvSceneSwitcher.status.active")); - _status->disconnect(_pulse); + _pulse->deleteLater(); SetStatusStyleSheet(false); - _setToStopped = false; } @@ -144,9 +143,8 @@ void StatusControl::SetStopped() obs_module_text("AdvSceneSwitcher.generalTab.status.start")); _status->setText(obs_module_text("AdvSceneSwitcher.status.inactive")); if (HighlightUIElementsEnabled()) { - SetStatusStyleSheet(true); - _pulse = PulseWidget(_status, QColor(Qt::red), - QColor(0, 0, 0, 0)); + _pulse = HighlightWidget(_status, QColor(Qt::red), + QColor(0, 0, 0, 0)); } _setToStopped = true; } diff --git a/lib/utils/status-control.hpp b/lib/utils/status-control.hpp index 8b5dd5bf..586b827e 100644 --- a/lib/utils/status-control.hpp +++ b/lib/utils/status-control.hpp @@ -33,7 +33,7 @@ private: QLabel *_status; QLabel *_statusPrefix; QTimer _timer; - QMetaObject::Connection _pulse; + QObject *_pulse = nullptr; bool _setToStopped = true; }; diff --git a/lib/utils/ui-helpers.cpp b/lib/utils/ui-helpers.cpp index ab2b2469..ca0bb7ba 100644 --- a/lib/utils/ui-helpers.cpp +++ b/lib/utils/ui-helpers.cpp @@ -13,8 +13,8 @@ namespace advss { -QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, - QColor endColor, bool once) +QObject *HighlightWidget(QWidget *widget, QColor startColor, QColor endColor, + bool once) { QGraphicsColorizeEffect *effect = new QGraphicsColorizeEffect(widget); widget->setGraphicsEffect(effect); @@ -24,33 +24,22 @@ QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, animation->setEndValue(endColor); animation->setDuration(1000); - QMetaObject::Connection con; + // Clean up the effect when the animation is deleted + QWidget::connect(animation, &QPropertyAnimation::destroyed, [widget]() { + if (widget) { + widget->setGraphicsEffect(nullptr); + } + }); + if (once) { - auto widgetPtr = widget; - con = QWidget::connect( - animation, &QPropertyAnimation::finished, - [widgetPtr]() { - if (widgetPtr) { - widgetPtr->setGraphicsEffect(nullptr); - } - }); animation->start(QPropertyAnimation::DeleteWhenStopped); - } else { - auto widgetPtr = widget; - con = QWidget::connect( - animation, &QPropertyAnimation::finished, - [animation, widgetPtr]() { - QTimer *timer = new QTimer(widgetPtr); - QWidget::connect(timer, &QTimer::timeout, - [animation] { - animation->start(); - }); - timer->setSingleShot(true); - timer->start(1000); - }); - animation->start(); + return animation; } - return con; + + QWidget::connect(animation, &QPropertyAnimation::finished, + [animation]() { animation->start(); }); + animation->start(); + return animation; } static int getHorizontalScrollBarHeight(QListWidget *list) diff --git a/lib/utils/ui-helpers.hpp b/lib/utils/ui-helpers.hpp index bfd0607e..fed73e1a 100644 --- a/lib/utils/ui-helpers.hpp +++ b/lib/utils/ui-helpers.hpp @@ -12,9 +12,11 @@ namespace advss { -EXPORT QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, - QColor endColor = QColor(0, 0, 0, 0), - bool once = false); +// Returns QObject* to QPropertyAnimation object +// Delete it to stop the animation +EXPORT QObject *HighlightWidget(QWidget *widget, QColor startColor, + QColor endColor = QColor(0, 0, 0, 0), + bool once = false); EXPORT void SetHeightToContentHeight(QListWidget *list); EXPORT void SetButtonIcon(QPushButton *button, const char *path); diff --git a/lib/utils/utility.cpp b/lib/utils/utility.cpp index 1f6bf6e5..791284b4 100644 --- a/lib/utils/utility.cpp +++ b/lib/utils/utility.cpp @@ -76,15 +76,15 @@ std::string ToString(double value) } void listAddClicked(QListWidget *list, QWidget *newWidget, - QPushButton *addButton, - QMetaObject::Connection *addHighlight) + QPushButton *addButton, QObject *addHighlight) { if (!list || !newWidget) { return; } - if (addButton && addHighlight) { - addButton->disconnect(*addHighlight); + if (addHighlight) { + addHighlight->deleteLater(); + addHighlight = nullptr; } QListWidgetItem *item; diff --git a/lib/utils/utility.hpp b/lib/utils/utility.hpp index 2d80bb84..baa763c3 100644 --- a/lib/utils/utility.hpp +++ b/lib/utils/utility.hpp @@ -24,7 +24,7 @@ std::string ToString(double value); void listAddClicked(QListWidget *list, QWidget *newWidget, QPushButton *addButton = nullptr, - QMetaObject::Connection *addHighlight = nullptr); + QObject *addHighlight = nullptr); bool listMoveUp(QListWidget *list); bool listMoveDown(QListWidget *list); diff --git a/plugins/twitch/token.cpp b/plugins/twitch/token.cpp index a9b726ed..b127c63e 100644 --- a/plugins/twitch/token.cpp +++ b/plugins/twitch/token.cpp @@ -529,7 +529,8 @@ TwitchTokenSettingsDialog::TwitchTokenSettingsDialog( HideToken(); if (_name->text().isEmpty()) { - PulseWidget(_requestToken, Qt::green, QColor(0, 0, 0, 0), true); + HighlightWidget(_requestToken, Qt::green, QColor(0, 0, 0, 0), + true); } _currentToken = settings; @@ -573,7 +574,8 @@ void TwitchTokenSettingsDialog::HideToken() void TwitchTokenSettingsDialog::TokenOptionChanged(int) { if (!_name->text().isEmpty()) { - PulseWidget(_requestToken, Qt::green, QColor(0, 0, 0, 0), true); + HighlightWidget(_requestToken, Qt::green, QColor(0, 0, 0, 0), + true); } _name->setText(""); SetTokenInfoVisible(false); diff --git a/tests/mocks/ui-helpers.cpp b/tests/mocks/ui-helpers.cpp index 84a4750e..8b0ce42a 100644 --- a/tests/mocks/ui-helpers.cpp +++ b/tests/mocks/ui-helpers.cpp @@ -1,11 +1,13 @@ #include "ui-helpers.hpp" +class QObejct; + namespace advss { -QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, - QColor endColor, bool once) +QObject *HighlightWidget(QWidget *widget, QColor startColor, QColor endColor, + bool once) { - return {}; + return nullptr; } void SetHeightToContentHeight(QListWidget *list) {}