/* 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 #include #include 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 prepFrame(const QString &sourceFile, QString when); QHash, 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 & icons() const { return mIcons; } qint64 dvdSize() const { return mDvdSize; } private: SmGlobals(); SmGlobals(const SmGlobals &other); SmGlobals &operator=(const SmGlobals &other); static SmGlobals *mInstance; QHash mModels; PictureViewer2 *mPictureViewer; SmGlobals::FrameCache *mFrameCache; QSize mCursorSize; QHash mIcons; qint64 mDvdSize; }; #endif