X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fmessagemodel.h;h=d37100cd0d18a17680c8e61b752538d24bbae5e7;hb=dbdca302fc349d0e3d46aa0d8091c08b2df28af5;hp=1a41f264ed74849978065d99c392badbe8cc98ca;hpb=ef12cc4010e853348474b4ea15c383dd596d4858;p=quassel.git diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index 1a41f264..d37100cd 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -22,24 +22,33 @@ #define MESSAGEMODEL_H_ #include +#include -class Message; -class MessageItem; +#include "message.h" +#include "types.h" + +class MessageModelItem; class MsgId; class MessageModel : public QAbstractItemModel { Q_OBJECT public: - enum MessageRoles { + enum MessageRole { MsgIdRole = Qt::UserRole, BufferIdRole, TypeRole, FlagsRole, TimestampRole, + DisplayRole, + FormatRole, UserRole }; + enum ColumnType { + TimestampColumn, SenderColumn, TextColumn, UserColumnType + }; + MessageModel(QObject *parent); virtual ~MessageModel(); @@ -57,25 +66,36 @@ 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: - 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 = 0; + virtual QVariant data(int column, int role) const; virtual bool setData(int column, const QVariant &value, int role) = 0; + private: + QDateTime _timestamp; + MsgId _msgId; + BufferId _bufferId; + Message::Type _type; + Message::Flags _flags; }; #endif