Make _mainWin a QPointer, to avoid problems with double deletion in case we use KDE
[quassel.git] / src / qtui / qtui.h
index 9ac3b97..9a00ef4 100644 (file)
@@ -23,6 +23,9 @@
 
 #include "quasselui.h"
 
+#include "abstractnotificationbackend.h"
+#include "mainwin.h"
+
 class ActionCollection;
 class MainWin;
 class MessageModel;
@@ -44,13 +47,27 @@ public:
   AbstractMessageProcessor *createMessageProcessor(QObject *parent);
 
   inline static QtUiStyle *style();
+  inline static MainWin *mainWindow();
 
-  //! Access the global ActionCollection.
-  /** This ActionCollection is associated with the main window, i.e. it contains global
+  //! Access global ActionCollections.
+  /** These ActionCollections are associated with the main window, i.e. they contain global
    *  actions (and thus, shortcuts). Widgets providing application-wide shortcuts should
-   *  create appropriate Action objects using QtUi::actionCollection()->add\<Action\>().
+   *  create appropriate Action objects using QtUi::actionCollection(cat)->add\<Action\>().
+   *  @param category The category (default: "General")
    */
-  inline static ActionCollection *actionCollection();
+  static ActionCollection *actionCollection(const QString &category = "General");
+  inline AbstractActionProvider *actionProvider() const;
+
+  /* Notifications */
+
+  static void registerNotificationBackend(AbstractNotificationBackend *);
+  static void unregisterNotificationBackend(AbstractNotificationBackend *);
+  static void unregisterAllNotificationBackends();
+  static const QList<AbstractNotificationBackend *> &notificationBackends();
+  static uint invokeNotification(BufferId bufId, const QString &sender, const QString &text);
+  static void closeNotification(uint notificationId);
+  static void closeNotifications(BufferId bufferId = BufferId());
+  static const QList<AbstractNotificationBackend::Notification> &activeNotifications();
 
 public slots:
   void init();
@@ -60,12 +77,17 @@ protected slots:
   void disconnectedFromCore();
 
 private:
-  MainWin *mainWin;
-  static ActionCollection *_actionCollection;
+  AbstractActionProvider *_actionProvider;
+
+  static QPointer<MainWin> _mainWin;
+  static QHash<QString, ActionCollection *> _actionCollections;
   static QtUiStyle *_style;
+  static QList<AbstractNotificationBackend *> _notificationBackends;
+  static QList<AbstractNotificationBackend::Notification> _notifications;
 };
 
-ActionCollection *QtUi::actionCollection() { return _actionCollection; }
 QtUiStyle *QtUi::style() { return _style; }
+MainWin *QtUi::mainWindow() { return _mainWin; }
+AbstractActionProvider *QtUi::actionProvider() const { return _actionProvider; }
 
 #endif