diff --git a/CMakeLists.txt b/CMakeLists.txt index fd742099..86326643 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,6 +157,8 @@ target_sources( lib/queue/action-queue.hpp lib/queue/action-queue-tab.cpp lib/queue/action-queue-tab.hpp + lib/utils/auto-update-tooltip-label.cpp + lib/utils/auto-update-tooltip-label.hpp lib/utils/backup.cpp lib/utils/backup.hpp lib/utils/condition-logic.cpp diff --git a/lib/utils/auto-update-tooltip-label.cpp b/lib/utils/auto-update-tooltip-label.cpp new file mode 100644 index 00000000..819b9d92 --- /dev/null +++ b/lib/utils/auto-update-tooltip-label.cpp @@ -0,0 +1,38 @@ +#include "auto-update-tooltip-label.hpp" + +namespace advss { + +AutoUpdateTooltipLabel::AutoUpdateTooltipLabel( + QWidget *parent, const std::function &updateTooltipCallback, + int updateIntervalMs) + : QLabel(parent), + _callback(updateTooltipCallback), + _timer(new QTimer(this)), + _updateIntervalMs(updateIntervalMs) +{ + connect(_timer, &QTimer::timeout, this, + &AutoUpdateTooltipLabel::UpdateTooltip); +} + +#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) +void AutoUpdateTooltipLabel::enterEvent(QEnterEvent *event) +#else +void AutoUpdateTooltipLabel::enterEvent(QEvent *event) +#endif +{ + _timer->start(_updateIntervalMs); + QLabel::enterEvent(event); +} + +void AutoUpdateTooltipLabel::leaveEvent(QEvent *event) +{ + _timer->stop(); + QLabel::leaveEvent(event); +} + +void AutoUpdateTooltipLabel::UpdateTooltip() +{ + setToolTip(_callback()); +} + +} // namespace advss diff --git a/lib/utils/auto-update-tooltip-label.hpp b/lib/utils/auto-update-tooltip-label.hpp new file mode 100644 index 00000000..1657cbc7 --- /dev/null +++ b/lib/utils/auto-update-tooltip-label.hpp @@ -0,0 +1,36 @@ +#pragma once +#include "export-symbol-helper.hpp" + +#include +#include +#include + +namespace advss { + +class ADVSS_EXPORT AutoUpdateTooltipLabel : public QLabel { + Q_OBJECT + +public: + AutoUpdateTooltipLabel( + QWidget *parent, + const std::function &updateTooltipCallback, + int updateIntervalMs = 300); + +protected: +#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) + void enterEvent(QEnterEvent *event) override; +#else + void enterEvent(QEvent *event) override; +#endif + void leaveEvent(QEvent *event) override; + +private slots: + void UpdateTooltip(); + +private: + const std::function _callback; + QTimer *_timer; + const int _updateIntervalMs; +}; + +} // namespace advss diff --git a/lib/utils/temp-variable.cpp b/lib/utils/temp-variable.cpp index 5d9516fc..ff2087c1 100644 --- a/lib/utils/temp-variable.cpp +++ b/lib/utils/temp-variable.cpp @@ -455,35 +455,4 @@ void NotifyUIAboutTempVarChange() nullptr, false); } -AutoUpdateTooltipLabel::AutoUpdateTooltipLabel( - QWidget *parent, std::function updateFunc) - : QLabel(parent), - _updateFunc(updateFunc), - _timer(new QTimer(this)) -{ - connect(_timer, &QTimer::timeout, this, - &AutoUpdateTooltipLabel::UpdateTooltip); -} - -#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) -void AutoUpdateTooltipLabel::enterEvent(QEnterEvent *event) -#else -void AutoUpdateTooltipLabel::enterEvent(QEvent *event) -#endif -{ - _timer->start(300); - QLabel::enterEvent(event); -} - -void AutoUpdateTooltipLabel::leaveEvent(QEvent *event) -{ - _timer->stop(); - QLabel::leaveEvent(event); -} - -void AutoUpdateTooltipLabel::UpdateTooltip() -{ - setToolTip(_updateFunc()); -} - } // namespace advss diff --git a/lib/utils/temp-variable.hpp b/lib/utils/temp-variable.hpp index d91f8cf0..109cce51 100644 --- a/lib/utils/temp-variable.hpp +++ b/lib/utils/temp-variable.hpp @@ -1,4 +1,5 @@ #pragma once +#include "auto-update-tooltip-label.hpp" #include "filter-combo-box.hpp" #include @@ -6,8 +7,6 @@ #include #include #include -#include -#include #include #include @@ -79,29 +78,6 @@ private: friend TempVariableSelection; }; -class AutoUpdateTooltipLabel : public QLabel { - Q_OBJECT - -public: - AutoUpdateTooltipLabel(QWidget *parent, - std::function updateFunc); - -protected: -#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) - void enterEvent(QEnterEvent *event) override; -#else - void enterEvent(QEvent *event) override; -#endif - void leaveEvent(QEvent *event) override; - -private slots: - void UpdateTooltip(); - -private: - std::function _updateFunc; - QTimer *_timer; -}; - class ADVSS_EXPORT TempVariableSelection : public QWidget { Q_OBJECT