Standard Roles should be the same in MessageModel and in Qt
[quassel.git] / src / client / messagemodel.h
index afbe89f..c381f0f 100644 (file)
 #include "message.h"
 #include "types.h"
 
-class MessageItem;
-class MsgId;
+class MessageModelItem;
+struct MsgId;
 
 class MessageModel : public QAbstractItemModel {
   Q_OBJECT
 
   public:
     enum MessageRole {
+      DisplayRole = Qt::DisplayRole,
+      EditRole = Qt::EditRole,
       MsgIdRole = Qt::UserRole,
       BufferIdRole,
       TypeRole,
       FlagsRole,
       TimestampRole,
-      DisplayRole,
       FormatRole,
+      ColumnTypeRole,
       UserRole
     };
 
     enum ColumnType {
-      TimestampColumn, SenderColumn, TextColumn, UserColumnType
+      TimestampColumn, SenderColumn, ContentsColumn, UserColumnType
     };
 
     MessageModel(QObject *parent);
@@ -62,30 +64,32 @@ class MessageModel : public QAbstractItemModel {
 
     //virtual Qt::ItemFlags flags(const QModelIndex &index) const;
 
-    void insertMessage(const Message &);
+    bool insertMessage(const Message &, bool fakeMsg = false);
     void insertMessages(const QList<Message> &);
 
+    void clear();
+
   protected:
-    virtual MessageItem *createMessageItem(const Message &) = 0;
+    virtual MessageModelItem *createMessageModelItem(const Message &) = 0;
 
   private:
-    QList<MessageItem *> _messageList;
+    QList<MessageModelItem *> _messageList;
 
     int indexForId(MsgId);
 
 };
 
-class MessageItem {
+class MessageModelItem {
 
   public:
 
-    //! Creates a MessageItem from a Message object.
+    //! 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).
      */
-    MessageItem(const Message &);
-    virtual ~MessageItem();
+    MessageModelItem(const Message &);
+    virtual ~MessageModelItem();
 
     virtual QVariant data(int column, int role) const;
     virtual bool setData(int column, const QVariant &value, int role) = 0;