75 lines
2.0 KiB
C++
Raw Normal View History

#include "PathManager.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QFileInfo>
#include <QtCore/QDir>
#include <QtCore/QStandardPaths>
#include "VrLog.h"
QString PathManager::GetConfigFilePath()
{
// 确保目标目录存在
EnsureConfigDirectoryExists();
return GetAppConfigDirectory() + "/config.xml";
}
QString PathManager::GetCalibrationFilePath()
{
// 确保目标目录存在
EnsureConfigDirectoryExists();
return GetAppConfigDirectory() + "/EyeHandCalibMatrixInfo.ini";
}
QString PathManager::GetAppConfigDirectory()
{
QString configDir = "";
// #ifdef _WIN32
// // Windows系统使用程序目录
// configDir = GetProgramDirectory();
// #else
// // Linux系统使用用户配置目录
// configDir = QDir::homePath() + "/.config/WorkpieceApp/Config";
// #endif
// return configDir + "/../WorkpieceApp/Config";
#ifdef _WIN32
// Windows系统使用程序目录
configDir = GetProgramDirectory();
#else
// Linux系统使用用户配置目录
configDir = GetUserConfigDirectory();
#endif
return configDir + "/../WorkpieceApp/Config";
}
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);
}