summaryrefslogtreecommitdiffstats
path: root/smglobals.h
blob: a91d162d0f2b869aad88893caa2c23174392add8 (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
69
70
71
72
73
74
75
76
77
78
/*
  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 <QObject>

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

class QAbstractItemModel;
class PictureViewer2;
class QPixmap;
class SeriesTreeWidget;

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();
        void setSeriesTreeWidget(SeriesTreeWidget *stree) { mSeriesTreeWidget = stree; }
        SeriesTreeWidget *seriesTreeWidget();
		QSize cursorSize();
        const QSize minPVSize() const { return QSize(640, 480); }
		const QHash<QString, QString> & icons() const { return mIcons; }
		qint64 dvdSize() const { return mDvdSize; }
        QList<QWidget*> &treeWidgets() { return mTreeWidgets; }

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

#endif