switched from qsettings to json added editng of actors
This commit is contained in:
parent
b04fbfb5bc
commit
df27b622a0
141 changed files with 4402 additions and 5068 deletions
140
src/actors/actor.cpp
Normal file
140
src/actors/actor.cpp
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue