configuration.cpp
Code: Select all
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include "qdom.h"
#include
#include
class Configuration : public QObject
{
Q_OBJECT
public:
Configuration();
/* non zone members */
Q_PROPERTY(QVariantList getAmbientLoopConfigurations READ getAmbientLoopConfigurations CONSTANT)
struct AmbientLoopConfiguration {
QString mName = "foo";
QString mFile = "bar";
};
struct ShellyConfiguration {
QString mID;
QString mIP;
};
struct CameraConfiguration {
QString mName;
QString mLowRTSP;
QString mMedRTSP;
QString mHighRTSP;
};
struct PresetConfiguration {
QString mName;
QString mColorCode;
};
struct SceneItemConfiguration {
bool mState;
QString mDevice;
QString mColorCode;
};
struct SceneGroupConfiguration {
QString mName;
QList mZones;
QList mSceneItems;
};
/* zone members */
struct LightConfiguration {
QString mName;
QString mShellyID;
};
struct SensorConfiguration {
QString mName;
QString mID;
};
struct ZoneConfiguration {
QString mName;
QString mColorCode;
QList mLightConfigurations;
QList mSensorConfigurations;
};
/* base config object */
struct Config
{
QList mZoneConfigurations;
QList mShellyConfigurations;
QList mCameraConfigurations;
QList mPresetConfigurations;
QList mSceneGroupConfigurations;
QList mAmbientLoopConfigurations;
};
Q_INVOKABLE Config getConfiguration() { return this->config; };
QVariantList getAmbientLoopConfigurations() {
QVariantList l;
for (Configuration::AmbientLoopConfiguration &c : this->config.mAmbientLoopConfigurations) {
l.append(QVariant::fromValue(c));
}
return l;
};
Q_INVOKABLE bool loadBaseConfiguration();
Q_INVOKABLE bool loadUserDefinedConfiguration();
private:
Config config;
QDomDocument validateConfigFile(QString config);
};
#endif // CONFIGURATION_H
Code: Select all
Configuration *configuration = new Configuration();
configuration->loadBaseConfiguration();
configuration->loadUserDefinedConfiguration();
..
qmlRegisterType("smah.configuration", 1, 0, "Configuration");
qmlRegisterType("smah.configuration.ambient", 1, 0, "ConfigurationAmbient");
..
engine.rootContext()->setContextProperty("configuration", configuration);
Code: Select all
import QtQuick 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.13
import QtMultimedia
import smah.configuration
import smah.configuration.ambient
import "."
import "qrc:/SMAHComponents"
Page {
id: page
x: 0
Component.onCompleted: {
console.log(configuration.getAmbientLoopConfigurations[0])
console.log(configuration.getAmbientLoopConfigurations[0].mName)
}
}
Code: Select all
QVariant(Configuration::AmbientLoopConfiguration, )
undefined
Mobile version