X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatlinemodelitem.h;h=2ff8d4e9ae8971c7d1b99427881a85c8bc416b43;hb=c65cdada4836f01fe920b09c7fc861cb70c09ac7;hp=9fe4b8bc1c88af5a1fc31e91cbe47cdd7c07cc6e;hpb=5199330f0b249b20c27cd372d995909f97433786;p=quassel.git diff --git a/src/qtui/chatlinemodelitem.h b/src/qtui/chatlinemodelitem.h index 9fe4b8bc..2ff8d4e9 100644 --- a/src/qtui/chatlinemodelitem.h +++ b/src/qtui/chatlinemodelitem.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CHATLINEMODELITEM_H_ @@ -25,29 +25,49 @@ #include "uistyle.h" -class ChatLineModelItem : public MessageModelItem { +class ChatLineModelItem : public MessageModelItem +{ public: - ChatLineModelItem(const Message &); + ChatLineModelItem(const Message &); - virtual QVariant data(int column, int role) const; + virtual QVariant data(int column, int role) const; + virtual bool setData(int column, const QVariant &value, int role); - 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 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 inline void invalidateWrapList() { _wrapList.clear(); } + + /// 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: - QVariant timestampData(int role) const; - QVariant senderData(int role) const; - QVariant contentsData(int role) const; + QVariant timestampData(int role) const; + QVariant senderData(int role) const; + QVariant contentsData(int role) const; + + QVariant backgroundBrush(UiStyle::FormatType subelement, bool selected = false) const; + quint32 messageLabel() const; - QVariant backgroundBrush(UiStyle::FormatType subelement, bool selected = false) const; - quint32 messageLabel() const; + void computeWrapList() const; - UiStyle::StyledMessage _styledMsg; + mutable WrapList _wrapList; + UiStyle::StyledMessage _styledMsg; + + static unsigned char *TextBoundaryFinderBuffer; + static int TextBoundaryFinderBufferSize; }; + #endif