X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fmessagemodel.h;h=ee0e79ec3a77d624747ef8df1b417379e146f149;hb=6a590134d0ceca46e83a6b5b24e44550b68e9b4b;hp=cc61c4f6ad9e11e9de275b1a68235abd50fce056;hpb=756158351d58ce25857f52589f5f8c42236a1c27;p=quassel.git diff --git a/src/client/messagemodel.h b/src/client/messagemodel.h index cc61c4f6..ee0e79ec 100644 --- a/src/client/messagemodel.h +++ b/src/client/messagemodel.h @@ -70,13 +70,25 @@ public: protected: virtual MessageModelItem *createMessageModelItem(const Message &) = 0; + virtual void customEvent(QEvent *event); -private: - QList _messageList; +private slots: + void changeOfDay(); +private: + void insertMessageGroup(const QList &); + 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; }; +// ************************************************** +// MessageModelItem +// ************************************************** class MessageModelItem { public: //! Creates a MessageModelItem from a Message object. @@ -96,6 +108,12 @@ public: inline Message::Type msgType() const { return _type; } inline Message::Flags msgFlags() const { return _flags; } + // For sorting + bool operator<(const MessageModelItem &) const; + bool operator==(const MessageModelItem &) const; + bool operator>(const MessageModelItem &) const; + static bool lessThan(const MessageModelItem *m1, const MessageModelItem *m2); + private: QDateTime _timestamp; MsgId _msgId; @@ -104,4 +122,6 @@ private: Message::Flags _flags; }; +QDebug operator<<(QDebug dbg, const MessageModelItem &msgItem); + #endif