X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fqtui%2Fchatscene.h;h=c4a8b0157cea635e8d9a26454403ce2084f9fa45;hb=6e73ba4a19fd92038e1ea749125767661fb34e27;hp=3daf861bb82e5356da0564897a9ee2a0c6f15dd7;hpb=57982f5802c957e768ce842888591115694fcbef;p=quassel.git diff --git a/src/qtui/chatscene.h b/src/qtui/chatscene.h index 3daf861b..c4a8b015 100644 --- a/src/qtui/chatscene.h +++ b/src/qtui/chatscene.h @@ -36,6 +36,7 @@ class ChatItem; class ChatLine; class ChatView; class ColumnHandleItem; +class MarkerLineItem; class WebPreviewItem; class QGraphicsSceneMouseEvent; @@ -57,7 +58,8 @@ public: ContentsChatItemType, SearchHighlightType, WebPreviewType, - ColumnHandleType + ColumnHandleType, + MarkerLineType }; enum ClickMode { @@ -88,11 +90,13 @@ public: //! Find the ChatLine belonging to a MsgId /** Searches for the ChatLine belonging to a MsgId. * Note that this method performs a binary search, hence it has as complexity of O(log n). - * If there is more than one ChatLine for the given ID, the first one will be returned. - * \param msgId The message ID to look for + * If matchExact is false, and we don't have an exact match for the given msgId, we return the visible line right + * above the requested one. + * \param msgId The message ID to look for + * \param matchExact Whether we find only exact matches * \return The ChatLine corresponding to the given MsgId */ - ChatLine *chatLine(MsgId msgId) const; + ChatLine *chatLine(MsgId msgId, bool matchExact = true) const; inline ChatLine *lastLine() const { return _lines.count() ? _lines.last() : 0; } @@ -122,6 +126,9 @@ public: void setWidth(qreal width); void layout(int start, int end, qreal width); + void setMarkerLineVisible(bool visible = true); + void setMarkerLine(MsgId msgId); + // these are used by the chatitems to notify the scene and manage selections void setSelectingItem(ChatItem *item); ChatItem *selectingItem() const { return _selectingItem; } @@ -164,6 +171,8 @@ private slots: #endif void showWebPreviewChanged(); + void rowsRemoved(); + void clickTimeout(); private: @@ -185,6 +194,9 @@ private: void updateSceneRect(const QRectF &rect); qreal _viewportHeight; + MarkerLineItem *_markerLine; + bool _markerLineValid, _markerLineVisible; + ColumnHandleItem *_firstColHandle, *_secondColHandle; qreal _firstColHandlePos, _secondColHandlePos; CutoffMode _cutoffMode;