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:
		
							parent
							
								
									5fb9ca7cc0
								
							
						
					
					
						commit
						954eec754c
					
				
					 14 changed files with 61 additions and 18 deletions
				
			
		| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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());
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue