#include "quasselui.h"
ChatView::ChatView(Buffer *buf, QWidget *parent) : QGraphicsView(parent), AbstractChatView() {
- setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- setOptimizationFlags(QGraphicsView::DontClipPainter
- |QGraphicsView::DontSavePainterState
- |QGraphicsView::DontAdjustForAntialiasing);
- setAlignment(Qt::AlignBottom);
-
QList<BufferId> filterList;
filterList.append(buf->bufferInfo().bufferId());
MessageFilter *filter = new MessageFilter(Client::messageModel(), filterList, this);
+ init(filter);
- _scene = new ChatScene(filter, this);
- connect(_scene, SIGNAL(heightChanged(int)), this, SLOT(sceneHeightChanged(int)));
- setScene(_scene);
}
+ChatView::ChatView(MessageFilter *filter, QWidget *parent) : QGraphicsView(parent), AbstractChatView() {
+ init(filter);
+}
+
+void ChatView::init(MessageFilter *filter) {
+ setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ setAlignment(Qt::AlignBottom);
+ setInteractive(true);
+
+ _scene = new ChatScene(filter, filter->idString(), this);
+ connect(_scene, SIGNAL(heightChanged(qreal)), this, SLOT(sceneHeightChanged(qreal)));
+ setScene(_scene);
+}
ChatView::~ChatView() {
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
}
-void ChatView::sceneHeightChanged(int h) {
+void ChatView::sceneHeightChanged(qreal h) {
+ Q_UNUSED(h)
bool scrollable = verticalScrollBar()->value() == verticalScrollBar()->maximum();
setSceneRect(scene()->sceneRect());
if(scrollable) verticalScrollBar()->setValue(verticalScrollBar()->maximum());