X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsystemtray.h;h=c5fee1994b32a0b88012dd0550a39b79e503cc42;hp=733a6f09cab603e16e36ad199c8d5c1de51a33ce;hb=ddfb1d2574c4bffd180361a80df9b1cd584bb040;hpb=ea5b220601473213689ef9bad6611ec74b776aa5 diff --git a/src/qtui/systemtray.h b/src/qtui/systemtray.h index 733a6f09..c5fee199 100644 --- a/src/qtui/systemtray.h +++ b/src/qtui/systemtray.h @@ -22,6 +22,7 @@ #include #include +#include class Action; class QMenu; @@ -61,6 +62,12 @@ public: MiddleClick }; + enum class AttentionBehavior { + DoNothing, + ChangeColor, + Blink + }; + explicit SystemTray(QWidget *parent); ~SystemTray() override; @@ -87,7 +94,7 @@ signals: void stateChanged(State state); void visibilityChanged(bool isVisible); void iconsChanged(); - void animationEnabledChanged(bool); + void currentIconNameChanged(); void toolTipChanged(const QString &title, const QString &subtitle); void activated(SystemTray::ActivationReason); @@ -99,28 +106,36 @@ protected slots: protected: void setMode(Mode mode); - bool animationEnabled() const; QString toolTipTitle() const; QString toolTipSubTitle() const; QMenu *trayMenu() const; QString iconName(State state) const; + QString currentIconName() const; + QString currentAttentionIconName() const; private slots: void minimizeRestore(); void trayMenuAboutToShow(); - void enableAnimationChanged(const QVariant &); void invertTrayIconChanged(const QVariant &); + void enableChangeColorChanged(const QVariant &); + void enableBlinkChanged(const QVariant &); + + void onBlinkTimeout(); private: bool _isVisible{false}; Mode _mode{Mode::Invalid}; State _state{State::Passive}; - bool _animationEnabled{true}; bool _trayIconInverted{false}; + AttentionBehavior _attentionBehavior{AttentionBehavior::ChangeColor}; + + QTimer _blinkTimer; + bool _blinkState{false}; - QString _toolTipTitle, _toolTipSubTitle; + QString _toolTipTitle; + QString _toolTipSubTitle; QMenu *_trayMenu{nullptr}; QWidget *_associatedWidget{nullptr};