2025-06-23 00:05:19 +08:00
|
|
|
|
#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::GetCalibrationFilePath()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 确保目标目录存在
|
|
|
|
|
|
EnsureConfigDirectoryExists();
|
|
|
|
|
|
return GetAppConfigDirectory() + "/clib.ini";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QString PathManager::GetAppConfigDirectory()
|
|
|
|
|
|
{
|
2025-06-28 23:06:09 +08:00
|
|
|
|
QString configDir = "";
|
2025-06-23 00:05:19 +08:00
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
|
// Windows系统:使用程序目录
|
2025-06-28 23:06:09 +08:00
|
|
|
|
configDir = GetProgramDirectory();
|
2025-06-23 00:05:19 +08:00
|
|
|
|
#else
|
|
|
|
|
|
// Linux系统:使用用户配置目录
|
2025-06-28 23:06:09 +08:00
|
|
|
|
configDir = GetUserConfigDirectory();
|
2025-06-23 00:05:19 +08:00
|
|
|
|
#endif
|
2025-06-28 23:06:09 +08:00
|
|
|
|
return configDir + "/../GrabBagApp/Config";
|
2025-06-23 00:05:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool PathManager::EnsureConfigDirectoryExists()
|
|
|
|
|
|
{
|
|
|
|
|
|
QString configDir = GetAppConfigDirectory();
|
|
|
|
|
|
|
|
|
|
|
|
if (QDir().exists(configDir)) {
|
|
|
|
|
|
LOG_DEBUG("Configuration directory already exists: %s\n", configDir.toStdString().c_str());
|
|
|
|
|
|
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);
|
|
|
|
|
|
}
|