WaterLevelSensor/configinterface.cpp

60 lines
1.5 KiB
C++
Raw Permalink Normal View History

2026-08-04 21:31:40 +05:30
#include "configinterface.h"
#include <fstream>
#include <sstream>
2026-09-23 17:36:00 +05:30
#include <filesystem>
2026-08-04 21:31:40 +05:30
ConfigInterface::ConfigInterface(QObject *parent)
: QObject{parent}
{
}
QString ConfigInterface::fileName() const
{
return m_fileName;
}
void ConfigInterface::setFileName(const QString &newFileName)
{
if (m_fileName == newFileName)
return;
m_fileName = newFileName;
std::fstream input(newFileName.toStdString(), std::fstream::in);
if(!input.is_open()) {
return;
}
std::string data;
std::string temp;
while(std::getline(input, temp)) {
data += temp;
}
input.flush();
input.close();
QByteArray arr_data(data);
QJsonDocument doc = QJsonDocument::fromJson(arr_data);
// The following works even the qml part is not initailzed/connected
// do not change back to just emit config()
QMetaObject::invokeMethod(this, &ConfigInterface::config, Qt::QueuedConnection, doc.object());
emit fileNameChanged();
}
2026-09-23 17:36:00 +05:30
void ConfigInterface::deleteConfig()
{
std::filesystem::remove(std::filesystem::path(m_fileName.toStdString()));
emit configDeleted();
}
2026-08-04 21:31:40 +05:30
void ConfigInterface::saveConfig(QJsonObject config)
{
QJsonDocument doc;
doc.setObject(config);
std::string data = doc.toJson().toStdString();
std::fstream output(m_fileName.toStdString(), std::fstream::out);
if(!output.is_open()) {
return;
}
output << data;
output.flush();
output.close();
QMetaObject::invokeMethod(this, &ConfigInterface::config, Qt::QueuedConnection, doc.object());
}