Highlight newly added macro segments

This commit is contained in:
WarmUpTill 2021-08-25 21:43:04 +02:00 committed by WarmUpTill
parent 8cfed048cc
commit ab5bdb32f5
6 changed files with 48 additions and 11 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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()

View File

@ -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()

View File

@ -5,6 +5,7 @@
#include "headers/name-dialog.hpp"
#include "headers/utility.hpp"
#include <QColor>
#include <QMenu>
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,

View File

@ -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();