Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
clientbacklogmanager.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 by the Quassel Project *
3  * devel@quassel-irc.org *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) version 3. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 
21 #ifndef CLIENTBACKLOGMANAGER_H
22 #define CLIENTBACKLOGMANAGER_H
23 
24 #include "backlogmanager.h"
25 #include "message.h"
26 
27 class BacklogRequester;
28 
30 {
32  Q_OBJECT
33 
34 public:
35  ClientBacklogManager(QObject *parent = 0);
36 
37  // helper for the backlogRequester, as it isn't a QObject and can't emit itself
38  inline void emitMessagesRequested(const QString &msg) const { emit messagesRequested(msg); }
39 
40  void reset();
41 
42 public slots:
43  virtual QVariantList requestBacklog(BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1, int additional = 0);
44  virtual void receiveBacklog(BufferId bufferId, MsgId first, MsgId last, int limit, int additional, QVariantList msgs);
45  virtual void receiveBacklogAll(MsgId first, MsgId last, int limit, int additional, QVariantList msgs);
46 
47  void requestInitialBacklog();
48 
49  void checkForBacklog(BufferId bufferId);
50  void checkForBacklog(const BufferIdList &bufferIds);
51 
52 signals:
53  void messagesReceived(BufferId bufferId, int count) const;
54  void messagesRequested(const QString &) const;
55  void messagesProcessed(const QString &) const;
56 
57  void updateProgress(int, int);
58 
59 private:
60  bool isBuffering();
62 
63  void dispatchMessages(const MessageList &messages, bool sort = false);
64 
67  QSet<BufferId> _buffersRequested;
68 };
69 
70 
71 // inlines
73 {
74  checkForBacklog(BufferIdList() << bufferId);
75 }
76 
77 
78 #endif // CLIENTBACKLOGMANAGER_H