00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __DATAPATHS_H__
00024 #define __DATAPATHS_H__
00025
00026 #include "global.h"
00027 #include <QDir>
00028 #include <QString>
00029 #include <QStringList>
00030
00039 class MAIN_EXPORT DataPaths
00040 {
00041 public:
00042 enum MachineType
00043 {
00044 x86,
00045 x64,
00046 Preferred
00047 };
00048
00049 static const QString PROGRAMS_APPDATA_DIR_NAME;
00050 static const QString PROGRAMS_APPDATASUPPORT_DIR_NAME;
00051 static const QString DEMOS_DIR_NAME;
00052
00063 static QString programFilesDirectory(MachineType machineType);
00064
00065 DataPaths(bool bPortableModeOn = false);
00066
00072 QStringList canWrite() const;
00073
00085 bool createDirectories();
00086
00087 QString demosDirectoryPath() const;
00088
00094 QStringList directoriesExist() const;
00095
00096 const QString& directoryNameForProgram() const { return programsDirectoryName; }
00097
00107 QString programsDataDirectoryPath() const;
00108
00114 QString programsDataSupportDirectoryPath() const;
00115
00116 bool isPortableModeOn() const { return bIsPortableModeOn; }
00117
00118 void setPortableModeOn(bool b) { bIsPortableModeOn = b; }
00119 void setDirectoryNameForProgram(const QString& name) { programsDirectoryName = name; }
00120
00137 QString systemAppDataDirectory(QString append = QString()) const;
00138
00143 bool validateAppDataDirectory();
00144
00145 protected:
00150 static bool validateDir(const QString& path);
00151
00152 bool bIsPortableModeOn;
00153
00157 QString programsDirectoryName;
00158 QString programsSupportDirectoryName;
00159 QString demosDirectoryName;
00160
00164 bool tryCreateDirectory(const QDir& rootDir, const QString& dirToCreate) const;
00165 };
00166
00167 #endif