From 74f117db69a188ce1cfa7aaedcc14baa65b061de Mon Sep 17 00:00:00 2001 From: IMback Date: Tue, 9 Oct 2018 18:41:49 +0200 Subject: [PATCH] init branch 2 --- SHinterface.pro | 16 ++- actor.cpp | 6 + actor.h | 46 ++++++++ alarmactions.cpp | 33 ++++++ power.h => alarmactions.h | 6 +- alarmsettingsdialog.ui | 243 +++++++++++++++++++++++++++----------- mainwindow.ui | 203 +++++++++++-------------------- power.cpp | 14 --- relay.cpp | 58 +++++++++ relaydialog.ui | 95 +-------------- relaymanager.cpp | 6 + relaymanager.h | 26 ++++ relaywidget.cpp | 14 +++ relaywidget.h | 22 ++++ relaywidget.ui | 62 ++++++++++ 15 files changed, 532 insertions(+), 318 deletions(-) create mode 100644 actor.cpp create mode 100644 actor.h create mode 100644 alarmactions.cpp rename power.h => alarmactions.h (62%) delete mode 100644 power.cpp create mode 100644 relay.cpp create mode 100644 relaymanager.cpp create mode 100644 relaymanager.h create mode 100644 relaywidget.cpp create mode 100644 relaywidget.h create mode 100644 relaywidget.ui diff --git a/SHinterface.pro b/SHinterface.pro index 4b3fcd1..cfb1f31 100644 --- a/SHinterface.pro +++ b/SHinterface.pro @@ -21,20 +21,28 @@ SOURCES += main.cpp mainwindow.cpp ampmanager.cpp alarmtime.cpp \ microcontroller.cpp \ relaydialog.cpp \ alarmsettingsdialog.cpp \ - power.cpp + alarmactions.cpp \ + relaywidget.cpp \ + actor.cpp \ + relay.cpp \ + relaymanager.cpp HEADERS += mainwindow.h \ ampmanager.h \ - relay.h \ alarmtime.h \ microcontroller.h \ relaydialog.h \ alarmsettingsdialog.h \ - power.h + alarmactions.h \ + relaywidget.h \ + actor.h \ + relay.h \ + relaymanager.h FORMS += mainwindow.ui \ relaydialog.ui \ - alarmsettingsdialog.ui + alarmsettingsdialog.ui \ + relaywidget.ui RESOURCES += \ resources.qrc diff --git a/actor.cpp b/actor.cpp new file mode 100644 index 0000000..4e14234 --- /dev/null +++ b/actor.cpp @@ -0,0 +1,6 @@ +#include "actor.h" + +Actor::Actor() +{ + +} diff --git a/actor.h b/actor.h new file mode 100644 index 0000000..34d0569 --- /dev/null +++ b/actor.h @@ -0,0 +1,46 @@ +#ifndef ACTOR_H +#define ACTOR_H + +#include +#include + +class Actor : public QObject +{ + Q_OBJECT +public: + static const uint8_t ACTION_DEFAULT = 0; + static const uint8_t ACTION_TOGGLE = 1; + static const uint8_t ACTION_ON = 2; + static const uint8_t ACTION_OFF = 3; + static const uint8_t ACTION_TRIGGER_ONLY = 4; + + QString name; + +protected: + uint8_t action_ = 0; + + void performAction(); + +private: + bool active = false; + +signals: + void on(); + void off(); + void trigger(); + void toggle(); + +public slots: + +public: + Actor(); + virtual ~Actor(); + + virtual bool isActive(); + virtual bool makeActive(); + virtual bool makeInactive(); + + void setAction(uint8_t action); +}; + +#endif // ACTOR_H diff --git a/alarmactions.cpp b/alarmactions.cpp new file mode 100644 index 0000000..e49b27e --- /dev/null +++ b/alarmactions.cpp @@ -0,0 +1,33 @@ +#include "alarmactions.h" +#include +#include +#include +#include +#include + +AlarmActions::AlarmActions(QSettings *settings, Microcontroller* micro, QObject *parent) : QObject(parent), _micro(micro), _settings(settings) +{ + +} + +void AlarmActions::syncoff() +{ + _settings->sync(); + for(unsigned int i = 0; i < _micro->getLastState().size(); i++) _micro->relayOff(i); + QProcess::execute ( "syncoff" ); +} + +void AlarmActions::Alarm() +{ + + if(_settings->value("Alarms/alarmSoundFile").toString().size() != 0)_micro->startSunrise(); + if(_settings->value("Alarms/alarmSoundFile").toString().size() != 0) + { + _micro->relayOn(0); + + QTime dieTime= QTime::currentTime().addSecs(10); + while (QTime::currentTime() < dieTime) QApplication::processEvents(QEventLoop::AllEvents, 100); + + QSound::play(_settings->value("Alarms/alarmSoundFile").toString()); + } +} diff --git a/power.h b/alarmactions.h similarity index 62% rename from power.h rename to alarmactions.h index a283c52..d8a5f67 100644 --- a/power.h +++ b/alarmactions.h @@ -5,7 +5,7 @@ #include #include "microcontroller.h" -class Power : public QObject +class AlarmActions : public QObject { private: Q_OBJECT @@ -13,7 +13,7 @@ private: QSettings* _settings; public: - explicit Power(QSettings* settings, Microcontroller* micro, QObject *parent = nullptr); + explicit AlarmActions(QSettings* settings, Microcontroller* micro, QObject *parent = nullptr); signals: @@ -21,6 +21,8 @@ public slots: void syncoff(); + void Alarm(); + }; #endif // POWER_H diff --git a/alarmsettingsdialog.ui b/alarmsettingsdialog.ui index 55297a9..f46d2e0 100644 --- a/alarmsettingsdialog.ui +++ b/alarmsettingsdialog.ui @@ -6,8 +6,8 @@ 0 0 - 423 - 281 + 462 + 406 @@ -15,82 +15,181 @@ - - - Sound File: + + + Alarm + + + + + + + + 0 + 0 + + + + Time + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Enable + + + + + + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Sound File + + + + + + + true + + + + + + + + 0 + 0 + + + + Change + + + + + + + + + 0 + + + + + Sunrise + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Enable + + + + + + - - - 0 + + + + 0 + 0 + - - 0 + + Auto Power off - - - - false - - - - - - - Change - - - - - - - - - 0 - - - - - Sunrise - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Enable - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - + + + + + + + Time + + + + + + + + + + + 0 + 0 + + + + Enable + + + true + + + + + + + diff --git a/mainwindow.ui b/mainwindow.ui index 817d3dd..29735cd 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -246,7 +246,7 @@ - Airconditioner + Soldering iron @@ -264,7 +264,45 @@ - + + + On + + + + + + + + + Qt::Horizontal + + + + + + + + + Test Equitment + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + On @@ -282,67 +320,6 @@ - - - - QLayout::SetDefaultConstraint - - - 0 - - - 0 - - - - - true - - - - 0 - 0 - - - - Shut Down Time: - - - - - - - QAbstractSpinBox::CorrectToNearestValue - - - false - - - QDateTimeEdit::HourSection - - - hh:mm - - - - - - - - 0 - 0 - - - - Enable - - - true - - - - - @@ -486,6 +463,30 @@ + + + + + + Desk Light + + + + + + + 254 + + + false + + + Qt::Horizontal + + + + + @@ -503,77 +504,11 @@ - - - - - CheckBox - - - false - - - - - - - - - - - true - - - Alarm - - - - - - - true - - - QAbstractSpinBox::CorrectToNearestValue - - - - 0 - 0 - 0 - 2000 - 1 - 1 - - - - QDateTimeEdit::HourSection - - - hh:mm - - - false - - - - - - - true - - - - 0 - 0 - - - - Enable - - - - + + + Alarms + + diff --git a/power.cpp b/power.cpp deleted file mode 100644 index ba0802f..0000000 --- a/power.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "power.h" -#include - -Power::Power(QSettings *settings, Microcontroller* micro, QObject *parent) : QObject(parent), _micro(micro), _settings(settings) -{ - -} - -void Power::syncoff() -{ - _settings->sync(); - for(unsigned int i = 0; i < _micro->getLastState().size(); i++) _micro->relayOff(i); - QProcess::execute ( "syncoff" ); -} diff --git a/relay.cpp b/relay.cpp new file mode 100644 index 0000000..358e667 --- /dev/null +++ b/relay.cpp @@ -0,0 +1,58 @@ +#include "relay.h" +#include "microcontroller.h" + +Relay::Relay(Microcontroller* micro, uint8_t id, QString name, uint16_t address, QObject* parent): QObject(parent), micro_(micro), name_(name), id_(id), address_(address) +{ + +} + +QString Relay::getName() +{ + return name_; +} + +void Relay::setName(QString name) +{ + name_ = name; +} + +void Relay::addActor(std::unique_ptr actor) +{ + actors_.push_back(actor); + connect(actor.get(), &Actor::on, this, &Relay::on); + connect(actor.get(), &Actor::off, this, &Relay::off); + connect(actor.get(), &Actor::toggle, this, &Relay::toggle); +} + +std::vector< std::unique_ptr >* Relay::getActors() +{ + return &actors_; +} + +bool Relay::hasActors() +{ + return actors_.size() > 0; +} + +void Relay::on() +{ + micro_->relayOn(id_); + state_ = true; +} + +void Relay::off() +{ + micro_->relayOn(id_); + state_ = false; +} + +void Relay::setState(bool state) +{ + state_ = state; +} + +void Relay::setActorsActive(bool in) +{ + actorsActive_ = true; + for(unsigned i = 0; i < actors_.size(); i++) in ? actors_[i]->makeActive() : actors_[i]->makeInactive(); +} diff --git a/relaydialog.ui b/relaydialog.ui index fbdede4..c1c4cd1 100644 --- a/relaydialog.ui +++ b/relaydialog.ui @@ -20,95 +20,6 @@ Advanced - - - - - - Soldering iron - - - - - - - Qt::Horizontal - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - On - - - true - - - - - - - - - Qt::Horizontal - - - - - - - - - Test Equitment - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - On - - - true - - - - - - - - - Qt::Horizontal - - - @@ -132,7 +43,7 @@ - + On @@ -170,7 +81,7 @@ - + On @@ -208,7 +119,7 @@ - + On diff --git a/relaymanager.cpp b/relaymanager.cpp new file mode 100644 index 0000000..c5a7a03 --- /dev/null +++ b/relaymanager.cpp @@ -0,0 +1,6 @@ +#include "relaymanager.h" + +RelayManager::RelayManager(QObject *parent) : QObject(parent) +{ + +} diff --git a/relaymanager.h b/relaymanager.h new file mode 100644 index 0000000..24f8446 --- /dev/null +++ b/relaymanager.h @@ -0,0 +1,26 @@ +#ifndef RELAYMANAGER_H +#define RELAYMANAGER_H + +#include +#include +#include "relay.h" +#include "microcontroller.h" + +class RelayManager : public QObject +{ + Q_OBJECT +private: + std::vector relays; + + Microcontroller* micro_; + +public: + explicit RelayManager(QObject *parent = nullptr); + +signals: + +public slots: + void +}; + +#endif // RELAYMANAGER_H diff --git a/relaywidget.cpp b/relaywidget.cpp new file mode 100644 index 0000000..2751713 --- /dev/null +++ b/relaywidget.cpp @@ -0,0 +1,14 @@ +#include "relaywidget.h" +#include "ui_relaywidget.h" + +RelayWidget::RelayWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::RelayWidget) +{ + ui->setupUi(this); +} + +RelayWidget::~RelayWidget() +{ + delete ui; +} diff --git a/relaywidget.h b/relaywidget.h new file mode 100644 index 0000000..dfa6c35 --- /dev/null +++ b/relaywidget.h @@ -0,0 +1,22 @@ +#ifndef RELAYWIDGET_H +#define RELAYWIDGET_H + +#include + +namespace Ui { +class RelayWidget; +} + +class RelayWidget : public QWidget +{ + Q_OBJECT + +public: + explicit RelayWidget(QWidget *parent = nullptr); + ~RelayWidget(); + +private: + Ui::RelayWidget *ui; +}; + +#endif // RELAYWIDGET_H diff --git a/relaywidget.ui b/relaywidget.ui new file mode 100644 index 0000000..7d4a394 --- /dev/null +++ b/relaywidget.ui @@ -0,0 +1,62 @@ + + + RelayWidget + + + + 0 + 0 + 751 + 58 + + + + Form + + + + + + TextLabel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + On + + + + + + + Auto + + + + + + + Settings + + + + + + + +