/** * @file paths.hpp * @brief Стандартные пути к каталогам и файлам */ #ifndef MYX_FILESYSTEM_PATHS_HPP_ #define MYX_FILESYSTEM_PATHS_HPP_ #include #include #include #include namespace myx { namespace filesystem { class Paths { /// Путь к базовому каталогу QDir m_prefixDirectory; /// Путь к каталогу с исполняемым файлом QDir m_binaryDirectory; /// Путь к каталогу с изменяемыми файлами QDir m_cacheDirectory; /// Путь к каталогу с временными файлами QDir m_tempDirectory; /// Путь к каталогу с неизменяемыми файлами QDir m_dataDirectory; /// Путь к каталогу с журналами работы QDir m_logDirectory; /// Путь к домашнему каталогу текущего пользователя QDir m_homeDirectory; /// Путь к каталогу с файлами настройки QDir m_configDirectory; /// Полный путь к файлу настройки QFileInfo m_configFilePath; /// Имя файла настройки QString m_configFileName; /// Расширение для файла настройки QString m_configFileExtension; /// Параметры текущего исполняемого файла CurrentExecutable m_currentExecutable; public: /** * @brief Конструктор * @param configFileExtension Расширение для файла настройки */ Paths( QString configFileExtension = "conf" ); /** * @brief Получение пути к базовому каталогу */ QDir prefixDirectory() const; /** * @brief Установка пути к базовому каталогу */ void setPrefixDirectory( const QString& prefixDirectory ); /** * @brief Получение пути к каталогу с исполняемым файлом */ QDir binaryDirectory() const; /** * @brief Установка пути к каталогу с исполняемым файлом */ void setBinaryDirectory( const QString& binaryDirectory ); /** * @brief Получение пути к каталогу с файлами настройки */ QDir configDirectory() const; /** * @brief Установка пути к каталогу с файлами настройки */ void setConfigDirectory( const QString& configDirectory ); /** * @brief Получение пути к каталогу с изменяемыми файлами */ QDir cacheDirectory() const; /** * @brief Установка пути к каталогу с изменяемыми файлами */ void setCacheDirectory( const QString& cacheDirectory ); /** * @brief Получение пути к каталогу с временными файлами */ QDir tempDirectory() const; /** * @brief Установка пути к каталогу с временными файлами */ void setTempDirectory( const QString& tempDirectory ); /** * @brief Получение пути к каталогу с неизменяемыми файлами */ QDir dataDirectory() const; /** * @brief Установка пути к каталогу с неизменяемыми файлами */ void setDataDirectory( const QString& dataDirectory ); /** * @brief Получение пути к каталогу с журналами работы */ QDir logDirectory() const; /** * @brief Установка пути к каталогу с журналами работы */ void setLogDirectory( const QString& logDirectory ); /** * @brief Имя исполняемого файла */ QString executableFileName() const; /** * @brief Полный путь к исполняемому файлу */ QFileInfo executableFilePath() const; /** * @brief Имя файла настройки */ QString configFileName() const; /** * @brief Установка имени файла настройки */ void setConfigFileName( const QString& configFileName ); /** * @brief Полный путь к файлу настройки */ QFileInfo configFilePath() const; /** * @brief Установка полного пути к файлу настройки */ void setConfigFilePath( const QFileInfo& configFilePath ); /** * @brief Обновление путей с учётом расположения исполняемого файла */ bool updatePaths(); /** * @brief Создание стандартных каталогов */ bool makeDefaultDirectories(); /** * @brief Поиск существующего файла настойки. * Поиск выполняется до тех пор пока не будет найден файл в следующем порядке: * 1. Имя файла, указанное в качестве параметра функции * 2. Имя файла, заданное переменной окружения вида PROJECT_NAME_CONFIG * 3. Имя файла, полученное из внутренней переменной класса * Если файл настройки не будет найден, то будет возвращена пустая строка */ QString findConfigFile( const QString& defaultConfigFile = "" ); }; // class Paths } // namespace filesystem } // namespace myx #endif // MYX_FILESYSTEM_PATHS_HPP_