60 lines
1.6 KiB
C++
Raw Permalink Normal View History

#include "PathManager.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QFileInfo>
#include <QtCore/QDir>
#include <QtCore/QStandardPaths>
#include <QtCore/QFile>
#include "VrLog.h"
QString PathManager::GetConfigFilePath()
{
// 确保目标目录存在
EnsureConfigDirectoryExists();
return GetAppConfigDirectory() + "/config.xml";
}
QString PathManager::GetAppConfigDirectory()
{
QString configDir = "";
#ifdef _WIN32
// Windows系统使用程序目录
2025-08-31 21:08:28 +08:00
// configDir = GetProgramDirectory() + "/BeltTearingApp/Config";
configDir = GetUserConfigDirectory() + "/Config";
#else
// Linux系统使用用户配置目录
2025-08-31 21:08:28 +08:00
configDir = GetUserConfigDirectory() + "../BeltTearingApp/Config";
#endif
2025-08-31 21:08:28 +08:00
return configDir;
}
bool PathManager::EnsureConfigDirectoryExists()
{
QString configDir = GetAppConfigDirectory();
if (QDir().exists(configDir)) {
return true;
}
LOG_INFO("Creating configuration directory: %s\n", configDir.toStdString().c_str());
bool success = QDir().mkpath(configDir);
if (success) {
LOG_INFO("Configuration directory created successfully\n");
} else {
LOG_ERROR("Failed to create configuration directory: %s\n", configDir.toStdString().c_str());
}
return success;
}
QString PathManager::GetProgramDirectory()
{
QString exePath = QCoreApplication::applicationFilePath();
return QFileInfo(exePath).absoluteDir().path();
}
QString PathManager::GetUserConfigDirectory()
{
return QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
}