From 4253c99cf2f7e09171aac0d56555205187e6a84b Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 25 Feb 2022 23:08:35 +0100 Subject: [PATCH] Fade out segment controls which will likely not be needed This was done to give some hints which controls will likely need to be used to avoid mistakenly clicking on the action controls when editing conditions. --- src/headers/advanced-scene-switcher.hpp | 5 ++ src/macro-action-edit.cpp | 1 + src/macro-condition-edit.cpp | 1 + src/macro-tab.cpp | 75 +++++++++++++++++++++++++ 4 files changed, 82 insertions(+) diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index e401898a..67bf60c5 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -153,6 +153,11 @@ public slots: void RemoveMacroCondition(int idx); void MoveMacroConditionUp(int idx); void MoveMacroConditionDown(int idx); + void FadeOutActionControls(); + void FadeOutConditionControls(); + void ResetOpacityActionControls(); + void ResetOpacityConditionControls(); + void HighlightControls(); void HighlightMatchedMacros(); void MacroDragDropReorder(QModelIndex, int, int, QModelIndex, int); diff --git a/src/macro-action-edit.cpp b/src/macro-action-edit.cpp index 2bb301a8..0278ef1c 100644 --- a/src/macro-action-edit.cpp +++ b/src/macro-action-edit.cpp @@ -322,4 +322,5 @@ void AdvSceneSwitcher::MacroActionSelectionChanged(int idx) currentActionIdx = idx; } currentConditionIdx = -1; + HighlightControls(); } diff --git a/src/macro-condition-edit.cpp b/src/macro-condition-edit.cpp index 2053c453..8c308afe 100644 --- a/src/macro-condition-edit.cpp +++ b/src/macro-condition-edit.cpp @@ -464,4 +464,5 @@ void AdvSceneSwitcher::MacroConditionSelectionChanged(int idx) currentConditionIdx = idx; } currentActionIdx = -1; + HighlightControls(); } diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index 3721c63e..bc49cf8f 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -8,6 +8,8 @@ #include #include +#include +#include static QTimer highlightMatchTimer; static QMetaObject::Connection addPulse; @@ -312,6 +314,7 @@ void AdvSceneSwitcher::SetEditMacro(Macro &m) currentActionIdx = -1; currentConditionIdx = -1; + HighlightControls(); } void AdvSceneSwitcher::HighlightAction(int idx) @@ -636,3 +639,75 @@ void AdvSceneSwitcher::DeleteMacroSegementHotkey() RemoveMacroCondition(currentConditionIdx); } } + +void fade(QWidget *widget, bool fadeOut) +{ + auto curEffect = widget->graphicsEffect(); + if (curEffect) { + auto curOpacity = + dynamic_cast(curEffect); + if (curOpacity && ((fadeOut && curOpacity->opacity() == 0.3) || + (!fadeOut && curOpacity->opacity() == 1))) { + return; + } + } else if (!fadeOut) { + return; + } + + QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect(); + widget->setGraphicsEffect(opacityEffect); + QPropertyAnimation *animation = + new QPropertyAnimation(opacityEffect, "opacity"); + animation->setDuration(350); + animation->setStartValue(fadeOut ? 1 : 0.3); + animation->setEndValue(fadeOut ? .3 : 1); + animation->setEasingCurve(QEasingCurve::OutQuint); + animation->start(QPropertyAnimation::DeleteWhenStopped); +} + +void AdvSceneSwitcher::FadeOutActionControls() +{ + fade(ui->actionAdd, true); + fade(ui->actionRemove, true); + fade(ui->actionUp, true); + fade(ui->actionDown, true); +} + +void AdvSceneSwitcher::FadeOutConditionControls() +{ + fade(ui->conditionAdd, true); + fade(ui->conditionRemove, true); + fade(ui->conditionUp, true); + fade(ui->conditionDown, true); +} + +void AdvSceneSwitcher::ResetOpacityActionControls() +{ + fade(ui->actionAdd, false); + fade(ui->actionRemove, false); + fade(ui->actionUp, false); + fade(ui->actionDown, false); +} + +void AdvSceneSwitcher::ResetOpacityConditionControls() +{ + fade(ui->conditionAdd, false); + fade(ui->conditionRemove, false); + fade(ui->conditionUp, false); + fade(ui->conditionDown, false); +} + +void AdvSceneSwitcher::HighlightControls() +{ + if ((currentActionIdx == -1 && currentConditionIdx == -1) || + (currentActionIdx != -1 && currentConditionIdx != -1)) { + ResetOpacityActionControls(); + ResetOpacityConditionControls(); + } else if (currentActionIdx != -1) { + FadeOutConditionControls(); + ResetOpacityActionControls(); + } else { + FadeOutActionControls(); + ResetOpacityConditionControls(); + } +}