From ab5bdb32f59e9693bcb5df01e3403368e94ea644 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Wed, 25 Aug 2021 21:43:04 +0200 Subject: [PATCH] Highlight newly added macro segments --- src/headers/advanced-scene-switcher.hpp | 2 ++ src/headers/utility.hpp | 5 +++-- src/macro-action-edit.cpp | 1 + src/macro-condition-edit.cpp | 1 + src/macro-tab.cpp | 29 +++++++++++++++++++++++++ src/utility.cpp | 21 ++++++++++-------- 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index e1f1ca22..f97a37f0 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -49,6 +49,8 @@ public: bool addNewMacro(std::string &name); Macro *getSelectedMacro(); void SetEditMacro(Macro &m); + void HighlightAction(int idx); + void HighlightCondition(int idx); void ConnectControlSignals(MacroActionEdit *); void ConnectControlSignals(MacroConditionEdit *); void SwapActions(Macro *m, int pos1, int pos2); diff --git a/src/headers/utility.hpp b/src/headers/utility.hpp index a60684d1..ae73a73f 100644 --- a/src/headers/utility.hpp +++ b/src/headers/utility.hpp @@ -45,9 +45,10 @@ void placeWidgets(std::string text, QBoxLayout *layout, bool addStretch = true); void deleteLayoutItem(QLayoutItem *item); void clearLayout(QLayout *layout); -QMetaObject::Connection PulseWidget(QWidget *widget, QColor endColor, +QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, QColor = QColor(0, 0, 0, 0), - QString specifier = "QLabel "); + QString specifier = "QLabel ", + bool once = false); void listAddClicked(QListWidget *list, QWidget *newWidget, QPushButton *addButton = nullptr, QMetaObject::Connection *addHighlight = nullptr); diff --git a/src/macro-action-edit.cpp b/src/macro-action-edit.cpp index b43c373e..07084c4b 100644 --- a/src/macro-action-edit.cpp +++ b/src/macro-action-edit.cpp @@ -158,6 +158,7 @@ void AdvSceneSwitcher::AddMacroAction(int idx) // // If performance should become a concern this has to be revisited. SetEditMacro(*macro); + HighlightAction(idx); } void AdvSceneSwitcher::on_actionAdd_clicked() diff --git a/src/macro-condition-edit.cpp b/src/macro-condition-edit.cpp index 7c915433..1854e255 100644 --- a/src/macro-condition-edit.cpp +++ b/src/macro-condition-edit.cpp @@ -282,6 +282,7 @@ void AdvSceneSwitcher::AddMacroCondition(int idx) // // If performance should become a concern this has to be revisited. SetEditMacro(*macro); + HighlightCondition(idx); } void AdvSceneSwitcher::on_conditionAdd_clicked() diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index 860cd1f7..09de882f 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -5,6 +5,7 @@ #include "headers/name-dialog.hpp" #include "headers/utility.hpp" +#include #include static QMetaObject::Connection addPulse; @@ -207,6 +208,34 @@ void AdvSceneSwitcher::SetEditMacro(Macro &m) } } +void AdvSceneSwitcher::HighlightAction(int idx) +{ + auto item = ui->macroEditActionLayout->itemAt(idx); + if (!item) { + return; + } + auto widget = item->widget(); + if (!widget) { + return; + } + PulseWidget(widget, QColor(Qt::green), QColor(0, 0, 0, 0), "QLabel ", + true); +} + +void AdvSceneSwitcher::HighlightCondition(int idx) +{ + auto item = ui->macroEditConditionLayout->itemAt(idx); + if (!item) { + return; + } + auto widget = item->widget(); + if (!widget) { + return; + } + PulseWidget(widget, QColor(Qt::green), QColor(0, 0, 0, 0), "QLabel ", + true); +} + void AdvSceneSwitcher::ConnectControlSignals(MacroActionEdit *c) { connect(c, &MacroActionEdit::AddAt, this, diff --git a/src/utility.cpp b/src/utility.cpp index 06721c73..089226b9 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -813,8 +813,9 @@ void populateSceneItemSelection(QComboBox *list, SceneSelection &s) list->setCurrentIndex(0); } -QMetaObject::Connection PulseWidget(QWidget *widget, QColor endColor, - QColor startColor, QString specifier) +QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, + QColor endColor, QString specifier, + bool once) { widget->setStyleSheet(specifier + "{ \ border-style: outset; \ @@ -830,15 +831,17 @@ QMetaObject::Connection PulseWidget(QWidget *widget, QColor endColor, paAnimation->setStartValue(startColor); paAnimation->setEndValue(endColor); paAnimation->setDuration(1000); - // Play backwards to return to original state on timer end - paAnimation->setDirection(QAbstractAnimation::Backward); - auto con = QWidget::connect( - paAnimation, &QPropertyAnimation::finished, [paAnimation]() { - QTimer::singleShot(1000, [paAnimation] { - paAnimation->start(); + QMetaObject::Connection con; + if (!once) { + con = QWidget::connect( + paAnimation, &QPropertyAnimation::finished, + [paAnimation]() { + QTimer::singleShot(1000, [paAnimation] { + paAnimation->start(); + }); }); - }); + } paAnimation->start();