fixing just introduced faulty backlog replay
[quassel.git] / src / client / messagemodel.h
index cc61c4f..5b756df 100644 (file)
@@ -70,13 +70,25 @@ public:
 
 protected:
   virtual MessageModelItem *createMessageModelItem(const Message &) = 0;
+  virtual void customEvent(QEvent *event);
 
-private:
-  QList<MessageModelItem *> _messageList;
+private slots:
+  void changeOfDay();
 
+private:
+  void insertMessageGroup(const QList<Message> &);
+  int insertMessagesGracefully(const QList<Message> &); // inserts as many contiguous msgs as possible. returns numer of inserted msgs.
   int indexForId(MsgId);
+
+  QList<MessageModelItem *> _messageList;
+  QList<Message> _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;