Compare commits

...

2 Commits

3 changed files with 181 additions and 194 deletions

View File

@ -25,12 +25,12 @@ int main( int argc, char** argv )
pathsMT.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) ); pathsMT.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
pathsMT.findConfigFile( QStringLiteral( "test" ) ); pathsMT.findConfigFile( QStringLiteral( "test" ) );
qDebug() << pathsMT.systemLogDirectory().path(); qDebug() << pathsMT.systemLogDirectory();
qDebug() << pathsMT.systemConfigDirectory().path(); qDebug() << pathsMT.systemConfigDirectory();
paths.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) ); paths.init( QStringLiteral( CMLIB_PROJECT_NAME ), QStringLiteral( "conf" ) );
paths.findConfigFile( QStringLiteral( "test" ) ); paths.findConfigFile( QStringLiteral( "test" ) );
qDebug() << paths.systemConstDataDirectory().path(); qDebug() << paths.systemConstDataDirectory();
qDebug() << paths.configFileName(); qDebug() << paths.configFileName();
return( 0 ); return( 0 );

View File

@ -21,150 +21,129 @@ namespace filesystem {
MYXLIB_INLINE Paths::Paths() = default; MYXLIB_INLINE Paths::Paths() = default;
MYXLIB_INLINE Paths::HierarchyType Paths::getHierarchyType() // -V2008
MYXLIB_INLINE void Paths::setupSystemDirectories( const QString& defaultEtcDirectory,
const QString& defaultConstDataDirectory,
const QString& defaultVarDataDirectory,
const QString& defaultLogDirectory )
{
QFileInfo etcDirInfo { defaultEtcDirectory };
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() )
{
m_systemConfigDirectory = defaultEtcDirectory;
}
else
{
m_systemConfigDirectory = m_userConfigDirectory;
}
QFileInfo constDataDirInfo { defaultConstDataDirectory };
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() )
{
m_systemConstDataDirectory = defaultConstDataDirectory;
}
else
{
m_systemConstDataDirectory = m_userConstDataDirectory;
}
QFileInfo varDataDirInfo { defaultVarDataDirectory };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() )
{
m_systemVarDataDirectory = defaultVarDataDirectory;
}
else
{
m_systemVarDataDirectory = m_userVarDataDirectory;
}
QFileInfo logDirInfo { defaultLogDirectory };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() )
{
m_systemLogDirectory = defaultLogDirectory;
}
else
{
m_systemLogDirectory = m_userLogDirectory;
}
} // Paths::setupSystemDirectories
Paths::HierarchyType Paths::getHierarchyType()
{ {
QRegExp binUnityRegexp( "/s*bin/unity$" ); QRegExp binUnityRegexp( "/s*bin/unity$" );
QRegExp binRegexp( "/s*bin$" ); auto binaryDir = m_executableDirectory;
auto binaryDir = m_currentExecutable.m_canonicalFilePath.canonicalPath();
if ( binUnityRegexp.indexIn( binaryDir ) >= 0 ) if ( binUnityRegexp.indexIn( binaryDir ) >= 0 )
{ {
binaryDir.remove( binUnityRegexp ); binaryDir.remove( binUnityRegexp );
setupSystemDirectories( binaryDir + "/etc",
QFileInfo etcDirInfo { binaryDir + "/etc" }; binaryDir + "/files/data",
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } binaryDir + "/files/lib",
binaryDir + "/files/log" );
QFileInfo constDataDirInfo { binaryDir + "/files/data" };
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { binaryDir + "/files/lib" };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { binaryDir + "/files/log" };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kDevelopment ); return ( HierarchyType::kDevelopment );
} }
QRegExp binRegexp( "/s*bin$" );
if ( binRegexp.indexIn( binaryDir ) == -1 ) if ( binRegexp.indexIn( binaryDir ) == -1 )
{ {
m_systemConstDataDirectory = m_executableDirectory;
m_systemVarDataDirectory = m_executableDirectory;
m_systemConfigDirectory = m_executableDirectory;
m_systemLogDirectory = m_executableDirectory;
return ( HierarchyType::kFlat ); return ( HierarchyType::kFlat );
} }
QRegExp optRegexp( "^/opt(/|/.+/)" + m_projectName + "/" ); QRegExp optRegexp( "^/opt(/|/.+/)" + m_projectName + "/" );
if ( optRegexp.indexIn( binaryDir ) >= 0 ) if ( optRegexp.indexIn( binaryDir ) >= 0 )
{ {
binaryDir.remove( binRegexp ); binaryDir.remove( binRegexp );
QFileInfo etcDirInfo { binaryDir + "/etc" }; setupSystemDirectories( binaryDir + "/etc",
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } binaryDir + "/files/data",
binaryDir + "/files/lib",
QFileInfo constDataDirInfo { binaryDir + "/files/data" }; binaryDir + "/files/log" );
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { binaryDir + "/files/lib" };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { binaryDir + "/files/log" };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kOpt ); return ( HierarchyType::kOpt );
} }
if ( binaryDir.startsWith( QStringLiteral( "/usr/local" ) ) ) if ( binaryDir.startsWith( QStringLiteral( "/usr/local" ) ) )
{ {
QFileInfo etcDirInfo { "/usr/local/etc/" + m_projectName }; setupSystemDirectories( "/usr/local/etc/" + m_projectName,
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } "/usr/local/share/" + m_projectName,
"/var/lib/" + m_projectName,
QFileInfo constDataDirInfo { "/usr/local/share/" + m_projectName }; "/var/log/" + m_projectName );
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { "/var/lib/" + m_projectName };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { "/var/log/" + m_projectName };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kUsr ); return ( HierarchyType::kUsr );
} }
if ( binaryDir.startsWith( QStringLiteral( "/usr" ) ) ) if ( binaryDir.startsWith( QStringLiteral( "/usr" ) ) )
{ {
QFileInfo etcDirInfo { "/etc/" + m_projectName }; setupSystemDirectories( "/etc/" + m_projectName,
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } "/usr/share/" + m_projectName,
"/var/lib/" + m_projectName,
QFileInfo constDataDirInfo { "/usr/share/" + m_projectName }; "/var/log/" + m_projectName );
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { "/var/lib/" + m_projectName };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { "/var/log/" + m_projectName };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kUsr ); return ( HierarchyType::kUsr );
} }
if ( binaryDir.startsWith( m_homeDirectory.canonicalPath() + "/.local/bin" ) || if ( binaryDir.startsWith( m_homeDirectory + "/.local/bin" ) ||
binaryDir.startsWith( m_homeDirectory.canonicalPath() + "/bin" ) ) binaryDir.startsWith( m_homeDirectory + "/bin" ) )
{ {
QFileInfo etcDirInfo { m_userConfigDirectory.canonicalPath() }; m_systemConfigDirectory = m_userConfigDirectory;
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } m_systemConstDataDirectory = m_userConstDataDirectory;
m_systemVarDataDirectory = m_userVarDataDirectory;
QFileInfo constDataDirInfo { m_userConstDataDirectory.canonicalPath() }; m_systemLogDirectory = m_userLogDirectory;
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { m_userVarDataDirectory.canonicalPath() };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { m_userLogDirectory.canonicalPath() };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return( HierarchyType::kHome ); return( HierarchyType::kHome );
} }
binaryDir.remove( binRegexp ); binaryDir.remove( binRegexp );
setupSystemDirectories( binaryDir + "/etc",
QFileInfo etcDirInfo { binaryDir + "/etc" }; binaryDir + "/files/data",
if ( !etcDirInfo.isDir() || !etcDirInfo.isReadable() ) { return( HierarchyType::kFlat ); } binaryDir + "/files/lib",
binaryDir + "/files/log" );
QFileInfo constDataDirInfo { binaryDir + "/files/data" };
if ( !constDataDirInfo.isDir() || !constDataDirInfo.isReadable() ) { return( HierarchyType::kFlat ); }
QFileInfo varDataDirInfo { binaryDir + "/files/lib" };
if ( !varDataDirInfo.isDir() || !varDataDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
QFileInfo logDirInfo { binaryDir + "/files/log" };
if ( !logDirInfo.isDir() || !logDirInfo.isWritable() ) { return( HierarchyType::kFlat ); }
m_systemConfigDirectory = etcDirInfo.canonicalFilePath();
m_systemConstDataDirectory = constDataDirInfo.canonicalFilePath();
m_systemVarDataDirectory = varDataDirInfo.canonicalFilePath();
m_systemLogDirectory = logDirInfo.canonicalFilePath();
return ( HierarchyType::kDevelopment ); return ( HierarchyType::kDevelopment );
} // Paths::getHierarchyType } // Paths::getHierarchyType
@ -172,7 +151,12 @@ MYXLIB_INLINE Paths::HierarchyType Paths::getHierarchyType() // -V2008
MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& configFileExtension ) MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& configFileExtension )
{ {
m_projectName = projectDir.isEmpty() ? m_currentExecutable.m_canonicalFilePath.fileName() CurrentExecutable exe;
m_executableName = exe.m_canonicalFilePath.fileName();
m_executableFilePath = exe.m_canonicalFilePath.absoluteFilePath();
m_executableDirectory = exe.m_canonicalFilePath.absolutePath();
m_projectName = projectDir.isEmpty() ? m_executableName
: projectDir; : projectDir;
m_configFileExtension = configFileExtension.isEmpty() ? QStringLiteral( "conf" ) m_configFileExtension = configFileExtension.isEmpty() ? QStringLiteral( "conf" )
: configFileExtension; : configFileExtension;
@ -184,14 +168,14 @@ MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& config
auto configHome = QString::fromLocal8Bit( qgetenv( "XDG_CONFIG_HOME" ) ); auto configHome = QString::fromLocal8Bit( qgetenv( "XDG_CONFIG_HOME" ) );
if ( configHome.isEmpty() ) if ( configHome.isEmpty() )
{ {
configHome = m_homeDirectory.canonicalPath() + "/.config"; configHome = m_homeDirectory + "/.config";
} }
m_userConfigDirectory = configHome + "/" + m_projectName; m_userConfigDirectory = configHome + "/" + m_projectName;
auto dataHome = QString::fromLocal8Bit( qgetenv( "XDG_DATA_HOME" ) ); auto dataHome = QString::fromLocal8Bit( qgetenv( "XDG_DATA_HOME" ) );
if ( dataHome.isEmpty() ) if ( dataHome.isEmpty() )
{ {
dataHome = m_homeDirectory.canonicalPath() + "/.local/share"; dataHome = m_homeDirectory + "/.local/share";
} }
dataHome += "/" + m_projectName; dataHome += "/" + m_projectName;
m_userConstDataDirectory = dataHome + "/data"; m_userConstDataDirectory = dataHome + "/data";
@ -200,15 +184,7 @@ MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& config
m_hierarchyType = getHierarchyType(); m_hierarchyType = getHierarchyType();
if ( m_hierarchyType == HierarchyType::kFlat ) m_configFilePath = m_systemConfigDirectory + "/" + m_configFileName;
{
m_systemConstDataDirectory = m_currentExecutable.m_canonicalFilePath.canonicalPath();
m_systemVarDataDirectory = m_currentExecutable.m_canonicalFilePath.canonicalPath();
m_systemConfigDirectory = m_currentExecutable.m_canonicalFilePath.canonicalPath();
m_systemLogDirectory = m_currentExecutable.m_canonicalFilePath.canonicalPath();
}
m_configFilePath = m_systemConfigDirectory.canonicalPath() + "/" + m_configFileName;
return( true ); return( true );
} // Paths::updatePaths } // Paths::updatePaths
@ -217,11 +193,17 @@ MYXLIB_INLINE bool Paths::init( const QString& projectDir, const QString& config
MYXLIB_INLINE bool Paths::makeDefaultDirectories() MYXLIB_INLINE bool Paths::makeDefaultDirectories()
{ {
bool status = true; bool status = true;
QDir dir;
if (dir.mkpath( m_userConfigDirectory )) { status = false; };
if (dir.mkpath( m_userVarDataDirectory )) { status = false; };
if (dir.mkpath( m_userConstDataDirectory )) { status = false; };
if (dir.mkpath( m_userLogDirectory )) { status = false; };
if (dir.mkpath( m_systemConfigDirectory )) { status = false; };
if (dir.mkpath( m_systemVarDataDirectory )) { status = false; };
if (dir.mkpath( m_systemConstDataDirectory )) { status = false; };
if (dir.mkpath( m_systemLogDirectory )) { status = false; };
if ( !m_userConfigDirectory.mkpath( m_userConfigDirectory.absolutePath() ) ) { status = false; }
if ( !m_userVarDataDirectory.mkpath( m_userVarDataDirectory.absolutePath() ) ) { status = false; }
if ( !m_userConstDataDirectory.mkpath( m_userConstDataDirectory.absolutePath() ) ) { status = false; }
if ( !m_userLogDirectory.mkpath( m_userLogDirectory.absolutePath() ) ) { status = false; }
return( status ); return( status );
} }
@ -244,32 +226,26 @@ MYXLIB_INLINE QString Paths::findConfigFile( const QString& defaultConfigFile )
if ( QFileInfo( m_configFilePath ).isReadable() ) if ( QFileInfo( m_configFilePath ).isReadable() )
{ {
return( m_configFilePath.absoluteFilePath() ); return( m_configFilePath );
} }
return( QString() ); return( QString() );
} // Paths::findConfigFile } // Paths::findConfigFile
MYXLIB_INLINE QDir Paths::executableFileDirectory() const MYXLIB_INLINE const QString& Paths::userConfigDirectory() const
{
return( m_currentExecutable.m_canonicalFilePath.dir() );
}
MYXLIB_INLINE const QDir& Paths::userConfigDirectory() const
{ {
return( m_userConfigDirectory ); return( m_userConfigDirectory );
} }
MYXLIB_INLINE const QDir& Paths::systemConfigDirectory() const MYXLIB_INLINE const QString& Paths::systemConfigDirectory() const
{ {
return( m_systemConfigDirectory ); return( m_systemConfigDirectory );
} }
MYXLIB_INLINE const QFileInfo& Paths::configFilePath() const MYXLIB_INLINE const QString& Paths::configFilePath() const
{ {
return( m_configFilePath ); return( m_configFilePath );
} }
@ -287,49 +263,49 @@ MYXLIB_INLINE const QString& Paths::configFileExtension() const
} }
MYXLIB_INLINE const QDir& Paths::userVarDataDirectory() const MYXLIB_INLINE const QString& Paths::userVarDataDirectory() const
{ {
return( m_userVarDataDirectory ); return( m_userVarDataDirectory );
} }
MYXLIB_INLINE const QDir& Paths::systemVarDataDirectory() const MYXLIB_INLINE const QString& Paths::systemVarDataDirectory() const
{ {
return( m_systemVarDataDirectory ); return( m_systemVarDataDirectory );
} }
MYXLIB_INLINE const QDir& Paths::userConstDataDirectory() const MYXLIB_INLINE const QString& Paths::userConstDataDirectory() const
{ {
return( m_userConstDataDirectory ); return( m_userConstDataDirectory );
} }
MYXLIB_INLINE const QDir& Paths::systemConstDataDirectory() const MYXLIB_INLINE const QString& Paths::systemConstDataDirectory() const
{ {
return( m_systemConstDataDirectory ); return( m_systemConstDataDirectory );
} }
MYXLIB_INLINE const QDir& Paths::userLogDirectory() const MYXLIB_INLINE const QString& Paths::userLogDirectory() const
{ {
return( m_userLogDirectory ); return( m_userLogDirectory );
} }
MYXLIB_INLINE const QDir& Paths::systemLogDirectory() const MYXLIB_INLINE const QString& Paths::systemLogDirectory() const
{ {
return( m_systemLogDirectory ); return( m_systemLogDirectory );
} }
MYXLIB_INLINE const QDir& Paths::tempDirectory() const MYXLIB_INLINE const QString& Paths::tempDirectory() const
{ {
return( m_tempDirectory ); return( m_tempDirectory );
} }
MYXLIB_INLINE const QDir& Paths::homeDirectory() const MYXLIB_INLINE const QString& Paths::homeDirectory() const
{ {
return( m_homeDirectory ); return( m_homeDirectory );
} }
@ -341,15 +317,21 @@ MYXLIB_INLINE const QString& Paths::projectName() const
} }
MYXLIB_INLINE QString Paths::executableFileName() const MYXLIB_INLINE const QString& Paths::executableName() const
{ {
return( m_currentExecutable.m_canonicalFilePath.fileName() ); return( m_executableName );
} }
MYXLIB_INLINE const QFileInfo& Paths::executableFilePath() const MYXLIB_INLINE const QString& Paths::executableFilePath() const
{ {
return( m_currentExecutable.m_canonicalFilePath ); return( m_executableFilePath );
}
MYXLIB_INLINE const QString& Paths::executableDirectory() const
{
return( m_executableDirectory );
} }
} // namespace filesystem } // namespace filesystem

View File

@ -46,44 +46,49 @@ class Paths
/// @brief Тип расположения файлов по каталогам /// @brief Тип расположения файлов по каталогам
HierarchyType m_hierarchyType { HierarchyType::kFlat }; HierarchyType m_hierarchyType { HierarchyType::kFlat };
/// @brief Параметры текущего исполняемого файла
CurrentExecutable m_currentExecutable;
/// @brief Имя проекта, которое используется при формировании имён файлов и каталогов /// @brief Имя проекта, которое используется при формировании имён файлов и каталогов
QString m_projectName; QString m_projectName;
QString m_executableName;
QString m_executableFilePath;
QString m_executableDirectory;
/// @brief Путь к каталогу с временными файлами /// @brief Путь к каталогу с временными файлами
QDir m_tempDirectory; QString m_tempDirectory;
/// @brief Путь к домашнему каталогу текущего пользователя /// @brief Путь к домашнему каталогу текущего пользователя
QDir m_homeDirectory; QString m_homeDirectory;
/// @brief Путь к пользовательскому каталогу с изменяемыми файлами /// @brief Путь к пользовательскому каталогу с изменяемыми файлами
QDir m_userVarDataDirectory; QString m_userVarDataDirectory;
/// @brief Путь к системному каталогу с изменяемыми файлами /// @brief Путь к системному каталогу с изменяемыми файлами
QDir m_systemVarDataDirectory; QString m_systemVarDataDirectory;
/// @brief Путь к пользовательскому каталогу с неизменяемыми файлами /// @brief Путь к пользовательскому каталогу с неизменяемыми файлами
QDir m_userConstDataDirectory; QString m_userConstDataDirectory;
/// @brief Путь к системному каталогу с неизменяемыми файлами /// @brief Путь к системному каталогу с неизменяемыми файлами
QDir m_systemConstDataDirectory; QString m_systemConstDataDirectory;
/// @brief Путь к пользовательскому каталогу с журналами работы /// @brief Путь к пользовательскому каталогу с журналами работы
QDir m_userLogDirectory; QString m_userLogDirectory;
/// @brief Путь к системному каталогу с журналами работы /// @brief Путь к системному каталогу с журналами работы
QDir m_systemLogDirectory; QString m_systemLogDirectory;
/// @brief Путь к пользовательскому каталогу с файлами настройки /// @brief Путь к пользовательскому каталогу с файлами настройки
QDir m_userConfigDirectory; QString m_userConfigDirectory;
/// @brief Путь к системному каталогу с файлами настройки /// @brief Путь к системному каталогу с файлами настройки
QDir m_systemConfigDirectory; QString m_systemConfigDirectory;
/// @brief Полный путь к файлу настройки /// @brief Полный путь к файлу настройки
QFileInfo m_configFilePath; QString m_configFilePath;
/// @brief Имя файла настройки /// @brief Имя файла настройки
QString m_configFileName; QString m_configFileName;
/// @brief Расширение для файла настройки /// @brief Расширение для файла настройки
QString m_configFileExtension; QString m_configFileExtension;
void setupSystemDirectories( const QString& defaultEtcDirectory,
const QString& defaultConstDataDirectory,
const QString& defaultVarDataDirectory,
const QString& defaultLogDirectory );
HierarchyType getHierarchyType(); HierarchyType getHierarchyType();
protected: protected:
@ -130,27 +135,22 @@ public:
/** /**
* @brief Полный путь к базовому каталогу * @brief Полный путь к базовому каталогу
*/ */
const QDir& prefixDirectory() const; const QString& prefixDirectory() const;
/**
* @brief Имя исполняемого файла
*/
const QString& executableName() const;
/**
* @brief Полный путь к исполняемому файлу
*/
const QString& executableFilePath() const;
/** /**
* @brief Полный путь к каталогу с исполняемым файлом * @brief Полный путь к каталогу с исполняемым файлом
*/ */
QDir executableFileDirectory() const; const QString& executableDirectory() const;
/**
* @brief Полный путь к пользовательскому каталогу с файлами настройки
*/
const QDir& userConfigDirectory() const;
/**
* @brief Полный путь к системному каталогу с файлами настройки
*/
const QDir& systemConfigDirectory() const;
/**
* @brief Полный путь к файлу настройки
*/
const QFileInfo& configFilePath() const;
/** /**
* @brief Имя файла настройки * @brief Имя файла настройки
@ -162,60 +162,65 @@ public:
*/ */
const QString& configFileExtension() const; const QString& configFileExtension() const;
/**
* @brief Полный путь к файлу настройки
*/
const QString& configFilePath() const;
/**
* @brief Полный путь к пользовательскому каталогу с файлами настройки
*/
const QString& userConfigDirectory() const;
/**
* @brief Полный путь к системному каталогу с файлами настройки
*/
const QString& systemConfigDirectory() const;
/** /**
* @brief Полный путь к пользовательскому каталогу с изменяемыми файлами * @brief Полный путь к пользовательскому каталогу с изменяемыми файлами
*/ */
const QDir& userVarDataDirectory() const; const QString& userVarDataDirectory() const;
/** /**
* @brief Полный путь к системному каталогу с изменяемыми файлами * @brief Полный путь к системному каталогу с изменяемыми файлами
*/ */
const QDir& systemVarDataDirectory() const; const QString& systemVarDataDirectory() const;
/** /**
* @brief Полный путь к пользовательскому каталогу с неизменяемыми файлами * @brief Полный путь к пользовательскому каталогу с неизменяемыми файлами
*/ */
const QDir& userConstDataDirectory() const; const QString& userConstDataDirectory() const;
/** /**
* @brief Полный путь к системному каталогу с неизменяемыми файлами * @brief Полный путь к системному каталогу с неизменяемыми файлами
*/ */
const QDir& systemConstDataDirectory() const; const QString& systemConstDataDirectory() const;
/** /**
* @brief Полный путь к пользовательскому каталогу с журналами работы * @brief Полный путь к пользовательскому каталогу с журналами работы
*/ */
const QDir& userLogDirectory() const; const QString& userLogDirectory() const;
/** /**
* @brief Полный путь к системному каталогу с журналами работы * @brief Полный путь к системному каталогу с журналами работы
*/ */
const QDir& systemLogDirectory() const; const QString& systemLogDirectory() const;
/** /**
* @brief Полный путь к каталогу с временными файлами * @brief Полный путь к каталогу с временными файлами
*/ */
const QDir& tempDirectory() const; const QString& tempDirectory() const;
/** /**
* @brief Полный путь к домашнему каталогу текущего пользователя * @brief Полный путь к домашнему каталогу текущего пользователя
*/ */
const QDir& homeDirectory() const; const QString& homeDirectory() const;
/** /**
* @brief Имя подкаталога для проекта * @brief Имя подкаталога для проекта
*/ */
const QString& projectName() const; const QString& projectName() const;
/**
* @brief Имя исполняемого файла
*/
QString executableFileName() const;
/**
* @brief Полный путь к исполняемому файлу
*/
const QFileInfo& executableFilePath() const;
}; // class Paths }; // class Paths
} // namespace filesystem } // namespace filesystem