86 lines
2.0 KiB
C++
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;
|
|
}
|