More systray refactoring
[quassel.git] / src / qtui / systemtray.h
index b2b0afb..7192b3f 100644 (file)
@@ -27,6 +27,7 @@ class QMenu;
 
 class SystemTray : public QObject {
   Q_OBJECT
+  Q_ENUMS(State Mode MessageIcon ActivationReason)
 
 public:
   enum State {
@@ -58,7 +59,7 @@ public:
     MiddleClick
   };
 
-  SystemTray(QObject *parent = 0);
+  explicit SystemTray(QWidget *parent);
   virtual ~SystemTray();
   virtual void init() {}
 
@@ -67,9 +68,12 @@ public:
   virtual inline bool isSystemTrayAvailable() const;
 
   void setAlert(bool alerted);
-  inline void setInhibitActivation();
+  virtual inline void setInhibitActivation();
+  virtual inline bool isVisible() const { return false; }
   inline bool isActivationInhibited() const;
 
+  QWidget *associatedWidget() const;
+
 public slots:
   virtual void setState(State);
   virtual void setVisible(bool visible = true);
@@ -82,6 +86,9 @@ signals:
   void toolTipChanged(const QString &title, const QString &subtitle);
   void messageClicked();
 
+protected slots:
+  virtual void activate(SystemTray::ActivationReason = Trigger);
+
 protected:
   virtual void setMode(Mode mode);
   inline Mode mode() const;
@@ -107,6 +114,7 @@ private:
   Icon _passiveIcon, _activeIcon, _needsAttentionIcon;
 
   QMenu *_trayMenu;
+  QWidget *_associatedWidget;
 };
 
 // inlines