00001 #ifndef _STORAGEGROUP_H
00002 #define _STORAGEGROUP_H
00003
00004 #include <QStringList>
00005 #include <QMutex>
00006 #include <QHash>
00007 #include <QMap>
00008
00009 #include "mythbaseexp.h"
00010
00011 class MBASE_PUBLIC StorageGroup
00012 {
00013 public:
00014 StorageGroup(const QString group = "", const QString hostname = "",
00015 const bool allowFallback = true);
00016
00017 void Init(const QString group = "Default",
00018 const QString hostname = "",
00019 const bool allowFallback = true);
00020
00021 QString getName(void) const
00022 { QString tmp = m_groupname; tmp.detach(); return tmp; }
00023
00024 QStringList GetDirList(void) const
00025 { QStringList tmp = m_dirlist; tmp.detach(); return tmp; }
00026 QString GetFirstDir(bool appendSlash = false) const;
00027
00028 QStringList GetDirFileList(QString dir, QString base,
00029 bool recursive = false);
00030 QStringList GetFileList(QString Path, bool recursive = false);
00031 QStringList GetFileInfoList(QString Path);
00032 bool FileExists(QString filename);
00033 QStringList GetFileInfo(QString filename);
00034 static QString GetRelativePathname(const QString &filename);
00035 static bool FindDirs(const QString group = "Default",
00036 const QString hostname = "",
00037 QStringList *dirlist = NULL);
00038
00039 QString FindFile(QString filename);
00040 QString FindFileDir(QString filename);
00041
00042 QString FindNextDirMostFree(void);
00043
00044 static void CheckAllStorageGroupDirs(void);
00045
00046 static const char *kDefaultStorageDir;
00047 static const QStringList kSpecialGroups;
00048
00049 static QStringList getRecordingsGroups(void);
00050 static QStringList getGroupDirs(QString groupname, QString host);
00051
00052 static void ClearGroupToUseCache(void);
00053 static QString GetGroupToUse(
00054 const QString &host, const QString &sgroup);
00055
00056 private:
00057 static void StaticInit(void);
00058 static bool m_staticInitDone;
00059 static QMutex m_staticInitLock;
00060
00061 QString m_groupname;
00062 QString m_hostname;
00063 bool m_allowFallback;
00064 QStringList m_dirlist;
00065
00066 static QMap<QString, QString> m_builtinGroups;
00067
00068 static QMutex s_groupToUseLock;
00069 static QHash<QString,QString> s_groupToUseCache;
00070 };
00071
00072 #endif
00073
00074