switched from qsettings to json added editng of actors

This commit is contained in:
Carl Klemm 2019-06-06 21:19:12 +02:00
parent b04fbfb5bc
commit df27b622a0
141 changed files with 4402 additions and 5068 deletions

140
src/actors/actor.cpp Normal file
View file

@ -0,0 +1,140 @@
#include "actor.h"
#include<QDebug>
#include "alarmtime.h"
#include "sensoractor.h"
#include "timeractor.h"
#include "regulator.h"
Actor::Actor(QObject *parent): QObject(parent)
{
}
Actor::~Actor()
{
}
void Actor::performAction()
{
if(active)
{
trigger();
sigValue(triggerValue);
}
}
void Actor::makeActive()
{
active = true;
}
void Actor::makeInactive()
{
active = false;
}
QString Actor::actionName()
{
QString string;
if(triggerValue == 0 ) string = "off";
else if(triggerValue == 1 ) string = "on";
else string = "value to " + QString::number(triggerValue);
return string;
}
void Actor::setActive(uint8_t state)
{
state ? makeActive() : makeInactive();
}
bool Actor::isActive()
{
return active;
}
bool Actor::isExausted()
{
return exausted;
}
void Actor::store(QJsonObject& json)
{
json["Active"] = active;
json["Exausted"] = exausted;
if(!name.isEmpty()) json["Name"] = name;
json["TriggerValue"] = triggerValue;
}
void Actor::load(const QJsonObject& json)
{
active = json["Active"].toBool();
exausted = json["Exausted"].toBool();
name = json["Name"].toString("");
triggerValue = json["TriggerValue"].toInt();
}
void Actor::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Active", active);
settings->setValue(subsecton + "Exausted", exausted);
if(!name.isEmpty())settings->setValue(subsecton + "Name", name);
settings->setValue(subsecton + "TriggerValue", triggerValue);
}
void Actor::load(QString subsecton, QSettings* settings)
{
active = settings->value(subsecton + "Active").toBool();
exausted = settings->value(subsecton + "Exausted").toBool();
if(settings->contains(subsecton + "Name"))name = settings->value(subsecton + "Name").toString();
triggerValue = settings->value(subsecton + "TriggerValue").toUInt();
}
void Actor::setTriggerValue(uint8_t value)
{
triggerValue=value;
}
uint8_t Actor::getTriggerValue()
{
return triggerValue;
}
QString Actor::getName()
{
if(name.size() > 0) return name;
else return "Actor";
}
void Actor::onValueChanged(uint8_t value)
{
}
Actor* Actor::createActor(const QString& type)
{
Actor* actor = nullptr;
if(type == "Alarm") actor = new AlarmTime();
else if(type == "Sensor") actor = new SensorActor();
else if(type == "Timer") actor = new TimerActor();
else if(type == "Regulator") actor = new Regulator();
else if(type == "Actor") actor = new Actor();
return actor;
}
Actor* Actor::loadActor(const QJsonObject &json)
{
QString type = json["Type"].toString("Actor");
Actor* actor = createActor(type);
if(actor) actor->load(json);
return actor;
}
Actor* Actor::loadActor(QString subsecton, QSettings* settings)
{
QString type = settings->value(subsecton + "Type").toString();
Actor* actor = createActor(type);
if(actor) actor->load(subsecton, settings);
return actor;
}