summaryrefslogtreecommitdiff
path: root/plugins/HistoryStats/src/mirandahistory.h
blob: 6d344de891a5707b3a6ea7204f613c9d821c9137 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#if !defined(HISTORYSTATS_GUARD_MIRANDAHISTORY_H)
#define HISTORYSTATS_GUARD_MIRANDAHISTORY_H

#include "_globals.h"

#include <vector>

#include "mirandacontact.h"
#include "protocol.h"
#include "settings.h"

class MirandaHistory
	: private pattern::NotCopyable<MirandaHistory>
{
private:
	typedef std::map<ext::a::string, Protocol> ProtocolMap;
	typedef std::vector<MirandaContact*> ContactList;

private:
	const Settings& m_Settings;
	ProtocolMap m_Protocols;
	Protocol m_DefaultProtocol;
	bool m_bContactsAvailable;
	ContactList m_Contacts;

private:
	void populateProtocols();
	const Protocol& getProtocol(const ext::a::string& protocol) const;
	void makeContactsAvailable();
	void readContacts();
	void mergeContacts();

public:
	explicit MirandaHistory(const Settings& settings);
	~MirandaHistory();

	int getContactCount();
	MirandaContact& getContact(int index);
};

#endif // HISTORYSTATS_GUARD_MIRANDAHISTORY_H