summaryrefslogtreecommitdiffstats
path: root/smglobals.h
blob: 99ecd07d878df0ca3c7e46c90e83bb525ed46013 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version
  2 of the License, or (at your option) any later version.
*/

#ifndef SMUBERMODELSINGLETON_H
#define SMUBERMODELSINGLETON_H

#include <QHash>
#include <QSize>
#include <QPair>

class QAbstractItemModel;
class PictureViewer2;
class QPixmap;

class SmGlobals : public QObject {
	Q_OBJECT
	public:
		class FrameCache : public QObject {
			public:
				FrameCache(QObject *parent = 0);
				~FrameCache();
				void readConfig();
				const QPixmap entry(const QString &sourcePath, const QString &when = QString());
				const QString entryPath(const QString &sourcePath, const QString &when = QString());

			private:
				void readCache();
				void grabFrame(const QString &sourceFile, QString when);
				void cleanup();
				const QPair<QString, QString> prepFrame(const QString &sourceFile, QString when);
				QHash<QPair<QString, QString>, QString> mFrameCache;
				const qint32 mMagic;
				const QString mCacheSubDir;
				const QString mCacheFileName;
				QString mCacheDir;
				QString mCacheFile;
				QString mWhen;
				QString mFfMpegPath;

		};

		~SmGlobals();
		static SmGlobals *instance();
		QAbstractItemModel *model(const QString &which);
        PictureViewer2 *pictureViewer();
		FrameCache *frameCache();
		QSize cursorSize();
		const QHash<QString, QString> & icons() const { return mIcons; }
		qint64 dvdSize() const { return mDvdSize; }

	private:
		SmGlobals();
		SmGlobals(const SmGlobals &other);
		SmGlobals &operator=(const SmGlobals &other);
		static SmGlobals *mInstance;
		QHash<QString, QAbstractItemModel*> mModels;
        PictureViewer2 *mPictureViewer;
		SmGlobals::FrameCache *mFrameCache;
		QSize mCursorSize;
		QHash<QString, QString> mIcons;
		qint64 mDvdSize;
};

#endif