X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fmessagemodel.h;h=2439d1e0f5fe76bc3ff39cd1fd91821291e285e7;hp=5da8309dcb2c4fb74e70ed0b213779ca3002466d;hb=d8d9cc49774faf66170790ea687c37584e5e7a51;hpb=86831c8857f0a729580cee547e10c9621d50c780 diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index 5da8309d..2439d1e0 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -34,10 +34,12 @@ class MessageModel : public QAbstractItemModel { Q_OBJECT public: - enum MessageRole { + enum MessageModelRole { DisplayRole = Qt::DisplayRole, EditRole = Qt::EditRole, - MsgIdRole = Qt::UserRole, + BackgroundRole = Qt::BackgroundRole, + MessageRole = Qt::UserRole, + MsgIdRole, BufferIdRole, TypeRole, FlagsRole, @@ -54,7 +56,7 @@ public: MessageModel(QObject *parent); - inline QModelIndex index(int row, int column, const QModelIndex &/*parent*/ = QModelIndex()) const { return createIndex(row, column); } + inline QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; inline QModelIndex parent(const QModelIndex &) const { return QModelIndex(); } inline int rowCount(const QModelIndex &parent = QModelIndex()) const { return parent.isValid() ? 0 : messageCount(); } inline int columnCount(const QModelIndex &/*parent*/ = QModelIndex()) const { return 3; } @@ -69,10 +71,14 @@ public: void clear(); +signals: + void finishedBacklogFetch(BufferId bufferId); + public slots: void requestBacklog(BufferId bufferId); void messagesReceived(BufferId bufferId, int count); void buffersPermanentlyMerged(BufferId bufferId1, BufferId bufferId2); + void insertErrorMessage(BufferInfo bufferInfo, const QString &errorString); protected: // virtual MessageModelItem *createMessageModelItem(const Message &) = 0; @@ -108,6 +114,14 @@ private: QHash _messagesWaiting; }; +// inlines +QModelIndex MessageModel::index(int row, int column, const QModelIndex &parent) const { + if(row < 0 || row >= rowCount(parent) || column < 0 || column >= columnCount(parent)) + return QModelIndex(); + + return createIndex(row, column); +} + // ************************************************** // MessageModelItem // ************************************************** @@ -118,19 +132,19 @@ public: * Subclasses need to provide Qt::DisplayRole at least, which should describe the plaintext * strings without formattings (e.g. for searching purposes). */ - MessageModelItem(const Message &); + MessageModelItem() {} inline virtual ~MessageModelItem() {} virtual QVariant data(int column, int role) const; virtual bool setData(int column, const QVariant &value, int role); - inline const Message &message() const { return _msg; } - inline const QDateTime ×tamp() const { return _msg.timestamp(); } - inline const MsgId &msgId() const { return _msg.msgId(); } - inline const BufferId &bufferId() const { return _msg.bufferId(); } - inline void setBufferId(BufferId bufferId) { _msg.setBufferId(bufferId); } - inline Message::Type msgType() const { return _msg.type(); } - inline Message::Flags msgFlags() const { return _msg.flags(); } + virtual const Message &message() const = 0; + virtual const QDateTime ×tamp() const = 0; + virtual const MsgId &msgId() const = 0; + virtual const BufferId &bufferId() const = 0; + virtual void setBufferId(BufferId bufferId) = 0; + virtual Message::Type msgType() const = 0; + virtual Message::Flags msgFlags() const = 0; // For sorting bool operator<(const MessageModelItem &) const; @@ -139,7 +153,6 @@ public: static bool lessThan(const MessageModelItem *m1, const MessageModelItem *m2); private: - Message _msg; BufferId _redirectedTo; };