X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fmessagemodel.h;h=c7c975d81570e0dadd4bbf760be97d1802f26f9a;hb=311be396946aea8c8e5416f79ca3aebd537b93b0;hp=62488cc4999bdabe3cd0f04ffdbcac31fe87a0c1;hpb=ea372dac8dda146255c7232922904e9f90a0d7f9;p=quassel.git diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index 62488cc4..c7c975d8 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -44,6 +44,7 @@ public: TimestampRole, FormatRole, ColumnTypeRole, + RedirectedToRole, UserRole }; @@ -55,7 +56,7 @@ public: inline QModelIndex index(int row, int column, const QModelIndex &/*parent*/ = QModelIndex()) const { return createIndex(row, column); } inline QModelIndex parent(const QModelIndex &) const { return QModelIndex(); } - inline int rowCount(const QModelIndex &/*parent*/ = QModelIndex()) const { return _messageList.count(); } + inline int rowCount(const QModelIndex &parent = QModelIndex()) const { return parent.isValid() ? 0 : _messageList.count(); } inline int columnCount(const QModelIndex &/*parent*/ = QModelIndex()) const { return 3; } virtual QVariant data(const QModelIndex &index, int role) const; @@ -68,15 +69,32 @@ public: void clear(); +public slots: + void requestBacklog(BufferId bufferId); + void messagesReceived(BufferId bufferId, int count); + protected: virtual MessageModelItem *createMessageModelItem(const Message &) = 0; + virtual void customEvent(QEvent *event); + +private slots: + void changeOfDay(); private: void insertMessageGroup(const QList &); - QList _messageList; + int insertMessagesGracefully(const QList &); // inserts as many contiguous msgs as possible. returns numer of inserted msgs. int indexForId(MsgId); + + QList _messageList; + QList _messageBuffer; + QTimer _dayChangeTimer; + QDateTime _nextDayChange; + QHash _messagesWaiting; }; +// ************************************************** +// MessageModelItem +// ************************************************** class MessageModelItem { public: //! Creates a MessageModelItem from a Message object. @@ -88,7 +106,7 @@ public: inline virtual ~MessageModelItem() {} virtual QVariant data(int column, int role) const; - virtual bool setData(int column, const QVariant &value, int role) = 0; + virtual bool setData(int column, const QVariant &value, int role); inline const QDateTime &timeStamp() const { return _timestamp; } inline MsgId msgId() const { return _msgId; } @@ -106,8 +124,11 @@ private: QDateTime _timestamp; MsgId _msgId; BufferId _bufferId; + BufferId _redirectedTo; Message::Type _type; Message::Flags _flags; }; +QDebug operator<<(QDebug dbg, const MessageModelItem &msgItem); + #endif