Refactor config API

This commit is contained in:
LordGrey
2024-08-01 23:07:18 +02:00
parent 4a5b0b6bf2
commit c86af5ce79
42 changed files with 1605 additions and 889 deletions

View File

@@ -23,7 +23,7 @@ class AuthManager : public QObject
private:
friend class HyperionDaemon;
/// constructor is private, can be called from HyperionDaemon
AuthManager(QObject *parent = nullptr, bool readonlyMode = false);
AuthManager(QObject *parent = nullptr);
public:
struct AuthDefinition

View File

@@ -108,8 +108,6 @@ public:
///
QString getActiveDeviceType() const;
bool getReadOnlyMode() const {return _readOnlyMode; }
public slots:
///
@@ -340,14 +338,6 @@ public slots:
///
bool saveSettings(const QJsonObject& config, bool correct = false);
///
/// @brief Restore a complete json config
/// @param config The entire config object
/// @param correct If true will correct json against schema before save
/// @return True on success else false
///
bool restoreSettings(const QJsonObject& config, bool correct = false);
/// ############
/// COMPONENTREGISTER
///
@@ -552,7 +542,7 @@ private:
/// @brief Constructs the Hyperion instance, just accessible for HyperionIManager
/// @param instance The instance index
///
Hyperion(quint8 instance, bool readonlyMode = false);
Hyperion(quint8 instance);
/// instance index
const quint8 _instIndex;
@@ -615,6 +605,4 @@ private:
/// Boblight instance
BoblightServer* _boblightServer;
#endif
bool _readOnlyMode;
};

View File

@@ -59,12 +59,18 @@ public slots:
///
QVector<QVariantMap> getInstanceData() const;
QString getInstanceName(quint8 inst = 0);
///
/// @brief Get all instance indicies of running instances
///
QList<quint8> getRunningInstanceIdx() const;
///
/// @brief Get all instance indicies configured
///
QList<quint8> getInstanceIds() const;
///
/// @brief Start a Hyperion instance
/// @param instance Instance index
@@ -115,8 +121,6 @@ public slots:
///
bool saveName(quint8 inst, const QString& name);
QString getRootPath() const { return _rootPath; }
signals:
///
/// @brief Emits whenever the state of a instance changes according to enum instanceState
@@ -195,9 +199,8 @@ private:
friend class HyperionDaemon;
///
/// @brief Construct the Manager
/// @param The root path of all userdata
///
HyperionIManager(const QString& rootPath, QObject* parent = nullptr, bool readonlyMode = false);
HyperionIManager(QObject* parent = nullptr);
///
/// @brief Start all instances that are marked as enabled in db. Non blocking
@@ -218,12 +221,9 @@ private:
private:
Logger* _log;
InstanceTable* _instanceTable;
const QString _rootPath;
QMap<quint8, Hyperion*> _runningInstances;
QList<quint8> _startQueue;
bool _readonlyMode;
/// All pending requests
QMap<quint8, PendingRequests> _pendingRequests;
};

View File

@@ -4,12 +4,14 @@
#include <utils/settings.h>
#include <utils/version.hpp>
#include <db/SettingsTable.h>
using namespace semver;
// qt includes
#include <QJsonObject>
const int GLOABL_INSTANCE_ID = 255;
const char DEFAULT_VERSION[] = "2.0.0-alpha.8";
class Hyperion;
class SettingsTable;
@@ -26,7 +28,7 @@ public:
/// @params instance Instance index of HyperionInstanceManager
/// @params parent The parent hyperion instance
///
SettingsManager(quint8 instance, QObject* parent = nullptr, bool readonlyMode = false);
SettingsManager(quint8 instance, QObject* parent = nullptr);
///
/// @brief Save a complete json configuration
@@ -52,10 +54,19 @@ public:
QJsonDocument getSetting(settings::type type) const;
///
/// @brief get the full settings object of this instance (with global settings)
/// @brief get a single setting json from configuration
/// @param type The type as string
/// @return The requested json data as QJsonDocument
///
QJsonDocument getSetting(const QString& type) const;
///
/// @brief get the selected settings objects of this instance (including global settings)
/// @return The requested json
///
QJsonObject getSettings() const;
//QJsonObject getSettings(const QStringList& type = {} ) const;
QJsonObject getSettings(const QStringList& filteredTypes = {}) const;
QJsonObject getSettings(const QVariant& instance, const QStringList& filteredTypes = {} ) const;
signals:
///
@@ -73,8 +84,7 @@ private:
///
bool handleConfigUpgrade(QJsonObject& config);
bool resolveConfigVersion(QJsonObject& config);
bool resolveConfigVersion(const QJsonObject& config);
/// Logger instance
Logger* _log;
@@ -97,5 +107,4 @@ private:
semver::version _configVersion;
semver::version _previousVersion;
bool _readonlyMode;
};