ChatView now uses MessageFilter to display only messages for its buffer.
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 22 May 2008 19:09:14 +0000 (19:09 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 22 May 2008 19:09:14 +0000 (19:09 +0000)
QSortFilterProxyModel goodness! \o/

src/qtui/chatscene.cpp
src/qtui/chatscene.h
src/qtui/chatview.cpp

index 73d0bc8..10ebfc7 100644 (file)
@@ -27,7 +27,7 @@
 #include "chatscene.h"
 #include "quasselui.h"
 
-ChatScene::ChatScene(MessageModel *model, QObject *parent) : QGraphicsScene(parent), _model(model) {
+ChatScene::ChatScene(QAbstractItemModel *model, QObject *parent) : QGraphicsScene(parent), _model(model) {
   _width = 0;
   _timestampWidth = 60;
   _senderWidth = 80;
index a0bcefc..5f8057a 100644 (file)
 #ifndef _CHATSCENE_H_
 #define _CHATSCENE_H_
 
+#include <QAbstractItemModel>
 #include <QGraphicsScene>
 
-#include "messagemodel.h"
-
 class AbstractUiMsg;
 class Buffer;
 class ChatItem;
@@ -35,11 +34,11 @@ class ChatScene : public QGraphicsScene {
   Q_OBJECT
 
   public:
-    ChatScene(MessageModel *model, QObject *parent);
+    ChatScene(QAbstractItemModel *model, QObject *parent);
     virtual ~ChatScene();
 
     Buffer *buffer() const;
-    inline MessageModel *model() const { return _model; }
+    inline QAbstractItemModel *model() const { return _model; }
 
   public slots:
     void setWidth(int);
@@ -54,7 +53,7 @@ class ChatScene : public QGraphicsScene {
   private:
     int _width, _height;
     int _timestampWidth, _senderWidth;
-    MessageModel *_model;
+    QAbstractItemModel *_model;
     QList<ChatLine *> _lines;
 
 };
index a458254..59b5681 100644 (file)
@@ -25,6 +25,7 @@
 #include "chatscene.h"
 #include "chatview.h"
 #include "client.h"
+#include "messagefilter.h"
 #include "quasselui.h"
 
 ChatView::ChatView(Buffer *buf, QWidget *parent) : QGraphicsView(parent), AbstractChatView() {
@@ -32,9 +33,13 @@ ChatView::ChatView(Buffer *buf, QWidget *parent) : QGraphicsView(parent), Abstra
   setOptimizationFlags(QGraphicsView::DontClipPainter
       |QGraphicsView::DontSavePainterState
       |QGraphicsView::DontAdjustForAntialiasing);
-  _scene = new ChatScene(Client::messageModel(), this);
+
+  QList<BufferId> filterList;
+  filterList.append(buf->bufferInfo().bufferId());
+  MessageFilter *filter = new MessageFilter(Client::messageModel(), filterList, this);
+
+  _scene = new ChatScene(filter, this);
   connect(_scene, SIGNAL(heightChanged(int)), this, SLOT(sceneHeightChanged(int)));
-  //_scene->setWidth(width());
   setScene(_scene);
   setSceneRect(0, 0, width(), 0);
 
@@ -52,7 +57,6 @@ ChatScene *ChatView::scene() const {
 
 void ChatView::resizeEvent(QResizeEvent *event) {
   scene()->setWidth(event->size().width());
-  qDebug() << "resize";
 }
 
 void ChatView::sceneHeightChanged(int h) {