Fixes #913 - Core backlog download does not start until main window is unhidden
[quassel.git] / src / client / clientbacklogmanager.h
index 0762edf..f4a7b90 100644 (file)
@@ -27,6 +27,7 @@
 class BacklogRequester;
 
 class ClientBacklogManager : public BacklogManager {
+  SYNCABLE_OBJECT
   Q_OBJECT
 
 public:
@@ -38,13 +39,14 @@ public:
   void reset();
 
 public slots:
+  virtual QVariantList requestBacklog(BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1, int additional = 0);
   virtual void receiveBacklog(BufferId bufferId, MsgId first, MsgId last, int limit, int additional, QVariantList msgs);
   virtual void receiveBacklogAll(MsgId first, MsgId last, int limit, int additional, QVariantList msgs);
 
   void requestInitialBacklog();
 
   void checkForBacklog(BufferId bufferId);
-  void checkForBacklog(const QList<BufferId> &bufferIds);
+  void checkForBacklog(const BufferIdList &bufferIds);
 
 signals:
   void messagesReceived(BufferId bufferId, int count) const;
@@ -55,12 +57,18 @@ signals:
 
 private:
   bool isBuffering();
-  void stopBuffering();
+  BufferIdList filterNewBufferIds(const BufferIdList &bufferIds);
 
   void dispatchMessages(const MessageList &messages, bool sort = false);
 
   BacklogRequester *_requester;
-  QSet<BufferId> _backlogReceived;
+  bool _initBacklogRequested;
+  QSet<BufferId> _buffersRequested;
 };
 
+// inlines
+inline void ClientBacklogManager::checkForBacklog(BufferId bufferId) {
+  checkForBacklog(BufferIdList() << bufferId);
+}
+
 #endif // CLIENTBACKLOGMANAGER_H