59 lines
1.6 KiB
C++
Raw Normal View History

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