Fitting the SyncableObjects to the new Style
[quassel.git] / src / client / backlogrequester.h
index c3c6832..e813c6c 100644 (file)
@@ -32,28 +32,32 @@ class ClientBacklogManager;
 
 class BacklogRequester {
 public:
-  enum RequesterTypes {
+  enum RequesterType {
     InvalidRequester = 0,
     PerBufferFixed,
     PerBufferUnread,
     GlobalUnread
   };
 
-  BacklogRequester(bool buffering, ClientBacklogManager *backlogManger);
+  BacklogRequester(bool buffering, RequesterType requesterType, ClientBacklogManager *backlogManger);
   virtual inline ~BacklogRequester() {}
 
   inline bool isBuffering() { return _isBuffering; }
+  inline RequesterType type() { return _requesterType; }
   inline const QList<Message> &bufferedMessages() { return _bufferedMessages; }
 
   inline int buffersWaiting() const { return _buffersWaiting.count(); }
   inline int totalBuffers() const { return _totalBuffers; }
-  //! returns false if it was the last missing backlogpart
-  bool buffer(BufferId bufferId, const MessageList &messages);
-  
-  virtual void requestBacklog() = 0;
+
+  bool buffer(BufferId bufferId, const MessageList &messages); //! returns false if it was the last missing backlogpart
+
+  virtual void requestBacklog(const BufferIdList &bufferIds) = 0;
+  virtual inline void requestInitialBacklog() { requestBacklog(allBufferIds()); }
+
+  virtual void flushBuffer();
 
 protected:
-  inline QList<BufferId> allBufferIds() const { return Client::networkModel()->allBufferIds(); }
+  BufferIdList allBufferIds() const;
   inline void setWaitingBuffers(const QList<BufferId> &buffers) { setWaitingBuffers(buffers.toSet()); }
   void setWaitingBuffers(const QSet<BufferId> &buffers);
   void addWaitingBuffer(BufferId buffer);
@@ -62,6 +66,7 @@ protected:
 
 private:
   bool _isBuffering;
+  RequesterType _requesterType;
   MessageList _bufferedMessages;
   int _totalBuffers;
   QSet<BufferId> _buffersWaiting;
@@ -73,7 +78,7 @@ private:
 class FixedBacklogRequester : public BacklogRequester {
 public:
   FixedBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestBacklog(const BufferIdList &bufferIds);
 
 private:
   int _backlogCount;
@@ -85,7 +90,8 @@ private:
 class GlobalUnreadBacklogRequester : public BacklogRequester {
 public:
   GlobalUnreadBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestInitialBacklog();
+  virtual void requestBacklog(const BufferIdList &) {}
 
 private:
   int _limit;
@@ -98,7 +104,7 @@ private:
 class PerBufferUnreadBacklogRequester : public BacklogRequester {
 public:
   PerBufferUnreadBacklogRequester(ClientBacklogManager *backlogManager);
-  virtual void requestBacklog();
+  virtual void requestBacklog(const BufferIdList &bufferIds);
 
 private:
   int _limit;