Refactor the system tray's context menu
[quassel.git] / src / qtui / systemtray.h
index 7192b3f..df79ddf 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "icon.h"
 
+class Action;
 class QMenu;
 
 class SystemTray : public QObject {
@@ -61,16 +62,14 @@ public:
 
   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);
-  virtual inline void setInhibitActivation();
   virtual inline bool isVisible() const { return false; }
-  inline bool isActivationInhibited() const;
 
   QWidget *associatedWidget() const;
 
@@ -98,31 +97,27 @@ protected:
   inline QString toolTipTitle() const;
   inline QString toolTipSubTitle() const;
   inline QMenu *trayMenu() const;
-  void setTrayMenu(QMenu *);
-
-  virtual bool eventFilter(QObject *obj, QEvent *event);
 
 private slots:
+  void minimizeRestore();
+  void trayMenuAboutToShow();
 
 private:
   Mode _mode;
   State _state;
 
-  bool _inhibitActivation;
-
   QString _toolTipTitle, _toolTipSubTitle;
   Icon _passiveIcon, _activeIcon, _needsAttentionIcon;
 
   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; }