mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
* Refactor config API * Corrections * Test Qt 6.8 * Revert "Test Qt 6.8" This reverts commit eceebec49ecf1a3eda281a0630a9a7577b44ef0a. * Corrections 2 * Update Changelog * Add configFilter element for getconfig call * Do not create errors for DB updates when in read-only mode * Have configuration migration and validation before Hyperion starts * Correct Tests * Corrections * Add migration items * Correct windows build * Ensure that first instance as default one exists * Remove dependency between AuthManager and SSDPHandler * Correct typos * Address CodeQL findings * Replace CamkeSettings by Presets and provide debug scenarios
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
// proj
|
|
#include <hyperion/SettingsManager.h>
|
|
|
|
#include <db/SettingsTable.h>
|
|
#include <utils/JsonUtils.h>
|
|
#include <utils/jsonschema/QJsonFactory.h>
|
|
|
|
#include <QPair>
|
|
|
|
using namespace semver;
|
|
|
|
SettingsManager::SettingsManager(quint8 instance, QObject* parent)
|
|
: QObject(parent)
|
|
, _log(Logger::getInstance("SETTINGSMGR", "I" + QString::number(instance)))
|
|
, _instance(instance)
|
|
, _sTable(new SettingsTable(instance, this))
|
|
{
|
|
_sTable->addMissingDefaults();
|
|
}
|
|
|
|
QJsonDocument SettingsManager::getSetting(settings::type type) const
|
|
{
|
|
return getSetting(settings::typeToString(type));
|
|
}
|
|
|
|
QJsonDocument SettingsManager::getSetting(const QString& type) const
|
|
{
|
|
return _sTable->getSettingsRecord(type);
|
|
}
|
|
|
|
QJsonObject SettingsManager::getSettings(const QStringList& filteredTypes ) const
|
|
{
|
|
return _sTable->getSettings(filteredTypes);
|
|
}
|
|
|
|
QJsonObject SettingsManager::getSettings(const QVariant& instance, const QStringList& filteredTypes ) const
|
|
{
|
|
return _sTable->getSettings(instance, filteredTypes);
|
|
}
|
|
|
|
QPair<bool, QStringList> SettingsManager::saveSettings(const QJsonObject& config)
|
|
{
|
|
QStringList errorList;
|
|
for (auto &key : config.keys())
|
|
{
|
|
const QJsonValue configItem = config.value(key);
|
|
const QString data = JsonUtils::jsonValueToQString(configItem);
|
|
if (_sTable->getSettingsRecordString(key) != data)
|
|
{
|
|
if (!_sTable->createSettingsRecord(key, data))
|
|
{
|
|
errorList.append(QString("Failed to save configuration item: %1").arg(key));
|
|
return qMakePair (false, errorList);
|
|
}
|
|
emit settingsChanged(settings::stringToType(key), QJsonDocument::fromVariant(configItem.toVariant()));
|
|
}
|
|
}
|
|
return qMakePair (true, errorList );
|
|
}
|