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                 static const QString    TRANSLATIONS_DIR_NAME;
00053                 static const QString UPDATE_PACKAGES_DIR_NAME;
00054                 static const QString UPDATE_PACKAGE_FILENAME_PREFIX;
00055 
00066                 static QString                  programFilesDirectory(MachineType machineType);
00067 
00079                 static QStringList staticDataSearchDirs(const QString& subdir = QString());
00080 
00081                 DataPaths(bool bPortableModeOn = false);
00082 
00088                 QStringList                             canWrite() const;
00089 
00101                 bool                                    createDirectories();
00102 
00103                 QString                                 demosDirectoryPath() const;
00104 
00110                 QStringList                             directoriesExist() const;
00111 
00112                 const QString&                  directoryNameForProgram() const { return programsDirectoryName; }
00113 
00127                 QString localDataLocationPath(const QString& subpath = QString()) const;
00128 
00138                 QString                                 programsDataDirectoryPath() const;
00139 
00145                 QString                                 programsDataSupportDirectoryPath() const;
00146 
00147                 bool                                    isPortableModeOn() const { return bIsPortableModeOn; }
00148 
00149                 void                                    setPortableModeOn(bool b) { bIsPortableModeOn = b; }
00150                 void                                    setDirectoryNameForProgram(const QString& name) { programsDirectoryName = name; }
00151 
00168                 QString                                 systemAppDataDirectory(QString append = QString()) const;
00169 
00174                 bool                                    validateAppDataDirectory();
00175 
00176         protected:
00181                 static bool                             validateDir(const QString& path);
00182 
00183                 bool                                    bIsPortableModeOn;
00184 
00188                 QString                                 programsDirectoryName;
00189                 QString                                 programsSupportDirectoryName;
00190                 QString                                 demosDirectoryName;
00191 
00195                 bool                                    tryCreateDirectory(const QDir& rootDir, const QString& dirToCreate) const;
00196 };
00197 
00198 #endif