X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatlinemodelitem.h;h=5382a7b85de4554c6553f972f87745d88b6631c0;hp=b76ea68e283e0f029892f640643da172959815a8;hb=79fbcfb49f7cc92a89f0158ebac1a3006a559e8a;hpb=3197b8b309f09ac1f4db54fa8fa819e33b87383e diff --git a/src/qtui/chatlinemodelitem.h b/src/qtui/chatlinemodelitem.h index b76ea68e..5382a7b8 100644 --- a/src/qtui/chatlinemodelitem.h +++ b/src/qtui/chatlinemodelitem.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -21,33 +21,45 @@ #ifndef CHATLINEMODELITEM_H_ #define CHATLINEMODELITEM_H_ -#include -#include +#include "messagemodel.h" -#include "chatlinemodel.h" #include "uistyle.h" class ChatLineModelItem : public MessageModelItem { +public: + ChatLineModelItem(const Message &); - public: + virtual QVariant data(int column, int role) const; - ChatLineModelItem(const Message &); - //virtual ~ChatLineModelItem() {}; + virtual inline const Message &message() const { return _styledMsg; } + virtual inline const QDateTime ×tamp() const { return _styledMsg.timestamp(); } + virtual inline const MsgId &msgId() const { return _styledMsg.msgId(); } + virtual inline const BufferId &bufferId() const { return _styledMsg.bufferId(); } + virtual inline void setBufferId(BufferId bufferId) { _styledMsg.setBufferId(bufferId); } + virtual inline Message::Type msgType() const { return _styledMsg.type(); } + virtual inline Message::Flags msgFlags() const { return _styledMsg.flags(); } - virtual QVariant data(int column, int role) const; - virtual bool setData(int column, const QVariant &value, int role); + /// Used to store information about words to be used for wrapping + struct Word { + quint16 start; + qreal endX; + qreal width; + qreal trailing; + }; + typedef QVector WrapList; - private: - void computeWrapList(); - qreal snippetWidth(int start, int end, QFontMetricsF *&metrics, int &formatListIdx, int &formatEnd); +private: + virtual QVariant timestampData(int role) const; + virtual QVariant senderData(int role) const; + virtual QVariant contentsData(int role) const; - struct ChatLinePart { - QString plainText; - UiStyle::FormatList formatList; - }; - ChatLinePart _timestamp, _sender, _contents; + void computeWrapList() const; - ChatLineModel::WrapList _wrapList; + mutable WrapList _wrapList; + UiStyle::StyledMessage _styledMsg; + + static unsigned char *TextBoundaryFinderBuffer; + static int TextBoundaryFinderBufferSize; }; #endif