59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
#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);
|
||
} |