summaryrefslogtreecommitdiffstats
path: root/gui/iconcache.h
blob: 5c5e4142a822923a6c3cb11de5c2edcd1c20ad48 (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
42
43
#pragma once

#include <QMutex>
#include <QtGui/QIcon>

class Private;

class IconCache
{
public:
	static IconCache* instance()
	{
		if (!m_Instance)
		{
			mutex.lock();
			if (!m_Instance)
				m_Instance = new IconCache;
			mutex.unlock();
		}
		return m_Instance;
	}

	static void drop()
	{
		mutex.lock();
		delete m_Instance;
		m_Instance = 0;
		mutex.unlock();
	}

	QIcon getIcon(QString name);
	
private:
	IconCache();
	// hide copy constructor
	IconCache(const IconCache &);
	// hide assign op
	IconCache& operator=(const IconCache &); 
	static IconCache* m_Instance;
	static QMutex mutex;
	Private* d;
};