#include "icon.h"
+#ifdef Q_WS_WIN
+# include <windows.h>
+#endif
+
class QMenu;
class SystemTray : public QObject {
Q_OBJECT
+ Q_ENUMS(State Mode MessageIcon ActivationReason)
public:
enum State {
MiddleClick
};
- SystemTray(QObject *parent = 0);
+ explicit SystemTray(QWidget *parent);
virtual ~SystemTray();
virtual void init() {}
void setAlert(bool alerted);
inline void setInhibitActivation();
+ inline virtual bool isVisible() const { return false; }
inline bool isActivationInhibited() const;
+ 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);
+ void toggleMainWidget();
+ void hideMainWidget();
signals:
void activated(SystemTray::ActivationReason);
void toolTipChanged(const QString &title, const QString &subtitle);
void messageClicked();
+protected slots:
+ virtual void activate(SystemTray::ActivationReason = Trigger);
+
+ void minimizeRestore(bool restore);
+
protected:
virtual void setMode(Mode mode);
inline Mode mode() const;
private slots:
private:
+ bool checkVisibility(bool performToggle = true);
+
Mode _mode;
State _state;
Icon _passiveIcon, _activeIcon, _needsAttentionIcon;
QMenu *_trayMenu;
+ QWidget *_associatedWidget;
+
+#ifdef Q_WS_WIN
+ DWORD _dwTickCount;
+#endif
+
};
// inlines