X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fmessagemodel.h;h=f6e2538fced0ff04bccde66b701930b6277409a4;hp=336c07eb622959a785f9def3667dd9fe96c4160a;hb=3a9668461efb05bd5b24ba5eb741a7f7f75086c9;hpb=f3fc0324c8860dff6af722dafbeb05fcb69a0c41 diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index 336c07eb..f6e2538f 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -27,22 +27,29 @@ #include "message.h" #include "types.h" -class MessageItem; +class MessageModelItem; class MsgId; class MessageModel : public QAbstractItemModel { Q_OBJECT public: - enum MessageRoles { + enum MessageRole { MsgIdRole = Qt::UserRole, BufferIdRole, TypeRole, FlagsRole, TimestampRole, + DisplayRole, + FormatRole, + ColumnTypeRole, UserRole }; + enum ColumnType { + TimestampColumn, SenderColumn, ContentsColumn, UserColumnType + }; + MessageModel(QObject *parent); virtual ~MessageModel(); @@ -60,24 +67,26 @@ class MessageModel : public QAbstractItemModel { void insertMessages(const QList &); protected: - virtual MessageItem *createMessageItem(const Message &) = 0; + virtual MessageModelItem *createMessageModelItem(const Message &) = 0; private: - QList _messageList; + QList _messageList; int indexForId(MsgId); }; -class MessageItem { +class MessageModelItem { public: - enum { - TimestampColumn, SenderColumn, TextColumn - }; - MessageItem(const Message &); - virtual ~MessageItem(); + //! Creates a MessageModelItem from a Message object. + /** This baseclass implementation takes care of all Message data *except* the stylable strings. + * Subclasses need to provide Qt::DisplayRole at least, which should describe the plaintext + * strings without formattings (e.g. for searching purposes). + */ + MessageModelItem(const Message &); + virtual ~MessageModelItem(); virtual QVariant data(int column, int role) const; virtual bool setData(int column, const QVariant &value, int role) = 0;