#include "client.h"
+#include "abstractmessageprocessor.h"
#include "bufferinfo.h"
#include "buffermodel.h"
#include "buffersettings.h"
_bufferViewManager(0),
_ircListHelper(new ClientIrcListHelper(this)),
_messageModel(0),
+ _messageProcessor(0),
_connectedToCore(false),
_syncedToCore(false)
{
_bufferModel = new BufferModel(_networkModel);
_messageModel = mainUi->createMessageModel(this);
+ _messageProcessor = mainUi->createMessageProcessor(this);
SignalProxy *p = signalProxy();
}
}
-void Client::recvMessage(const Message &msg_) {
- Message msg = msg_;
- checkForHighlight(msg);
- _messageModel->insertMessage(msg);
- buffer(msg.bufferInfo())->updateActivityLevel(msg);
-}
-
+// Hmm... we never used this...
void Client::recvStatusMsg(QString /*net*/, QString /*msg*/) {
//recvMessage(net, Message::server("", QString("[STATUS] %1").arg(msg)));
}
+void Client::recvMessage(const Message &msg_) {
+ Message msg = msg_;
+ messageProcessor()->process(msg);
+}
+
void Client::receiveBacklog(BufferId bufferId, const QVariantList &msgs) {
//QTime start = QTime::currentTime();
+ QList<Message> msglist;
foreach(QVariant v, msgs) {
- Message msg = v.value<Message>();
- checkForHighlight(msg);
- _messageModel->insertMessage(msg);
- buffer(msg.bufferInfo())->updateActivityLevel(msg);
+ msglist << v.value<Message>();
}
+ messageProcessor()->process(msglist);
//qDebug() << "processed" << msgs.count() << "backlog lines in" << start.msecsTo(QTime::currentTime());
}
class BufferInfo;
class Message;
class MessageModel;
+class AbstractMessageProcessor;
class Identity;
class Network;
static inline NetworkModel *networkModel() { return instance()->_networkModel; }
static inline BufferModel *bufferModel() { return instance()->_bufferModel; }
static inline MessageModel *messageModel() { return instance()->_messageModel; }
+ static inline AbstractMessageProcessor *messageProcessor() { return instance()->_messageProcessor; }
static inline SignalProxy *signalProxy() { return instance()->_signalProxy; }
static inline ClientBacklogManager *backlogManager() { return instance()->_backlogManager; }
ClientIrcListHelper *_ircListHelper;
MessageModel *_messageModel;
+ AbstractMessageProcessor *_messageProcessor;
ClientMode clientMode;
#include "message.h"
class MessageModel;
-
-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 AbstractMessageProcessor;
class AbstractUi : public QObject {
Q_OBJECT
public:
virtual void init() {}; // called after the client is initialized
- virtual MessageModel *createMessageModel(QObject *parent = 0) = 0;
- virtual AbstractUiMsg *layoutMsg(const Message &) = 0;
+ virtual MessageModel *createMessageModel(QObject *parent) = 0;
+ virtual AbstractMessageProcessor *createMessageProcessor(QObject *parent) = 0;
protected slots:
virtual void connectedToCore() {}
};
-
-
#endif
#include "chatlinemodel.h"
#include "mainwin.h"
+#include "qtuimessageprocessor.h"
QtUiStyle *QtUi::_style;
return new ChatLineModel(parent);
}
-AbstractUiMsg *QtUi::layoutMsg(const Message &msg) {
- return 0; // FIXME obsolete?
+AbstractMessageProcessor *QtUi::createMessageProcessor(QObject *parent) {
+ return new QtUiMessageProcessor(parent);
}
void QtUi::connectedToCore() {
class MainWin;
class MessageModel;
+class QtUiMessageProcessor;
//! This class encapsulates Quassel's Qt-based GUI.
/** This is basically a wrapper around MainWin, which is necessary because we cannot derive MainWin
QtUi();
~QtUi();
//void init();
- MessageModel *createMessageModel(QObject *parent = 0);
- AbstractUiMsg *layoutMsg(const Message &);
+ MessageModel *createMessageModel(QObject *parent);
+ AbstractMessageProcessor *createMessageProcessor(QObject *parent);
static QtUiStyle *style();