X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fquasselui.h;h=372df3c6c55cb33056cc806125e72838d8955e98;hp=dac64be7a9c824002bbea81a8c7ce7b9773cc3a9;hb=2bb25e1fbdb848b76790fe060094fb62f28e65a1;hpb=533eaaeda64759c01daa624365b8fc63eeba5ccf diff --git a/src/client/quasselui.h b/src/client/quasselui.h index dac64be7..372df3c6 100644 --- a/src/client/quasselui.h +++ b/src/client/quasselui.h @@ -24,19 +24,27 @@ #include #include "message.h" +class MessageFilter; class MessageModel; class AbstractMessageProcessor; +class AbstractActionProvider; + +class QAction; +class QMenu; class AbstractUi : public QObject { Q_OBJECT public: + AbstractUi(); + virtual ~AbstractUi() {}; virtual void init() {}; // 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; } + inline static bool isVisible() { return _visible; } + inline static void setVisible(bool visible) { _visible = visible; } protected slots: virtual void connectedToCore() {} @@ -46,8 +54,28 @@ class AbstractUi : public QObject { void connectToCore(const QVariantMap &connInfo); void disconnectFromCore(); -private: - static bool _visible; + 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 &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