Дополнительные вызовы для инициализации путей
This commit is contained in:
parent
4519190768
commit
3c628659bc
@ -13,7 +13,14 @@ namespace myx {
|
||||
|
||||
namespace filesystem {
|
||||
|
||||
MYXLIB_INLINE Paths::Paths() = default;
|
||||
MYXLIB_INLINE Paths::Paths()
|
||||
{
|
||||
QFileInfo procSelfExe( QStringLiteral( "/proc/self/exe" ) );
|
||||
QFileInfo currentExecutable = procSelfExe.canonicalFilePath();
|
||||
m_executableName = currentExecutable.fileName();
|
||||
m_executableFilePath = currentExecutable.absoluteFilePath();
|
||||
m_executableDirectory = currentExecutable.absolutePath();
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE void Paths::setupSystemDirectories( const QString& defaultPrefixDirectory,
|
||||
@ -172,20 +179,8 @@ MYXLIB_INLINE Paths::HierarchyType Paths::getHierarchyType()
|
||||
} // Paths::getHierarchyType
|
||||
|
||||
|
||||
MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& configFileExtension )
|
||||
MYXLIB_INLINE bool Paths::initCommon()
|
||||
{
|
||||
QFileInfo procSelfExe( QStringLiteral( "/proc/self/exe" ) );
|
||||
QFileInfo currentExecutable = procSelfExe.canonicalFilePath();
|
||||
m_executableName = currentExecutable.fileName();
|
||||
m_executableFilePath = currentExecutable.absoluteFilePath();
|
||||
m_executableDirectory = currentExecutable.absolutePath();
|
||||
|
||||
m_projectName = projectDir.isEmpty() ? m_executableName
|
||||
: projectDir;
|
||||
m_configFileExtension = configFileExtension.isEmpty() ? QStringLiteral( "conf" )
|
||||
: configFileExtension;
|
||||
m_configFileName = m_projectName + "." + m_configFileExtension;
|
||||
|
||||
m_homeDirectory = QDir::homePath();
|
||||
m_tempDirectory = QDir::tempPath();
|
||||
|
||||
@ -214,6 +209,33 @@ MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& config
|
||||
} // Paths::updatePaths
|
||||
|
||||
|
||||
MYXLIB_INLINE bool Paths::init()
|
||||
{
|
||||
m_projectName = m_executableName;
|
||||
m_configFileName = m_executableName + ".conf";
|
||||
return( initCommon() );
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE bool Paths::init( const QString& configFileName )
|
||||
{
|
||||
m_projectName = m_executableName;
|
||||
m_configFileName = configFileName;
|
||||
return( initCommon() );
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE bool Paths::init( const QString& projectName, const QString& configFileExtension )
|
||||
{
|
||||
m_projectName = projectName.isEmpty() ? m_executableName
|
||||
: projectName;
|
||||
auto ext = configFileExtension.isEmpty() ? QStringLiteral( "conf" )
|
||||
: configFileExtension;
|
||||
m_configFileName = m_projectName + "." + ext;
|
||||
return( initCommon() );
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE bool Paths::makeDefaultDirectories()
|
||||
{
|
||||
bool status = true;
|
||||
@ -281,12 +303,6 @@ MYXLIB_INLINE const QString& Paths::configFileName() const
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE const QString& Paths::configFileExtension() const
|
||||
{
|
||||
return( m_configFileExtension );
|
||||
}
|
||||
|
||||
|
||||
MYXLIB_INLINE const QString& Paths::userVarDataDirectory() const
|
||||
{
|
||||
return( m_userVarDataDirectory );
|
||||
|
@ -44,62 +44,6 @@ class Paths
|
||||
kDevelopment = 0x07
|
||||
};
|
||||
|
||||
/// @brief Тип расположения файлов по каталогам
|
||||
HierarchyType m_hierarchyType { HierarchyType::kFlat };
|
||||
|
||||
/// @brief Имя проекта, которое используется при формировании имён файлов и каталогов
|
||||
QString m_projectName;
|
||||
|
||||
QString m_executableName;
|
||||
QString m_executableFilePath;
|
||||
QString m_executableDirectory;
|
||||
|
||||
/// @brief Общий префикс для файлов проекта
|
||||
QString m_prefixDirectory;
|
||||
|
||||
/// @brief Путь к каталогу с временными файлами
|
||||
QString m_tempDirectory;
|
||||
/// @brief Путь к домашнему каталогу текущего пользователя
|
||||
QString m_homeDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с изменяемыми файлами
|
||||
QString m_userVarDataDirectory;
|
||||
/// @brief Путь к системному каталогу с изменяемыми файлами
|
||||
QString m_systemVarDataDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с неизменяемыми файлами
|
||||
QString m_userConstDataDirectory;
|
||||
/// @brief Путь к системному каталогу с неизменяемыми файлами
|
||||
QString m_systemConstDataDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с журналами работы
|
||||
QString m_userLogDirectory;
|
||||
/// @brief Путь к системному каталогу с журналами работы
|
||||
QString m_systemLogDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с файлами настройки
|
||||
QString m_userConfigDirectory;
|
||||
/// @brief Путь к системному каталогу с файлами настройки
|
||||
QString m_systemConfigDirectory;
|
||||
|
||||
/// @brief Полный путь к файлу настройки
|
||||
QString m_configFilePath;
|
||||
/// @brief Имя файла настройки
|
||||
QString m_configFileName;
|
||||
/// @brief Расширение для файла настройки
|
||||
QString m_configFileExtension;
|
||||
|
||||
void setupSystemDirectories( const QString& defaultPrefixDirectory,
|
||||
const QString& defaultEtcDirectory,
|
||||
const QString& defaultConstDataDirectory,
|
||||
const QString& defaultVarDataDirectory,
|
||||
const QString& defaultLogDirectory );
|
||||
HierarchyType getHierarchyType();
|
||||
|
||||
protected:
|
||||
Paths();
|
||||
~Paths() = default;
|
||||
|
||||
public:
|
||||
Paths( const Paths& ) = delete;
|
||||
Paths& operator=( const Paths& ) = delete;
|
||||
@ -120,7 +64,20 @@ public:
|
||||
/**
|
||||
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||
*/
|
||||
bool init( const QString& projectDir, const QString& configFileExtension = QStringLiteral("conf") );
|
||||
bool init();
|
||||
|
||||
/**
|
||||
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||
* @param configFileName Имя файла настроек
|
||||
*/
|
||||
bool init( const QString& configFileName );
|
||||
|
||||
/**
|
||||
* @brief Обновление путей с учётом расположения исполняемого файла
|
||||
* @param projectName Имя проекта
|
||||
* @param configFileExtension Расширение для файла настроек
|
||||
*/
|
||||
bool init( const QString& projectName, const QString& configFileExtension );
|
||||
|
||||
/**
|
||||
* @brief Создание стандартных каталогов
|
||||
@ -226,6 +183,62 @@ public:
|
||||
* @brief Имя подкаталога для проекта
|
||||
*/
|
||||
const QString& projectName() const;
|
||||
|
||||
protected:
|
||||
Paths();
|
||||
~Paths() = default;
|
||||
|
||||
private:
|
||||
/// @brief Тип расположения файлов по каталогам
|
||||
HierarchyType m_hierarchyType { HierarchyType::kFlat };
|
||||
|
||||
/// @brief Имя проекта, которое используется при формировании имён файлов и каталогов
|
||||
QString m_projectName;
|
||||
|
||||
QString m_executableName;
|
||||
QString m_executableFilePath;
|
||||
QString m_executableDirectory;
|
||||
|
||||
/// @brief Общий префикс для файлов проекта
|
||||
QString m_prefixDirectory;
|
||||
|
||||
/// @brief Путь к каталогу с временными файлами
|
||||
QString m_tempDirectory;
|
||||
/// @brief Путь к домашнему каталогу текущего пользователя
|
||||
QString m_homeDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с изменяемыми файлами
|
||||
QString m_userVarDataDirectory;
|
||||
/// @brief Путь к системному каталогу с изменяемыми файлами
|
||||
QString m_systemVarDataDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с неизменяемыми файлами
|
||||
QString m_userConstDataDirectory;
|
||||
/// @brief Путь к системному каталогу с неизменяемыми файлами
|
||||
QString m_systemConstDataDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с журналами работы
|
||||
QString m_userLogDirectory;
|
||||
/// @brief Путь к системному каталогу с журналами работы
|
||||
QString m_systemLogDirectory;
|
||||
|
||||
/// @brief Путь к пользовательскому каталогу с файлами настройки
|
||||
QString m_userConfigDirectory;
|
||||
/// @brief Путь к системному каталогу с файлами настройки
|
||||
QString m_systemConfigDirectory;
|
||||
|
||||
/// @brief Полный путь к файлу настройки
|
||||
QString m_configFilePath;
|
||||
/// @brief Имя файла настройки
|
||||
QString m_configFileName;
|
||||
|
||||
void setupSystemDirectories( const QString& defaultPrefixDirectory,
|
||||
const QString& defaultEtcDirectory,
|
||||
const QString& defaultConstDataDirectory,
|
||||
const QString& defaultVarDataDirectory,
|
||||
const QString& defaultLogDirectory );
|
||||
bool initCommon();
|
||||
HierarchyType getHierarchyType();
|
||||
}; // class Paths
|
||||
|
||||
} // namespace filesystem
|
||||
|
Loading…
Reference in New Issue
Block a user