Move ActionCollection handling from QtUi to GraphicalUi
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 14 Mar 2009 22:29:18 +0000 (23:29 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 14 Mar 2009 22:29:18 +0000 (23:29 +0100)
Needed to allow stuff in uisupport to access action collections.

src/qtui/qtui.cpp
src/qtui/qtui.h
src/uisupport/graphicalui.cpp
src/uisupport/graphicalui.h

index c1ed4aa..2efdf72 100644 (file)
@@ -21,7 +21,6 @@
 #include "qtui.h"
 
 #include "abstractnotificationbackend.h"
-#include "actioncollection.h"
 #include "chatlinemodel.h"
 #include "contextmenuactionprovider.h"
 #include "mainwin.h"
@@ -32,7 +31,6 @@
 #include "types.h"
 #include "util.h"
 
-QHash<QString, ActionCollection *> QtUi::_actionCollections;
 QPointer<QtUi> QtUi::_instance = 0;
 QPointer<MainWin> QtUi::_mainWin = 0;
 QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
@@ -55,6 +53,8 @@ QtUi::QtUi() : GraphicalUi() {
   _mainWin = new MainWin();
   _style = new QtUiStyle;
 
+  setMainWidget(_mainWin);
+
   connect(_mainWin, SIGNAL(connectToCore(const QVariantMap &)), this, SIGNAL(connectToCore(const QVariantMap &)));
   connect(_mainWin, SIGNAL(disconnectFromCore()), this, SIGNAL(disconnectFromCore()));
 }
@@ -69,15 +69,6 @@ void QtUi::init() {
   _mainWin->init();
 }
 
-ActionCollection *QtUi::actionCollection(const QString &category) {
-  if(_actionCollections.contains(category))
-    return _actionCollections.value(category);
-  ActionCollection *coll = new ActionCollection(mainWindow());
-  coll->addAssociatedWidget(mainWindow());
-  _actionCollections.insert(category, coll);
-  return coll;
-}
-
 MessageModel *QtUi::createMessageModel(QObject *parent) {
   return new ChatLineModel(parent);
 }
index 77916ce..1e2144c 100644 (file)
@@ -26,7 +26,6 @@
 #include "abstractnotificationbackend.h"
 #include "mainwin.h"
 
-class ActionCollection;
 class MainWin;
 class MessageModel;
 class QtUiMessageProcessor;
@@ -50,13 +49,6 @@ public:
   inline static QtUiStyle *style();
   inline static MainWin *mainWindow();
 
-  //! 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(cat)->add\<Action\>().
-   *  @param category The category (default: "General")
-   */
-  static ActionCollection *actionCollection(const QString &category = "General");
 
   /* Notifications */
 
@@ -80,7 +72,6 @@ protected slots:
 private:
   static QPointer<QtUi> _instance;
   static QPointer<MainWin> _mainWin;
-  static QHash<QString, ActionCollection *> _actionCollections;
   static QtUiStyle *_style;
   static QList<AbstractNotificationBackend *> _notificationBackends;
   static QList<AbstractNotificationBackend::Notification> _notifications;
index 796eb21..abd8cd1 100644 (file)
 
 #include "graphicalui.h"
 
+#include "actioncollection.h"
 #include "contextmenuactionprovider.h"
 
+QWidget *GraphicalUi::_mainWidget = 0;
+QHash<QString, ActionCollection *> GraphicalUi::_actionCollections;
 ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0;
 ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = 0;
 
-GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) {
+GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent)
+{
 
 }
 
+ActionCollection *GraphicalUi::actionCollection(const QString &category) {
+  if(_actionCollections.contains(category))
+    return _actionCollections.value(category);
+  ActionCollection *coll = new ActionCollection(_mainWidget);
+  if(_mainWidget)
+    coll->addAssociatedWidget(_mainWidget);
+  _actionCollections.insert(category, coll);
+  return coll;
+}
+
+void GraphicalUi::setMainWidget(QWidget *widget) {
+  _mainWidget = widget;
+}
+
 void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider *provider) {
   _contextMenuActionProvider = provider;
 }
index b4f8669..392075e 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "abstractui.h"
 
+class ActionCollection;
 class ContextMenuActionProvider;
 class ToolBarActionProvider;
 
@@ -32,14 +33,27 @@ class GraphicalUi : public AbstractUi {
 public:
   GraphicalUi(QObject *parent = 0);
 
+  //! 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 GraphicalUi::actionCollection(cat)->add\<Action\>().
+  *  @param category The category (default: "General")
+  */
+  static ActionCollection *actionCollection(const QString &category = "General");
+
   inline static ContextMenuActionProvider *contextMenuActionProvider();
   inline static ToolBarActionProvider *toolBarActionProvider();
 
 protected:
+  //! This is the widget we associate global actions with, typically the main window
+  void setMainWidget(QWidget *);
+
   void setContextMenuActionProvider(ContextMenuActionProvider *);
   void setToolBarActionProvider(ToolBarActionProvider *);
 
 private:
+  static QWidget *_mainWidget;
+  static QHash<QString, ActionCollection *> _actionCollections;
   static ContextMenuActionProvider *_contextMenuActionProvider;
   static ToolBarActionProvider *_toolBarActionProvider;