Fix bug that prevented aquireing new items

Add save button to master that saves json file
Remove autosave on quit
This commit is contained in:
2021-10-02 14:12:58 +02:00
parent 5fb9ca7cc0
commit 954eec754c
14 changed files with 61 additions and 18 deletions

View File

@ -99,7 +99,6 @@ void AlarmTime::doTick()
{ {
if(time_.time().hour() == QTime::currentTime().hour() && time_.time().minute() == QTime::currentTime().minute()) if(time_.time().hour() == QTime::currentTime().hour() && time_.time().minute() == QTime::currentTime().minute())
{ {
qDebug()<<"Trigger\n";
triggerd_=true; triggerd_=true;
performAction(); performAction();
if(repeat_ == REPEAT_NEVER) exausted = true; if(repeat_ == REPEAT_NEVER) exausted = true;

View File

@ -71,10 +71,12 @@ void ItemStore::clear()
void ItemStore::itemStateChanged(const ItemData& item) void ItemStore::itemStateChanged(const ItemData& item)
{ {
for(unsigned i = 0; i < items_.size(); i++ ) for(unsigned i = 0; i < items_.size(); i++ )
{ {
if(items_[i]->operator==(item)) if(items_[i]->operator==(item))
{ {
if(items_[i]->getValue() != item.getValue())items_[i]->informValue(item.getValue()); if(items_[i]->getValue() != item.getValue())items_[i]->informValue(item.getValue());
} }

View File

@ -1,6 +1,7 @@
#include "poweritem.h" #include "poweritem.h"
#include <QProcess> #include <QProcess>
#include <QApplication> #include <QApplication>
#include <QDebug>
PowerItem::PowerItem(uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value, parent) PowerItem::PowerItem(uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value, parent)
{ {
@ -10,6 +11,7 @@ PowerItem::PowerItem(uint32_t itemIdIn, QString name, uint8_t value, QObject* p
void PowerItem::setValue(uint8_t value) void PowerItem::setValue(uint8_t value)
{ {
qDebug()<<"shutdown";
Item::setValue(value); Item::setValue(value);
if(!value) if(!value)
{ {
@ -20,6 +22,7 @@ void PowerItem::setValue(uint8_t value)
void PowerItem::timeout() void PowerItem::timeout()
{ {
qDebug()<<"shutdown timeout";
QProcess::startDetached("syncoff"); QProcess::startDetached("syncoff");
} }

View File

@ -8,6 +8,7 @@ Microcontroller* Relay::micro_ = nullptr;
Relay::Relay(uint8_t id, QString name, uint16_t address, bool state, QObject* parent): Item(0, name, state, parent), id_(id), address_(address) Relay::Relay(uint8_t id, QString name, uint16_t address, bool state, QObject* parent): Item(0, name, state, parent), id_(id), address_(address)
{ {
itemId_ = address | ((uint32_t)id << 16); itemId_ = address | ((uint32_t)id << 16);
qDebug()<<"Relay "<<id_<<"Name "<<name<<" id "<<itemId_<<" state "<<state<<" addr: "<<address;
} }
void Relay::setValue(uint8_t value) void Relay::setValue(uint8_t value)

View File

@ -118,6 +118,7 @@ int main(int argc, char *argv[])
MainWindow w(&mainObject); MainWindow w(&mainObject);
QObject::connect(&mainObject.micro, SIGNAL(textRecived(QString)), &w, SLOT(changeHeaderLableText(QString))); QObject::connect(&mainObject.micro, SIGNAL(textRecived(QString)), &w, SLOT(changeHeaderLableText(QString)));
QObject::connect(&w, &MainWindow::sigBrodcast, &mainObject, &MainObject::sendJson); QObject::connect(&w, &MainWindow::sigBrodcast, &mainObject, &MainObject::sendJson);
QObject::connect(&w, &MainWindow::sigSave, &mainObject, &MainObject::storeToDisk);
QObject::connect(&w, &MainWindow::createdItem, &mainObject.items, &ItemStore::addItem); QObject::connect(&w, &MainWindow::createdItem, &mainObject.items, &ItemStore::addItem);
if(!mainObject.micro.connected()) w.changeHeaderLableText("No io debug only!"); if(!mainObject.micro.connected()) w.changeHeaderLableText("No io debug only!");
@ -125,7 +126,8 @@ int main(int argc, char *argv[])
int retVal = a.exec(); int retVal = a.exec();
if(masterIODevice) delete masterIODevice; if(masterIODevice)
delete masterIODevice;
return retVal; return retVal;
} }

View File

@ -56,12 +56,6 @@ MainObject::MainObject(QIODevice* ioDevice, const QString& settingsPathIn, const
MainObject::~MainObject() MainObject::~MainObject()
{ {
if(master)
{
QJsonObject json;
store(json);
if(!noSave)storeJsonObjectToDisk(json, settingsPath);
}
} }
void MainObject::store(QJsonObject &json) void MainObject::store(QJsonObject &json)
@ -98,9 +92,20 @@ void MainObject::load(const QJsonObject& json)
micro.requestState(); micro.requestState();
} }
void MainObject::storeToDisk()
{
if(master && !noSave)
{
QJsonObject json;
store(json);
storeJsonObjectToDisk(json, settingsPath);
}
}
void MainObject::recivedJson(const QJsonObject json) void MainObject::recivedJson(const QJsonObject json)
{ {
if(master && !noSave)storeJsonObjectToDisk(json, settingsPath); if(master && !noSave)
storeJsonObjectToDisk(json, settingsPath);
load(json); load(json);
} }

View File

@ -72,13 +72,14 @@ public:
~MainObject(); ~MainObject();
void store(QJsonObject& json); void store(QJsonObject& json);
void load(const QJsonObject& json); void load(const QJsonObject& json);
signals: signals:
public slots: public slots:
void storeToDisk();
void sendJson(); void sendJson();
void recivedJson(const QJsonObject json); void recivedJson(const QJsonObject json);

View File

@ -124,14 +124,13 @@ void Microcontroller::setIODevice(QIODevice *port)
std::shared_ptr<Relay> Microcontroller::processRelayLine(const QString& buffer) std::shared_ptr<Relay> Microcontroller::processRelayLine(const QString& buffer)
{ {
QStringList bufferList = buffer.split(' '); QStringList bufferList = buffer.split(' ');
if(bufferList.size() >= 8 && buffer.startsWith("ITEM NUMBER:")) if(bufferList.size() >= 9 && buffer.startsWith("ITEM NUMBER:"))
{ {
QString name; QString name;
for(int i = 8; i < bufferList.size(); i++) name.append(bufferList[i] + ' '); for(int i = 10; i < bufferList.size(); i++) name.append(bufferList[i] + ' ');
if(name.size() > 1)name.remove(name.size()-1, 1); if(name.size() > 1)name.remove(name.size()-1, 1);
else name = "Relay " + QString::number(bufferList[1].toInt(nullptr, 2)); else name = "Relay " + QString::number(bufferList[1].toInt(nullptr, 2));
qDebug()<<"Relay "<<bufferList[2].toInt()<<"Name "<<name<<" id "<<bufferList[4].toInt(nullptr, 2)<<" state "<<bufferList[6].toInt(); return std::shared_ptr<Relay>( new Relay(bufferList[2].toInt(), name, bufferList[4].toInt(nullptr, 2), bufferList[8].toInt()));
return std::shared_ptr<Relay>( new Relay(bufferList[2].toInt(), name, bufferList[4].toInt(nullptr, 2), bufferList[6].toInt()));
} }
return nullptr; return nullptr;
} }
@ -170,7 +169,7 @@ void Microcontroller::processMicroReturn()
if(listMode) processList(_buffer); if(listMode) processList(_buffer);
else else
{ {
if(_buffer.startsWith("Relays:")) if(_buffer.startsWith("Items:"))
{ {
listMode = true; listMode = true;
relayList.clear(); relayList.clear();

View File

@ -15,6 +15,7 @@ public:
static constexpr uint8_t TYPE_PRESSURE = 3; static constexpr uint8_t TYPE_PRESSURE = 3;
static constexpr uint8_t TYPE_BRIGHTNESS = 4; static constexpr uint8_t TYPE_BRIGHTNESS = 4;
static constexpr uint8_t TYPE_BUTTON = 5; static constexpr uint8_t TYPE_BUTTON = 5;
static constexpr uint8_t TYPE_ADC = 6;
static constexpr uint8_t TYPE_LOWBATTERY = 128; static constexpr uint8_t TYPE_LOWBATTERY = 128;
static constexpr uint8_t TYPE_SHUTDOWN_IMMINENT = 251; static constexpr uint8_t TYPE_SHUTDOWN_IMMINENT = 251;
static constexpr uint8_t TYPE_OCUPANCY = 252; static constexpr uint8_t TYPE_OCUPANCY = 252;

View File

@ -89,6 +89,8 @@ void ActorSettingsDialog::init()
if(actor_->getTriggerValue() == 0) ui->comboBox_action->setCurrentIndex(0); if(actor_->getTriggerValue() == 0) ui->comboBox_action->setCurrentIndex(0);
else if(actor_->getTriggerValue() == 1) ui->comboBox_action->setCurrentIndex(1); else if(actor_->getTriggerValue() == 1) ui->comboBox_action->setCurrentIndex(1);
else ui->comboBox_action->setCurrentIndex(2); else ui->comboBox_action->setCurrentIndex(2);
ui->label_Exausted->setText(actor_->isExausted() ? "True" : "False");
} }
ActorSettingsDialog::~ActorSettingsDialog() ActorSettingsDialog::~ActorSettingsDialog()
@ -107,7 +109,7 @@ void ActorSettingsDialog::valueChanged(int value)
actor_->setTriggerValue(value); actor_->setTriggerValue(value);
} }
void ActorSettingsDialog::hideCancle(const bool hide) void ActorSettingsDialog::hideCancle([[maybe_unused]] const bool hide)
{ {
} }

View File

@ -63,6 +63,30 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Exausted:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_Exausted">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>False</string>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<widget class="QPushButton" name="pushButton_editItem"> <widget class="QPushButton" name="pushButton_editItem">
<property name="text"> <property name="text">

View File

@ -24,6 +24,7 @@ AlarmWidget::AlarmWidget(std::shared_ptr<AlarmTime> alarm, QWidget *parent) :
} }
else else
{ {
ui->checkBox->setChecked(true);
ui->radioButton->setEnabled(true); ui->radioButton->setEnabled(true);
ui->radioButton_2->setEnabled(true); ui->radioButton_2->setEnabled(true);
ui->radioButton_3->setEnabled(true); ui->radioButton_3->setEnabled(true);

View File

@ -14,8 +14,10 @@ MainWindow::MainWindow(MainObject * const mainObject, QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
if(!mainObject->master) connect(ui->pushButton_broadcast, &QPushButton::clicked, this, &MainWindow::sigBrodcast); if(!mainObject->master)
else ui->pushButton_broadcast->hide(); connect(ui->pushButton_broadcast, &QPushButton::clicked, this, &MainWindow::sigBrodcast);
else
connect(ui->pushButton_broadcast, &QPushButton::clicked, this, &MainWindow::sigSave);
connect(ui->pushButton_power, SIGNAL(clicked()), this, SLOT(showPowerItemDialog())); connect(ui->pushButton_power, SIGNAL(clicked()), this, SLOT(showPowerItemDialog()));

View File

@ -41,6 +41,7 @@ private:
signals: signals:
void sigBrodcast(); void sigBrodcast();
void sigSave();
void createdItem(std::shared_ptr<Item> item); void createdItem(std::shared_ptr<Item> item);
private slots: private slots: