GrabBag/GrabBagApp/Presenter/Src/PathManager.cpp

65 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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()
{
#ifdef _WIN32
// Windows系统使用程序目录
return GetProgramDirectory();
#else
// Linux系统使用用户配置目录
return GetUserConfigDirectory() + "/GrabBag";
#endif
}
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);
}