Files
HPPA/HPPA/JinspFiberImagerConfig.cpp
tangchao0503 e326dcb20c add:
山地所贡嘎山3:
2026-07-08 10:54:22 +08:00

86 lines
2.0 KiB
C++

#include "JinspFiberImagerConfig.h"
#include <QCoreApplication>
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QDebug>
const QString JinspFiberImagerConfig::kDefaultPortName = QStringLiteral("COM9");
const QString JinspFiberImagerConfig::kConfigFileName = QStringLiteral("jinsp_fiber_imager_config.json");
JinspFiberImagerConfig::JinspFiberImagerConfig()
: m_configFilePath(QCoreApplication::applicationDirPath() + "/" + kConfigFileName)
, m_portName(kDefaultPortName)
{
loadConfig();
}
JinspFiberImagerConfig& JinspFiberImagerConfig::instance()
{
static JinspFiberImagerConfig s;
return s;
}
QString JinspFiberImagerConfig::portName() const
{
return m_portName;
}
void JinspFiberImagerConfig::setPortName(const QString& port)
{
if (m_portName != port)
{
m_portName = port;
saveConfig();
}
}
void JinspFiberImagerConfig::loadConfig()
{
QFile file(m_configFilePath);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "JinspFiberImagerConfig: No config file found, using default port:" << kDefaultPortName;
saveConfig();
return;
}
QByteArray jsonData = file.readAll();
file.close();
QJsonParseError parseError;
QJsonDocument doc = QJsonDocument::fromJson(jsonData, &parseError);
if (parseError.error != QJsonParseError::NoError)
{
qWarning() << "JinspFiberImagerConfig: JSON parse error:" << parseError.errorString();
return;
}
QJsonObject obj = doc.object();
if (obj.contains("portName"))
{
m_portName = obj["portName"].toString(kDefaultPortName);
}
}
void JinspFiberImagerConfig::saveConfig()
{
QJsonObject obj;
obj["portName"] = m_portName;
QJsonDocument doc(obj);
QFile file(m_configFilePath);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qWarning() << "JinspFiberImagerConfig: Failed to open config file for writing:" << m_configFilePath;
return;
}
file.write(doc.toJson(QJsonDocument::Indented));
file.close();
qDebug() << "JinspFiberImagerConfig: Config saved to" << m_configFilePath;
}