+ inline bool isMarkerLineVisible() const { return _markerLineVisible; }
+ inline ChatLine *markedLine() const { return _markedLine; }
+
+ //! Tell the view that this ChatLine has cached data
+ /** ChatLines cache some layout data that should be cleared as soon as it's no
+ * longer visible. A ChatLine caching data registers itself with this method to
+ * tell the view about it. The view will call ChatLine::clearCache() when
+ * appropriate.
+ * \param line The ChatLine having cached data
+ */
+ void setHasCache(ChatLine *line, bool hasCache = true);
+
+public slots:
+ inline virtual void clear() {}
+ void zoomIn();
+ void zoomOut();
+ void zoomOriginal();
+
+ void setMarkerLineVisible(bool visible = true);
+ void setMarkedLine(ChatLine *line);
+
+protected:
+ virtual bool event(QEvent *event);
+ virtual void resizeEvent(QResizeEvent *event);
+ virtual void scrollContentsBy(int dx, int dy);
+
+protected slots:
+ virtual void verticalScrollbarChanged(int);
+
+private slots:
+ void lastLineChanged(QGraphicsItem *chatLine, qreal offset);
+ void adjustSceneRect();
+ void checkChatLineCaches();
+ void mouseMoveWhileSelecting(const QPointF &scenePos);
+ void scrollTimerTimeout();
+ void invalidateFilter();
+ void markerLineSet(BufferId buffer, MsgId msg);
+
+private:
+ void init(MessageFilter *filter);
+
+ AbstractBufferContainer *_bufferContainer;
+ ChatScene *_scene;
+ int _lastScrollbarPos;
+ qreal _currentScaleFactor;
+ QTimer _scrollTimer;
+ int _scrollOffset;
+ bool _invalidateFilter;
+ bool _markerLineVisible;
+ ChatLine *_markedLine;
+ QSet<ChatLine *> _linesWithCache;