X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsystemtray.h;h=ad7a9ff197e8432577230481a0e69fed6ec3e4b4;hp=b2b0afba7bc3e957faddb05b480242bbeb3ea7fc;hb=a9cc264bc4ee3e51ede21b79276704d4043e3656;hpb=e7d1bc1fa02e1233f140e4b04d99ab8f4685bce5 diff --git a/src/qtui/systemtray.h b/src/qtui/systemtray.h index b2b0afba..ad7a9ff1 100644 --- a/src/qtui/systemtray.h +++ b/src/qtui/systemtray.h @@ -23,10 +23,12 @@ #include "icon.h" +class Action; class QMenu; class SystemTray : public QObject { Q_OBJECT + Q_ENUMS(State Mode MessageIcon ActivationReason) public: enum State { @@ -58,29 +60,36 @@ public: MiddleClick }; - SystemTray(QObject *parent = 0); + explicit SystemTray(QWidget *parent); virtual ~SystemTray(); - virtual void init() {} + virtual void init(); inline State state() const; inline bool isAlerted() const; virtual inline bool isSystemTrayAvailable() const; void setAlert(bool alerted); - inline void setInhibitActivation(); - inline bool isActivationInhibited() const; + virtual inline bool isVisible() const { return false; } + + QWidget *associatedWidget() const; public slots: virtual void setState(State); virtual void setVisible(bool visible = true); virtual void setToolTip(const QString &title, const QString &subtitle); - virtual void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int millisecondsTimeoutHint = 10000); + virtual void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int msTimeout = 10000, uint notificationId = 0); + virtual void closeMessage(uint notificationId) { Q_UNUSED(notificationId) } signals: void activated(SystemTray::ActivationReason); void iconChanged(const Icon &); + void animationEnabledChanged(bool); void toolTipChanged(const QString &title, const QString &subtitle); - void messageClicked(); + void messageClicked(uint notificationId); + void messageClosed(uint notificationId); + +protected slots: + virtual void activate(SystemTray::ActivationReason = Trigger); protected: virtual void setMode(Mode mode); @@ -91,35 +100,36 @@ protected: inline QString toolTipTitle() const; inline QString toolTipSubTitle() const; inline QMenu *trayMenu() const; - void setTrayMenu(QMenu *); - virtual bool eventFilter(QObject *obj, QEvent *event); + inline bool animationEnabled() const; private slots: + void minimizeRestore(); + void trayMenuAboutToShow(); + void enableAnimationChanged(const QVariant &); private: Mode _mode; State _state; - bool _inhibitActivation; - QString _toolTipTitle, _toolTipSubTitle; Icon _passiveIcon, _activeIcon, _needsAttentionIcon; + bool _animationEnabled; QMenu *_trayMenu; + QWidget *_associatedWidget; + Action *_minimizeRestoreAction; }; // inlines bool SystemTray::isSystemTrayAvailable() const { return false; } bool SystemTray::isAlerted() const { return state() == NeedsAttention; } -void SystemTray::setInhibitActivation() { _inhibitActivation = true; } -bool SystemTray::isActivationInhibited() const { return _inhibitActivation; } SystemTray::Mode SystemTray::mode() const { return _mode; } SystemTray::State SystemTray::state() const { return _state; } QMenu *SystemTray::trayMenu() const { return _trayMenu; } QString SystemTray::toolTipTitle() const { return _toolTipTitle; } QString SystemTray::toolTipSubTitle() const { return _toolTipSubTitle; } - +bool SystemTray::animationEnabled() const { return _animationEnabled; } #endif