Introduce GraphicalUi (between QtUi and AbstractUi), rename NetworkModelActionProvider
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 31 Jan 2009 21:51:07 +0000 (22:51 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 6 Feb 2009 00:26:31 +0000 (01:26 +0100)
Since we need to access the UI from uisupport in various places, we introduce GraphicalUi.
This avoids the need to go via Client::mainUi() and abstract classes.

Also, getting rid of AbstractActionProvider and renaming NetworkModelActionProvider to
ContextMenuActionProvider to prepare for ToolbarActionProvider.

17 files changed:
src/client/CMakeLists.txt
src/client/abstractui.cpp [moved from src/client/quasselui.cpp with 91% similarity]
src/client/abstractui.h [moved from src/client/quasselui.h with 66% similarity]
src/client/client.cpp
src/qtui/chatitem.cpp
src/qtui/chatscene.cpp
src/qtui/chatview.cpp
src/qtui/mainwin.cpp
src/qtui/qtui.cpp
src/qtui/qtui.h
src/uisupport/CMakeLists.txt
src/uisupport/bufferview.cpp
src/uisupport/contextmenuactionprovider.cpp [moved from src/uisupport/networkmodelactionprovider.cpp with 86% similarity]
src/uisupport/contextmenuactionprovider.h [moved from src/uisupport/networkmodelactionprovider.h with 94% similarity]
src/uisupport/graphicalui.cpp [new file with mode: 0644]
src/uisupport/graphicalui.h [new file with mode: 0644]
src/uisupport/nickview.cpp

index 0a9f1f5..2622cd1 100644 (file)
@@ -8,6 +8,7 @@ include(${QT_USE_FILE})
 
 set(SOURCES
     abstractmessageprocessor.cpp
+    abstractui.cpp
     backlogrequester.cpp
     buffermodel.cpp
     buffersettings.cpp
@@ -21,12 +22,12 @@ set(SOURCES
     messagefilter.cpp
     messagemodel.cpp
     networkmodel.cpp
-    quasselui.cpp
     selectionmodelsynchronizer.cpp
     treemodel.cpp)
 
 set(MOC_HDRS
     abstractmessageprocessor.h
+    abstractui.h
     buffermodel.h
     client.h
     clientbacklogmanager.h
@@ -38,7 +39,6 @@ set(MOC_HDRS
     messagefilter.h
     messagemodel.h
     networkmodel.h
-    quasselui.h
     selectionmodelsynchronizer.h
     treemodel.h)
 
similarity index 91%
rename from src/client/quasselui.cpp
rename to src/client/abstractui.cpp
index 1b070e4..6a88765 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#include "quasselui.h"
+#include "abstractui.h"
 
-AbstractUi * AbstractUi::_instance = 0;
 bool AbstractUi::_visible = false;
 
-AbstractUi::AbstractUi() {
-  Q_ASSERT(!_instance);
-  _instance = this;
+AbstractUi::AbstractUi(QObject *parent) : QObject(parent) {
+
 }
similarity index 66%
rename from src/client/quasselui.h
rename to src/client/abstractui.h
index a1b45c7..1c96dea 100644 (file)
@@ -36,12 +36,11 @@ class AbstractUi : public QObject {
   Q_OBJECT
 
   public:
-    AbstractUi();
+    AbstractUi(QObject *parent = 0);
     virtual ~AbstractUi() {};
-    virtual void init() {};  // called after the client is initialized
+    virtual void init() = 0;  // called after the client is initialized
     virtual MessageModel *createMessageModel(QObject *parent) = 0;
     virtual AbstractMessageProcessor *createMessageProcessor(QObject *parent) = 0;
-    virtual AbstractActionProvider *actionProvider() const = 0;
 
     inline static bool isVisible() { return _visible; }
     inline static void setVisible(bool visible) { _visible = visible; }
@@ -55,27 +54,7 @@ class AbstractUi : public QObject {
     void disconnectFromCore();
 
   private:
-    static AbstractUi *_instance;
     static bool _visible;
 };
 
-class AbstractActionProvider : public QObject {
-  Q_OBJECT
-
-  public:
-    AbstractActionProvider(QObject *parent = 0) : QObject(parent) {}
-    virtual ~AbstractActionProvider() {}
-
-    virtual void addActions(QMenu *, const QModelIndex &index, QObject *receiver = 0, const char *slot = 0, bool allowBufferHide = false) = 0;
-    virtual void addActions(QMenu *, const QList<QModelIndex> &indexList, QObject *receiver = 0, const char *slot = 0, bool allowBufferHide = false) = 0;
-    virtual void addActions(QMenu *, BufferId id, QObject *receiver = 0, const char *slot = 0) = 0;
-    virtual void addActions(QMenu *, MessageFilter *filter, BufferId msgBuffer, QObject *receiver = 0, const char *slot = 0) = 0;
-    virtual void addActions(QMenu *, MessageFilter *filter, BufferId msgBuffer, const QString &chanOrNick, QObject *receiver = 0, const char *slot = 0) = 0;
-
-  signals:
-    void showChannelList(NetworkId);
-    void showIgnoreList(NetworkId);
-
-};
-
 #endif
index 92be56e..de3b5d1 100644 (file)
@@ -21,6 +21,7 @@
 #include "client.h"
 
 #include "abstractmessageprocessor.h"
+#include "abstractui.h"
 #include "bufferinfo.h"
 #include "buffermodel.h"
 #include "buffersettings.h"
@@ -37,7 +38,6 @@
 #include "network.h"
 #include "networkmodel.h"
 #include "quassel.h"
-#include "quasselui.h"
 #include "signalproxy.h"
 #include "util.h"
 
index 098c78e..de96b2d 100644 (file)
@@ -32,6 +32,7 @@
 #include "bufferview.h"
 #include "chatitem.h"
 #include "chatlinemodel.h"
+#include "contextmenuactionprovider.h"
 #include "iconloader.h"
 #include "mainwin.h"
 #include "qtui.h"
@@ -288,7 +289,7 @@ void ChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
 void ChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
   Q_UNUSED(pos);
 
-  Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>());
+  GraphicalUi::contextMenuActionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>());
 }
 
 // ************************************************************
@@ -615,7 +616,7 @@ void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
         foreach(QAction *action, menu->actions())
           action->setVisible(false);
         QString name = data(ChatLineModel::DisplayRole).toString().mid(click.start, click.length);
-        Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>(), name);
+        GraphicalUi::contextMenuActionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>(), name);
         break;
       }
       default:
index 8954815..4fdf92a 100644 (file)
@@ -34,6 +34,7 @@
 #include "client.h"
 #include "clientbacklogmanager.h"
 #include "columnhandleitem.h"
+#include "contextmenuactionprovider.h"
 #include "iconloader.h"
 #include "messagefilter.h"
 #include "qtui.h"
@@ -586,7 +587,7 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
     item->addActionsToMenu(&menu, item->mapFromScene(pos));
   else
     // no item -> default scene actions
-    Client::mainUi()->actionProvider()->addActions(&menu, filter(), BufferId());
+    GraphicalUi::contextMenuActionProvider()->addActions(&menu, filter(), BufferId());
 
   menu.exec(event->screenPos());
 
index 2a999ea..c8d6699 100644 (file)
@@ -28,7 +28,6 @@
 #include "chatview.h"
 #include "client.h"
 #include "messagefilter.h"
-#include "quasselui.h"
 
 ChatView::ChatView(BufferId bufferId, QWidget *parent)
   : QGraphicsView(parent),
index b6a21ea..7c75310 100644 (file)
@@ -47,6 +47,7 @@
 #include "clientbacklogmanager.h"
 #include "coreinfodlg.h"
 #include "coreconnectdlg.h"
+#include "contextmenuactionprovider.h"
 #include "debuglogwidget.h"
 #include "debugmessagemodelfilter.h"
 #include "iconloader.h"
@@ -134,7 +135,7 @@ void MainWin::init() {
   connect(QApplication::instance(), SIGNAL(aboutToQuit()), SLOT(saveLayout()));
   connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(clientNetworkCreated(NetworkId)));
   connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(clientNetworkRemoved(NetworkId)));
-  connect(Client::mainUi()->actionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId)));
+  connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId)));
 
   // Setup Dock Areas
   setDockNestingEnabled(true);
index 979ebe4..d8d808f 100644 (file)
@@ -23,8 +23,8 @@
 #include "abstractnotificationbackend.h"
 #include "actioncollection.h"
 #include "chatlinemodel.h"
+#include "contextmenuactionprovider.h"
 #include "mainwin.h"
-#include "networkmodelactionprovider.h"
 #include "qtuimessageprocessor.h"
 #include "qtuisettings.h"
 #include "qtuistyle.h"
@@ -38,14 +38,14 @@ QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
 QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
 QtUiStyle *QtUi::_style = 0;
 
-QtUi::QtUi() : AbstractUi() {
+QtUi::QtUi() : GraphicalUi() {
   if(_instance != 0) {
     qWarning() << "QtUi has been instantiated again!";
     return;
   }
   _instance = this;
 
-  _actionProvider = new NetworkModelActionProvider(this);
+  setContextMenuActionProvider(new ContextMenuActionProvider(this));
 
   QtUiSettings uiSettings;
   Quassel::loadTranslation(uiSettings.value("Locale", QLocale::system()).value<QLocale>());
index 35593ca..77916ce 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef QTUI_H
 #define QTUI_H
 
-#include "quasselui.h"
+#include "graphicalui.h"
 
 #include "abstractnotificationbackend.h"
 #include "mainwin.h"
@@ -36,7 +36,7 @@ class QtUiStyle;
 /** This is basically a wrapper around MainWin, which is necessary because we cannot derive MainWin
  *  from both QMainWindow and AbstractUi (because of multiple inheritance of QObject).
  */
-class QtUi : public AbstractUi {
+class QtUi : public GraphicalUi {
   Q_OBJECT
 
 public:
@@ -57,7 +57,6 @@ public:
    *  @param category The category (default: "General")
    */
   static ActionCollection *actionCollection(const QString &category = "General");
-  inline AbstractActionProvider *actionProvider() const;
 
   /* Notifications */
 
@@ -71,7 +70,7 @@ public:
   static const QList<AbstractNotificationBackend::Notification> &activeNotifications();
 
 public slots:
-  void init();
+  virtual void init();
 
 protected slots:
   void connectedToCore();
@@ -79,8 +78,6 @@ protected slots:
   void notificationActivated();
 
 private:
-  AbstractActionProvider *_actionProvider;
-
   static QPointer<QtUi> _instance;
   static QPointer<MainWin> _mainWin;
   static QHash<QString, ActionCollection *> _actionCollections;
@@ -92,6 +89,5 @@ private:
 QtUi *QtUi::instance() { return _instance ? _instance.data() : new QtUi(); }
 QtUiStyle *QtUi::style() { return _style; }
 MainWin *QtUi::mainWindow() { return _mainWin; }
-AbstractActionProvider *QtUi::actionProvider() const { return _actionProvider; }
 
 #endif
index e3172aa..d1c82b2 100644 (file)
@@ -14,16 +14,19 @@ set(SOURCES
     clearablelineedit.cpp
     clickablelabel.cpp
     colorbutton.cpp
+    contextmenuactionprovider.cpp
+    graphicalui.cpp
     icon.cpp
     iconloader.cpp
     inputline.cpp
-    networkmodelactionprovider.cpp
     nickview.cpp
     nickviewfilter.cpp
     settingspage.cpp
     tabcompleter.cpp
+    #toolbaractionprovider.cpp
     uisettings.cpp
-    uistyle.cpp)
+    uistyle.cpp
+   )
 
 set(MOC_HDRS
     abstractbuffercontainer.h
@@ -36,13 +39,16 @@ set(MOC_HDRS
     clearablelineedit.h
     clickablelabel.h
     colorbutton.h
+    contextmenuactionprovider.h
+    graphicalui.h
     iconloader.h
     inputline.h
-    networkmodelactionprovider.h
     nickview.h
     nickviewfilter.h
     settingspage.h
-    tabcompleter.h)
+    tabcompleter.h
+    #toolbaractionprovider.h
+   )
 
 set(HEADERS
     icon.h
index 345fd7b..8fbbdd3 100644 (file)
 #include "buffersettings.h"
 #include "buffersyncer.h"
 #include "client.h"
+#include "contextmenuactionprovider.h"
+#include "graphicalui.h"
 #include "iconloader.h"
 #include "network.h"
 #include "networkmodel.h"
-#include "networkmodelactionprovider.h"
-#include "quasselui.h"
+#include "contextmenuactionprovider.h"
 #include "uisettings.h"
 
 /*****************************************
@@ -386,7 +387,7 @@ void BufferView::addActionsToMenu(QMenu *contextMenu, const QModelIndex &index)
   indexList.removeAll(index);
   indexList.prepend(index);
 
-  Client::mainUi()->actionProvider()->addActions(contextMenu, indexList, this, "menuActionTriggered", (bool)config());
+  GraphicalUi::contextMenuActionProvider()->addActions(contextMenu, indexList, this, "menuActionTriggered", (bool)config());
 }
 
 void BufferView::addFilterActions(QMenu *contextMenu, const QModelIndex &index) {
@@ -403,12 +404,12 @@ void BufferView::addFilterActions(QMenu *contextMenu, const QModelIndex &index)
 }
 
 void BufferView::menuActionTriggered(QAction *result) {
-  NetworkModelActionProvider::ActionType type = (NetworkModelActionProvider::ActionType)result->data().toInt();
+  ContextMenuActionProvider::ActionType type = (ContextMenuActionProvider::ActionType)result->data().toInt();
   switch(type) {
-    case NetworkModelActionProvider::HideBufferTemporarily:
+    case ContextMenuActionProvider::HideBufferTemporarily:
       removeSelectedBuffers();
       break;
-    case NetworkModelActionProvider::HideBufferPermanently:
+    case ContextMenuActionProvider::HideBufferPermanently:
       removeSelectedBuffers(true);
       break;
     default:
similarity index 86%
rename from src/uisupport/networkmodelactionprovider.cpp
rename to src/uisupport/contextmenuactionprovider.cpp
index 9c817bf..8ab622e 100644 (file)
@@ -22,7 +22,7 @@
 #include <QMenu>
 #include <QMessageBox>
 
-#include "networkmodelactionprovider.h"
+#include "contextmenuactionprovider.h"
 
 #include "buffermodel.h"
 #include "buffersettings.h"
@@ -31,8 +31,8 @@
 #include "network.h"
 #include "util.h"
 
-NetworkModelActionProvider::NetworkModelActionProvider(QObject *parent)
-: AbstractActionProvider(parent),
+ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent)
+: QObject(parent),
   _actionCollection(new ActionCollection(this)),
   _messageFilter(0),
   _receiver(0)
@@ -114,7 +114,7 @@ NetworkModelActionProvider::NetworkModelActionProvider(QObject *parent)
   _nickModeMenuAction->setMenu(nickModeMenu);
 }
 
-NetworkModelActionProvider::~NetworkModelActionProvider() {
+ContextMenuActionProvider::~ContextMenuActionProvider() {
   _hideEventsMenuAction->menu()->deleteLater();
   _hideEventsMenuAction->deleteLater();
   _nickCtcpMenuAction->menu()->deleteLater();
@@ -123,11 +123,11 @@ NetworkModelActionProvider::~NetworkModelActionProvider() {
   _nickModeMenuAction->deleteLater();
 }
 
-void NetworkModelActionProvider::registerAction(ActionType type, const QString &text, bool checkable) {
+void ContextMenuActionProvider::registerAction(ActionType type, const QString &text, bool checkable) {
   registerAction(type, QPixmap(), text, checkable);
 }
 
-void NetworkModelActionProvider::registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable) {
+void ContextMenuActionProvider::registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable) {
   Action *act;
   if(icon.isNull())
     act = new Action(text, this);
@@ -141,34 +141,34 @@ void NetworkModelActionProvider::registerAction(ActionType type, const QPixmap &
   _actionByType[type] = act;
 }
 
-void NetworkModelActionProvider::addActions(QMenu *menu, BufferId bufId, QObject *receiver, const char *method) {
+void ContextMenuActionProvider::addActions(QMenu *menu, BufferId bufId, QObject *receiver, const char *method) {
   if(!bufId.isValid())
     return;
   addActions(menu, Client::networkModel()->bufferIndex(bufId), receiver, method);
 }
 
-void NetworkModelActionProvider::addActions(QMenu *menu, const QModelIndex &index, QObject *receiver, const char *method, bool isCustomBufferView) {
+void ContextMenuActionProvider::addActions(QMenu *menu, const QModelIndex &index, QObject *receiver, const char *method, bool isCustomBufferView) {
   if(!index.isValid())
     return;
   addActions(menu, QList<QModelIndex>() << index, 0, QString(), receiver, method, isCustomBufferView);
 }
 
-void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, QObject *receiver, const char *slot) {
+void ContextMenuActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, QObject *receiver, const char *slot) {
   addActions(menu, filter, msgBuffer, QString(), receiver, slot);
 }
 
-void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, const QString &chanOrNick, QObject *receiver, const char *method) {
+void ContextMenuActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, const QString &chanOrNick, QObject *receiver, const char *method) {
   if(!filter)
     return;
   addActions(menu, QList<QModelIndex>() << Client::networkModel()->bufferIndex(msgBuffer), filter, chanOrNick, receiver, method, false);
 }
 
-void NetworkModelActionProvider::addActions(QMenu *menu, const QList<QModelIndex> &indexList, QObject *receiver,  const char *method, bool isCustomBufferView) {
+void ContextMenuActionProvider::addActions(QMenu *menu, const QList<QModelIndex> &indexList, QObject *receiver,  const char *method, bool isCustomBufferView) {
   addActions(menu, indexList, 0, QString(), receiver, method, isCustomBufferView);
 }
 
 // add a list of actions sensible for the current item(s)
-void NetworkModelActionProvider::addActions(QMenu *menu,
+void ContextMenuActionProvider::addActions(QMenu *menu,
                                             const QList<QModelIndex> &indexList,
                                             MessageFilter *filter,
                                             const QString &contextItem,
@@ -244,7 +244,7 @@ void NetworkModelActionProvider::addActions(QMenu *menu,
   }
 }
 
-void NetworkModelActionProvider::addNetworkItemActions(QMenu *menu, const QModelIndex &index) {
+void ContextMenuActionProvider::addNetworkItemActions(QMenu *menu, const QModelIndex &index) {
   NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value<NetworkId>();
   if(!networkId.isValid())
     return;
@@ -261,7 +261,7 @@ void NetworkModelActionProvider::addNetworkItemActions(QMenu *menu, const QModel
 
 }
 
-void NetworkModelActionProvider::addBufferItemActions(QMenu *menu, const QModelIndex &index, bool isCustomBufferView) {
+void ContextMenuActionProvider::addBufferItemActions(QMenu *menu, const QModelIndex &index, bool isCustomBufferView) {
   BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
 
   menu->addSeparator();
@@ -298,7 +298,7 @@ void NetworkModelActionProvider::addBufferItemActions(QMenu *menu, const QModelI
   }
 }
 
-void NetworkModelActionProvider::addIrcUserActions(QMenu *menu, const QModelIndex &index) {
+void ContextMenuActionProvider::addIrcUserActions(QMenu *menu, const QModelIndex &index) {
   // this can be called: a) as a nicklist context menu (index has IrcUserItemType)
   //                     b) as a query buffer context menu (index has BufferItemType and is a QueryBufferItem)
   //                     c) right-click in a query chatview (same as b), index will be the corresponding QueryBufferItem)
@@ -325,7 +325,7 @@ void NetworkModelActionProvider::addIrcUserActions(QMenu *menu, const QModelInde
 
 /******** Helper Functions ***********************************************************************/
 
-bool NetworkModelActionProvider::checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState) {
+bool ContextMenuActionProvider::checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState) {
   if(!index.isValid())
     return false;
 
@@ -339,19 +339,19 @@ bool NetworkModelActionProvider::checkRequirements(const QModelIndex &index, Ite
   return true;
 }
 
-Action * NetworkModelActionProvider::addAction(ActionType type , QMenu *menu, const QModelIndex &index, ItemActiveStates requiredActiveState) {
+Action * ContextMenuActionProvider::addAction(ActionType type , QMenu *menu, const QModelIndex &index, ItemActiveStates requiredActiveState) {
   return addAction(action(type), menu, checkRequirements(index, requiredActiveState));
 }
 
-Action * NetworkModelActionProvider::addAction(Action *action , QMenu *menu, const QModelIndex &index, ItemActiveStates requiredActiveState) {
+Action * ContextMenuActionProvider::addAction(Action *action , QMenu *menu, const QModelIndex &index, ItemActiveStates requiredActiveState) {
   return addAction(action, menu, checkRequirements(index, requiredActiveState));
 }
 
-Action * NetworkModelActionProvider::addAction(ActionType type , QMenu *menu, bool condition) {
+Action * ContextMenuActionProvider::addAction(ActionType type , QMenu *menu, bool condition) {
   return addAction(action(type), menu, condition);
 }
 
-Action * NetworkModelActionProvider::addAction(Action *action , QMenu *menu, bool condition) {
+Action * ContextMenuActionProvider::addAction(Action *action , QMenu *menu, bool condition) {
   if(condition) {
     menu->addAction(action);
     action->setVisible(true);
@@ -361,21 +361,21 @@ Action * NetworkModelActionProvider::addAction(Action *action , QMenu *menu, boo
   return action;
 }
 
-void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, BufferId bufferId) {
+void ContextMenuActionProvider::addHideEventsMenu(QMenu *menu, BufferId bufferId) {
   if(BufferSettings(bufferId).hasFilter())
     addHideEventsMenu(menu, BufferSettings(bufferId).messageFilter());
   else
     addHideEventsMenu(menu);
 }
 
-void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, MessageFilter *msgFilter) {
+void ContextMenuActionProvider::addHideEventsMenu(QMenu *menu, MessageFilter *msgFilter) {
   if(BufferSettings(msgFilter->idString()).hasFilter())
     addHideEventsMenu(menu, BufferSettings(msgFilter->idString()).messageFilter());
   else
     addHideEventsMenu(menu);
 }
 
-void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, int filter) {
+void ContextMenuActionProvider::addHideEventsMenu(QMenu *menu, int filter) {
   action(HideApplyToAll)->setEnabled(filter != -1);
   action(HideUseDefaults)->setEnabled(filter != -1);
   if(filter == -1)
@@ -391,7 +391,7 @@ void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, int filter) {
   menu->addAction(_hideEventsMenuAction);
 }
 
-QString NetworkModelActionProvider::nickName(const QModelIndex &index) const {
+QString ContextMenuActionProvider::nickName(const QModelIndex &index) const {
   IrcUser *ircUser = qobject_cast<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
   if(ircUser)
     return ircUser->nick();
@@ -405,7 +405,7 @@ QString NetworkModelActionProvider::nickName(const QModelIndex &index) const {
   return bufferInfo.bufferName(); // FIXME this might break with merged queries maybe
 }
 
-BufferId NetworkModelActionProvider::findQueryBuffer(const QModelIndex &index, const QString &predefinedNick) const {
+BufferId ContextMenuActionProvider::findQueryBuffer(const QModelIndex &index, const QString &predefinedNick) const {
   NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value<NetworkId>();
   if(!networkId.isValid())
     return BufferId();
@@ -417,11 +417,11 @@ BufferId NetworkModelActionProvider::findQueryBuffer(const QModelIndex &index, c
   return findQueryBuffer(networkId, nick);
 }
 
-BufferId NetworkModelActionProvider::findQueryBuffer(NetworkId networkId, const QString &nick) const {
+BufferId ContextMenuActionProvider::findQueryBuffer(NetworkId networkId, const QString &nick) const {
   return Client::networkModel()->bufferId(networkId, nick);
 }
 
-void NetworkModelActionProvider::handleExternalAction(ActionType type, QAction *action) {
+void ContextMenuActionProvider::handleExternalAction(ActionType type, QAction *action) {
   Q_UNUSED(type);
   if(_receiver && _method) {
     if(!QMetaObject::invokeMethod(_receiver, _method, Q_ARG(QAction *, action)))
@@ -431,7 +431,7 @@ void NetworkModelActionProvider::handleExternalAction(ActionType type, QAction *
 
 /******** Handle Actions *************************************************************************/
 
-void NetworkModelActionProvider::actionTriggered(QAction *action) {
+void ContextMenuActionProvider::actionTriggered(QAction *action) {
   ActionType type = (ActionType)action->data().toInt();
   if(type > 0) {
     if(type & NetworkMask)
@@ -454,7 +454,7 @@ void NetworkModelActionProvider::actionTriggered(QAction *action) {
   _receiver = 0;
 }
 
-void NetworkModelActionProvider::handleNetworkAction(ActionType type, QAction *) {
+void ContextMenuActionProvider::handleNetworkAction(ActionType type, QAction *) {
   if(!_indexList.count())
     return;
   const Network *network = Client::network(_indexList.at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>());
@@ -474,7 +474,7 @@ void NetworkModelActionProvider::handleNetworkAction(ActionType type, QAction *)
   }
 }
 
-void NetworkModelActionProvider::handleBufferAction(ActionType type, QAction *) {
+void ContextMenuActionProvider::handleBufferAction(ActionType type, QAction *) {
   if(type == BufferRemove) {
     removeBuffers(_indexList);
   } else {
@@ -504,7 +504,7 @@ void NetworkModelActionProvider::handleBufferAction(ActionType type, QAction *)
   }
 }
 
-void NetworkModelActionProvider::removeBuffers(const QModelIndexList &indexList) {
+void ContextMenuActionProvider::removeBuffers(const QModelIndexList &indexList) {
   QList<BufferInfo> inactive;
   foreach(QModelIndex index, indexList) {
     BufferInfo info = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
@@ -532,21 +532,21 @@ void NetworkModelActionProvider::removeBuffers(const QModelIndexList &indexList)
   }
 }
 
-void NetworkModelActionProvider::handleHideAction(ActionType type, QAction *action) {
+void ContextMenuActionProvider::handleHideAction(ActionType type, QAction *action) {
   Q_UNUSED(action)
 
   int filter = 0;
-  if(NetworkModelActionProvider::action(HideJoin)->isChecked())
+  if(ContextMenuActionProvider::action(HideJoin)->isChecked())
     filter |= Message::Join;
-  if(NetworkModelActionProvider::action(HidePart)->isChecked())
+  if(ContextMenuActionProvider::action(HidePart)->isChecked())
     filter |= Message::Part;
-  if(NetworkModelActionProvider::action(HideQuit)->isChecked())
+  if(ContextMenuActionProvider::action(HideQuit)->isChecked())
     filter |= Message::Quit;
-  if(NetworkModelActionProvider::action(HideNick)->isChecked())
+  if(ContextMenuActionProvider::action(HideNick)->isChecked())
     filter |= Message::Nick;
-  if(NetworkModelActionProvider::action(HideMode)->isChecked())
+  if(ContextMenuActionProvider::action(HideMode)->isChecked())
     filter |= Message::Mode;
-  if(NetworkModelActionProvider::action(HideDayChange)->isChecked())
+  if(ContextMenuActionProvider::action(HideDayChange)->isChecked())
     filter |= Message::DayChange;
 
   switch(type) {
@@ -586,7 +586,7 @@ void NetworkModelActionProvider::handleHideAction(ActionType type, QAction *acti
   };
 }
 
-void NetworkModelActionProvider::handleGeneralAction(ActionType type, QAction *action) {
+void ContextMenuActionProvider::handleGeneralAction(ActionType type, QAction *action) {
   Q_UNUSED(action)
 
   if(!_indexList.count())
@@ -620,7 +620,7 @@ void NetworkModelActionProvider::handleGeneralAction(ActionType type, QAction *a
   }
 }
 
-void NetworkModelActionProvider::handleNickAction(ActionType type, QAction *) {
+void ContextMenuActionProvider::handleNickAction(ActionType type, QAction *) {
   foreach(QModelIndex index, _indexList) {
     NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value<NetworkId>();
     if(!networkId.isValid())
similarity index 94%
rename from src/uisupport/networkmodelactionprovider.h
rename to src/uisupport/contextmenuactionprovider.h
index 688a8fc..8cd519f 100644 (file)
 #include "action.h"
 #include "actioncollection.h"
 #include "messagefilter.h"
-#include "quasselui.h"
 
-class NetworkModelActionProvider : public AbstractActionProvider {
+class ContextMenuActionProvider : public QObject {
   Q_OBJECT
 
 public:
-  NetworkModelActionProvider(QObject *parent = 0);
-  ~NetworkModelActionProvider();
+  ContextMenuActionProvider(QObject *parent = 0);
+  ~ContextMenuActionProvider();
 
   // don't change enums without doublechecking masks etc. in code
   enum ActionType {
@@ -177,6 +176,6 @@ private:
 };
 
 // inlines
-ActionCollection *NetworkModelActionProvider::actionCollection() const { return _actionCollection; }
-Action *NetworkModelActionProvider::action(ActionType type) const { return _actionByType.value(type, 0); }
+ActionCollection *ContextMenuActionProvider::actionCollection() const { return _actionCollection; }
+Action *ContextMenuActionProvider::action(ActionType type) const { return _actionByType.value(type, 0); }
 #endif
diff --git a/src/uisupport/graphicalui.cpp b/src/uisupport/graphicalui.cpp
new file mode 100644 (file)
index 0000000..db52686
--- /dev/null
@@ -0,0 +1,33 @@
+/***************************************************************************
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#include "graphicalui.h"
+
+#include "contextmenuactionprovider.h"
+
+ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0;
+
+GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) {
+
+}
+
+void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider *provider) {
+  _contextMenuActionProvider = provider;
+}
diff --git a/src/uisupport/graphicalui.h b/src/uisupport/graphicalui.h
new file mode 100644 (file)
index 0000000..55dfd06
--- /dev/null
@@ -0,0 +1,48 @@
+/***************************************************************************
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef GRAPHICALUI_H_
+#define GRAPHICALUI_H_
+
+#include "abstractui.h"
+
+class ContextMenuActionProvider;
+
+class GraphicalUi : public AbstractUi {
+  Q_OBJECT
+
+public:
+  GraphicalUi(QObject *parent = 0);
+
+  inline static ContextMenuActionProvider *contextMenuActionProvider();
+
+protected:
+  void setContextMenuActionProvider(ContextMenuActionProvider *);
+
+private:
+  static ContextMenuActionProvider *_contextMenuActionProvider;
+
+};
+
+ContextMenuActionProvider *GraphicalUi::contextMenuActionProvider() {
+  return _contextMenuActionProvider;
+}
+
+#endif
index d6ced9b..98fbee3 100644 (file)
 
 #include "buffermodel.h"
 #include "client.h"
+#include "contextmenuactionprovider.h"
+#include "graphicalui.h"
+#include "nickview.h"
 #include "nickviewfilter.h"
 #include "networkmodel.h"
-#include "quasselui.h"
 #include "types.h"
 #include "uisettings.h"
 
@@ -104,7 +106,7 @@ void NickView::showContextMenu(const QPoint & pos ) {
   indexList.prepend(index);
 
   QMenu contextMenu(this);
-  Client::mainUi()->actionProvider()->addActions(&contextMenu, indexList);
+  GraphicalUi::contextMenuActionProvider()->addActions(&contextMenu, indexList);
   contextMenu.exec(QCursor::pos());
 }