X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fquasselui.h;h=a1b45c74e835caf21eb133c7f2bb796fd3504091;hp=327c37f6e812c86a2aad8adb5aeafdd5514e061f;hb=e94adb7dab9f1dfcb9f792912a365e6c72728d82;hpb=902c95728306e5ba115de84800fc8d5d239c9d62 diff --git a/src/client/quasselui.h b/src/client/quasselui.h index 327c37f6..a1b45c74 100644 --- a/src/client/quasselui.h +++ b/src/client/quasselui.h @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel IRC Development Team * + * 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) any later version. * + * (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 * @@ -18,31 +18,33 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _QUASSELUI_H_ -#define _QUASSELUI_H_ +#ifndef QUASSELUI_H +#define QUASSELUI_H #include #include "message.h" -class AbstractUiMsg { - - public: - virtual ~AbstractUiMsg() {}; - virtual QString sender() const = 0; - virtual QString text() const = 0; - virtual MsgId msgId() const = 0; - virtual BufferInfo bufferInfo() const = 0; - virtual QDateTime timeStamp() const = 0; - -}; +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 AbstractUiMsg *layoutMsg(const Message &) = 0; + 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; } protected slots: virtual void connectedToCore() {} @@ -52,8 +54,28 @@ class AbstractUi : public QObject { void connectToCore(const QVariantMap &connInfo); 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 &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