From 538041ab9f387145513beaa0d487a6899c78e59c Mon Sep 17 00:00:00 2001 From: victor Date: Wed, 19 Apr 2017 18:28:54 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=EC=84=A0=20=20-=20UdpHandler?= =?UTF-8?q?=EB=A5=BC=20=EC=8B=B1=EA=B8=80=ED=86=A4=20=EA=B5=AC=EC=A1=B0?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20=20-=20MainWindow=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9E=90=EC=97=90=EC=84=9C=20=EC=88=98=ED=96=89?= =?UTF-8?q?=ED=95=98=EB=8D=98=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=EC=9D=84=20main=20=ED=95=A8=EC=88=98=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=A0=84=20=20-=20Oven=EC=9D=98=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=EB=A5=BC=20private=EC=9C=BC=EB=A1=9C=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/burnertestwindow.cpp | 6 +- app/gui/oven_control/burnertestwindow.h | 2 +- app/gui/oven_control/componenttestwindow.cpp | 5 +- app/gui/oven_control/componenttestwindow.h | 2 +- app/gui/oven_control/configwindow.cpp | 6 +- app/gui/oven_control/configwindow.h | 3 +- app/gui/oven_control/engineermenuwindow.cpp | 6 +- app/gui/oven_control/engineermenuwindow.h | 4 +- app/gui/oven_control/fantestwindow.cpp | 5 +- app/gui/oven_control/fantestwindow.h | 2 +- app/gui/oven_control/functiontestwindow.cpp | 14 ++--- app/gui/oven_control/functiontestwindow.h | 5 +- app/gui/oven_control/main.cpp | 24 ++++---- app/gui/oven_control/mainwindow.cpp | 86 +++++++++++++++------------- app/gui/oven_control/mainwindow.h | 20 +++---- app/gui/oven_control/manualcookwindow.cpp | 4 +- app/gui/oven_control/manualcookwindow.h | 2 +- app/gui/oven_control/oven.h | 4 +- app/gui/oven_control/ovenstatics.cpp | 7 +-- app/gui/oven_control/ovenstatics.h | 2 +- app/gui/oven_control/udphandler.cpp | 2 + app/gui/oven_control/udphandler.h | 16 +++++- app/gui/oven_control/valvetestwindow.cpp | 5 +- app/gui/oven_control/valvetestwindow.h | 2 +- app/gui/oven_control/washtestwindow.cpp | 5 +- app/gui/oven_control/washtestwindow.h | 2 +- app/gui/oven_control/washwindow.cpp | 4 +- app/gui/oven_control/washwindow.h | 2 +- 28 files changed, 133 insertions(+), 114 deletions(-) diff --git a/app/gui/oven_control/burnertestwindow.cpp b/app/gui/oven_control/burnertestwindow.cpp index fcc94a9..4e22698 100644 --- a/app/gui/oven_control/burnertestwindow.cpp +++ b/app/gui/oven_control/burnertestwindow.cpp @@ -3,15 +3,17 @@ #include -BurnerTestWindow::BurnerTestWindow(QWidget *parent, UdpHandler *udp) : +BurnerTestWindow::BurnerTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::BurnerTestWindow), udp(udp) + ui(new Ui::BurnerTestWindow) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); + steamTimer.setInterval(5 * 60 * 1000); upperTimer.setInterval(5 * 60 * 1000); lowerTimer.setInterval(5 * 60 * 1000); diff --git a/app/gui/oven_control/burnertestwindow.h b/app/gui/oven_control/burnertestwindow.h index 46ccb45..2e37d43 100644 --- a/app/gui/oven_control/burnertestwindow.h +++ b/app/gui/oven_control/burnertestwindow.h @@ -15,7 +15,7 @@ class BurnerTestWindow : public QMainWindow Q_OBJECT public: - explicit BurnerTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit BurnerTestWindow(QWidget *parent = 0); ~BurnerTestWindow(); private slots: diff --git a/app/gui/oven_control/componenttestwindow.cpp b/app/gui/oven_control/componenttestwindow.cpp index 89410eb..a978f75 100644 --- a/app/gui/oven_control/componenttestwindow.cpp +++ b/app/gui/oven_control/componenttestwindow.cpp @@ -1,15 +1,16 @@ #include "componenttestwindow.h" #include "ui_componenttestwindow.h" -ComponentTestWindow::ComponentTestWindow(QWidget *parent, UdpHandler *udp) : +ComponentTestWindow::ComponentTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::ComponentTestWindow), udp(udp) + ui(new Ui::ComponentTestWindow) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); connect(udp, SIGNAL(changed()), this, SLOT(onDataChanged())); damperTimer.setInterval(10 * 1000); diff --git a/app/gui/oven_control/componenttestwindow.h b/app/gui/oven_control/componenttestwindow.h index 7625d2b..33dd385 100644 --- a/app/gui/oven_control/componenttestwindow.h +++ b/app/gui/oven_control/componenttestwindow.h @@ -15,7 +15,7 @@ class ComponentTestWindow : public QMainWindow Q_OBJECT public: - explicit ComponentTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit ComponentTestWindow(QWidget *parent = 0); ~ComponentTestWindow(); private slots: diff --git a/app/gui/oven_control/configwindow.cpp b/app/gui/oven_control/configwindow.cpp index 8c852c4..f7893f1 100644 --- a/app/gui/oven_control/configwindow.cpp +++ b/app/gui/oven_control/configwindow.cpp @@ -3,9 +3,9 @@ #include "functiontestwindow.h" -ConfigWindow::ConfigWindow(QWidget *parent, UdpHandler *udp) : +ConfigWindow::ConfigWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::ConfigWindow), udp(udp) + ui(new Ui::ConfigWindow) { ui->setupUi(this); @@ -20,7 +20,7 @@ ConfigWindow::~ConfigWindow() void ConfigWindow::on_pushButton_clicked() { - FunctionTestWindow *w = new FunctionTestWindow(this, udp); + FunctionTestWindow *w = new FunctionTestWindow(this); w->setAttribute((Qt::WA_DeleteOnClose)); w->showFullScreen(); } diff --git a/app/gui/oven_control/configwindow.h b/app/gui/oven_control/configwindow.h index 8205311..1f4794c 100644 --- a/app/gui/oven_control/configwindow.h +++ b/app/gui/oven_control/configwindow.h @@ -14,7 +14,7 @@ class ConfigWindow : public QMainWindow Q_OBJECT public: - explicit ConfigWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit ConfigWindow(QWidget *parent = 0); ~ConfigWindow(); private slots: @@ -22,7 +22,6 @@ private slots: private: Ui::ConfigWindow *ui; - UdpHandler *udp; }; #endif // CONFIGWINDOW_H diff --git a/app/gui/oven_control/engineermenuwindow.cpp b/app/gui/oven_control/engineermenuwindow.cpp index e2ffa90..b883649 100644 --- a/app/gui/oven_control/engineermenuwindow.cpp +++ b/app/gui/oven_control/engineermenuwindow.cpp @@ -6,9 +6,9 @@ #include "functiontestwindow.h" #include "ovenstatics.h" -engineermenuwindow::engineermenuwindow(QWidget *parent, UdpHandler *udp) : +engineermenuwindow::engineermenuwindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::engineermenuwindow), udp(udp) + ui(new Ui::engineermenuwindow) { ui->setupUi(this); @@ -47,7 +47,7 @@ void engineermenuwindow::on_realdatabutton_clicked() void engineermenuwindow::on_functiontestbutton_clicked() { - FunctionTestWindow *w = new FunctionTestWindow(this, udp); + FunctionTestWindow *w = new FunctionTestWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); diff --git a/app/gui/oven_control/engineermenuwindow.h b/app/gui/oven_control/engineermenuwindow.h index 1f467ad..be7a2ec 100644 --- a/app/gui/oven_control/engineermenuwindow.h +++ b/app/gui/oven_control/engineermenuwindow.h @@ -2,7 +2,6 @@ #define ENGINEERMENUWINDOW_H #include -#include "udphandler.h" namespace Ui { class engineermenuwindow; @@ -13,7 +12,7 @@ class engineermenuwindow : public QMainWindow Q_OBJECT public: - explicit engineermenuwindow(QWidget *parent = 0 , UdpHandler *udp = 0); + explicit engineermenuwindow(QWidget *parent = 0); ~engineermenuwindow(); private slots: @@ -27,7 +26,6 @@ private slots: private: Ui::engineermenuwindow *ui; - UdpHandler *udp; }; #endif // ENGINEERMENUWINDOW_H diff --git a/app/gui/oven_control/fantestwindow.cpp b/app/gui/oven_control/fantestwindow.cpp index 8869bd3..b94fb99 100644 --- a/app/gui/oven_control/fantestwindow.cpp +++ b/app/gui/oven_control/fantestwindow.cpp @@ -1,15 +1,16 @@ #include "fantestwindow.h" #include "ui_fantestwindow.h" -FanTestWindow::FanTestWindow(QWidget *parent, UdpHandler *udp) : +FanTestWindow::FanTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::FanTestWindow), udp(udp) + ui(new Ui::FanTestWindow) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); connect(udp, SIGNAL(changed()), this, SLOT(onDataChanged())); currentFan = Fan1; diff --git a/app/gui/oven_control/fantestwindow.h b/app/gui/oven_control/fantestwindow.h index ddf5e12..3864172 100644 --- a/app/gui/oven_control/fantestwindow.h +++ b/app/gui/oven_control/fantestwindow.h @@ -17,7 +17,7 @@ class FanTestWindow : public QMainWindow enum Direction { ClockWise, CounterClockWise }; public: - explicit FanTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit FanTestWindow(QWidget *parent = 0); ~FanTestWindow(); private slots: diff --git a/app/gui/oven_control/functiontestwindow.cpp b/app/gui/oven_control/functiontestwindow.cpp index c9353ed..3dae585 100644 --- a/app/gui/oven_control/functiontestwindow.cpp +++ b/app/gui/oven_control/functiontestwindow.cpp @@ -8,9 +8,9 @@ #include "fantestwindow.h" #include "gastestwindow.h" -FunctionTestWindow::FunctionTestWindow(QWidget *parent, UdpHandler *udp) : +FunctionTestWindow::FunctionTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::FunctionTestWindow), udp(udp) + ui(new Ui::FunctionTestWindow) { ui->setupUi(this); @@ -27,31 +27,31 @@ FunctionTestWindow::~FunctionTestWindow() void FunctionTestWindow::on_burnerTestButton_clicked() { - BurnerTestWindow *w = new BurnerTestWindow(this, udp); + BurnerTestWindow *w = new BurnerTestWindow(this); w->showFullScreen(); } void FunctionTestWindow::on_componentTestButton_clicked() { - ComponentTestWindow *w = new ComponentTestWindow(this, udp); + ComponentTestWindow *w = new ComponentTestWindow(this); w->showFullScreen(); } void FunctionTestWindow::on_valveTestButton_clicked() { - ValveTestWindow *w = new ValveTestWindow(this, udp); + ValveTestWindow *w = new ValveTestWindow(this); w->showFullScreen(); } void FunctionTestWindow::on_washTestButton_clicked() { - WashTestWindow *w = new WashTestWindow(this, udp); + WashTestWindow *w = new WashTestWindow(this); w->showFullScreen(); } void FunctionTestWindow::on_fanTestButton_clicked() { - FanTestWindow *w = new FanTestWindow(this, udp); + FanTestWindow *w = new FanTestWindow(this); w->showFullScreen(); } diff --git a/app/gui/oven_control/functiontestwindow.h b/app/gui/oven_control/functiontestwindow.h index 09d9fac..184ba0b 100644 --- a/app/gui/oven_control/functiontestwindow.h +++ b/app/gui/oven_control/functiontestwindow.h @@ -3,8 +3,6 @@ #include -#include "udphandler.h" - namespace Ui { class FunctionTestWindow; } @@ -14,7 +12,7 @@ class FunctionTestWindow : public QMainWindow Q_OBJECT public: - explicit FunctionTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit FunctionTestWindow(QWidget *parent = 0); ~FunctionTestWindow(); private slots: @@ -32,7 +30,6 @@ private slots: private: Ui::FunctionTestWindow *ui; - UdpHandler *udp; }; #endif // FUNCTIONTESTWINDOW_H diff --git a/app/gui/oven_control/main.cpp b/app/gui/oven_control/main.cpp index 40ca945..28b4dca 100644 --- a/app/gui/oven_control/main.cpp +++ b/app/gui/oven_control/main.cpp @@ -1,7 +1,6 @@ #include "mainwindow.h" -#include "manualcookwindow.h" -#include "functiontestwindow.h" -#include "autocookselectionwindow.h" +#include "oven.h" +#include "ovencontroller.h" #include "udphandler.h" #include @@ -9,19 +8,18 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); - MainWindow w; - w.showFullScreen(); + Oven *oven = Oven::getInstance(); + + OvenController *interface = new OvenController(oven, oven); + oven->setInterface(interface); -// AutoCookSelectionWindow w; -// w.showFullScreen(); -// ManualCookWindow w; -// w.show(); + UdpHandler *udp = UdpHandler::getInstance(); + interface->setUdpHandler(udp); -// UdpHandler *udp = new UdpHandler; -// udp->init(); + OvenStatistics::getInstance(oven); -// FunctionTestWindow *w = new FunctionTestWindow(0, udp); -// w->showFullScreen(); + MainWindow w; + w.showFullScreen(); return a.exec(); } diff --git a/app/gui/oven_control/mainwindow.cpp b/app/gui/oven_control/mainwindow.cpp index cbb7ef9..8c99182 100644 --- a/app/gui/oven_control/mainwindow.cpp +++ b/app/gui/oven_control/mainwindow.cpp @@ -18,38 +18,6 @@ MainWindow::MainWindow(QWidget *parent) : ui(new Ui::MainWindow) { ui->setupUi(this); - - oven = Oven::getInstance(); - - OvenController *interface = new OvenController(this, oven); - oven->setInterface(interface); - - udp = new UdpHandler(this); - - qDebug() << udp->init(); - interface->setUdpHandler(udp); - - ovenStatistics = OvenStatistics::getInstance(this,udp,oven); - - QSignalMapper *sm = new QSignalMapper(this); - sm->setMapping(ui->steamButton, (int) Oven::SteamMode); - sm->setMapping(ui->combiButton, (int) Oven::CombinationMode); - sm->setMapping(ui->dryheatButton, (int) Oven::HeatMode); - connect(ui->steamButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(ui->combiButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(ui->dryheatButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(sm, SIGNAL(mapped(int)), this, SLOT(onModeButtonClicked(int))); - - ManualCookWindow *window = new ManualCookWindow(this); - window->setWindowModality(Qt::WindowModal); - window->hide(); - - connect(ui->steamButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - connect(ui->combiButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - connect(ui->dryheatButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - - connect(this, SIGNAL(modeButtonClicked()), window, SLOT(showFullScreen())); - connect(this, SIGNAL(modeButtonClicked()), window, SLOT(raise())); } MainWindow::~MainWindow() @@ -57,6 +25,14 @@ MainWindow::~MainWindow() delete ui; } +void MainWindow::showManualCookWindow(Oven::Mode mode) +{ + ManualCookWindow *w = new ManualCookWindow(this, mode); + w->setWindowModality(Qt::WindowModal); + w->showFullScreen(); + w->raise(); +} + void MainWindow::showAutoCookSelectionWindow(Define::CookType type) { AutoCookSelectionWindow *w = new AutoCookSelectionWindow(this, type); @@ -65,17 +41,19 @@ void MainWindow::showAutoCookSelectionWindow(Define::CookType type) w->raise(); } -void MainWindow::onModeButtonClicked(int mode) +void MainWindow::on_steamButton_clicked() { - oven->setDefault((Oven::Mode) mode); + showManualCookWindow(Oven::SteamMode); } -void MainWindow::on_configButton_clicked() +void MainWindow::on_combiButton_clicked() { - engineermenuwindow *w = new engineermenuwindow(this, udp); - w->setWindowModality(Qt::WindowModal); - w->showFullScreen(); - w->raise(); + showManualCookWindow(Oven::CombinationMode); +} + +void MainWindow::on_dryheatButton_clicked() +{ + showManualCookWindow(Oven::HeatMode); } void MainWindow::on_poultryButton_clicked() @@ -88,14 +66,42 @@ void MainWindow::on_meatButton_clicked() showAutoCookSelectionWindow(Define::Meat); } +void MainWindow::on_fishButton_clicked() +{ + showAutoCookSelectionWindow(Define::Fish); +} + +void MainWindow::on_dessertButton_clicked() +{ + showAutoCookSelectionWindow(Define::Desert); +} + +void MainWindow::on_grainButton_clicked() +{ + showAutoCookSelectionWindow(Define::Vegetable); +} + void MainWindow::on_breadButton_clicked() { showAutoCookSelectionWindow(Define::Bread); } +void MainWindow::on_etcButton_clicked() +{ + showAutoCookSelectionWindow(Define::Etc); +} + void MainWindow::on_washButton_clicked() { - WashWindow *w = new WashWindow(this, udp); + WashWindow *w = new WashWindow(this); + w->setWindowModality(Qt::WindowModal); + w->showFullScreen(); + w->raise(); +} + +void MainWindow::on_configButton_clicked() +{ + engineermenuwindow *w = new engineermenuwindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); diff --git a/app/gui/oven_control/mainwindow.h b/app/gui/oven_control/mainwindow.h index d38bee1..dc98ba0 100644 --- a/app/gui/oven_control/mainwindow.h +++ b/app/gui/oven_control/mainwindow.h @@ -21,31 +21,29 @@ public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); -signals: - void modeButtonClicked(); - private slots: + void showManualCookWindow(Oven::Mode mode); void showAutoCookSelectionWindow(Define::CookType type); - void onModeButtonClicked(int mode); - void on_configButton_clicked(); + void on_steamButton_clicked(); + void on_combiButton_clicked(); + void on_dryheatButton_clicked(); void on_poultryButton_clicked(); - void on_meatButton_clicked(); - + void on_fishButton_clicked(); + void on_dessertButton_clicked(); + void on_grainButton_clicked(); void on_breadButton_clicked(); + void on_etcButton_clicked(); void on_washButton_clicked(); + void on_configButton_clicked(); void on_helpButton_clicked(); private: Ui::MainWindow *ui; - - Oven *oven; - UdpHandler *udp; - OvenStatistics* ovenStatistics; }; #endif // MAINWINDOW_H diff --git a/app/gui/oven_control/manualcookwindow.cpp b/app/gui/oven_control/manualcookwindow.cpp index 2dac2b5..bdfc402 100644 --- a/app/gui/oven_control/manualcookwindow.cpp +++ b/app/gui/oven_control/manualcookwindow.cpp @@ -8,7 +8,7 @@ #include "preheatpopup.h" #include "cooldownpopup.h" -ManualCookWindow::ManualCookWindow(QWidget *parent) : +ManualCookWindow::ManualCookWindow(QWidget *parent, Oven::Mode mode) : QMainWindow(parent), ui(new Ui::ManualCookWindow) { @@ -105,6 +105,8 @@ ManualCookWindow::ManualCookWindow(QWidget *parent) : ui->openDoorAnimation->load(":/images/animation/door_big_02.png"); ui->openDoorAnimation->load(":/images/animation/door_big_01.png"); ui->openDoorAnimation->start(300); + + oven->setDefault(mode); } ManualCookWindow::~ManualCookWindow() diff --git a/app/gui/oven_control/manualcookwindow.h b/app/gui/oven_control/manualcookwindow.h index 3ec3f59..9003fe6 100644 --- a/app/gui/oven_control/manualcookwindow.h +++ b/app/gui/oven_control/manualcookwindow.h @@ -15,7 +15,7 @@ class ManualCookWindow : public QMainWindow Q_OBJECT public: - explicit ManualCookWindow(QWidget *parent = 0); + explicit ManualCookWindow(QWidget *parent, Oven::Mode mode); ~ManualCookWindow(); signals: diff --git a/app/gui/oven_control/oven.h b/app/gui/oven_control/oven.h index 5cbe67f..8224a6d 100644 --- a/app/gui/oven_control/oven.h +++ b/app/gui/oven_control/oven.h @@ -54,6 +54,8 @@ public: enum Mode { HeatMode, SteamMode, CombinationMode }; private: + explicit Oven(QObject *parent = 0); + Mode mode_; int humidity_; int temp_; @@ -109,8 +111,6 @@ private: static Oven *instance; public: - explicit Oven(QObject *parent = 0); - static Oven *getInstance() { if (instance == 0) instance = new Oven(); diff --git a/app/gui/oven_control/ovenstatics.cpp b/app/gui/oven_control/ovenstatics.cpp index 4a7ffe9..d17d2b7 100644 --- a/app/gui/oven_control/ovenstatics.cpp +++ b/app/gui/oven_control/ovenstatics.cpp @@ -11,12 +11,11 @@ OvenStatistics* OvenStatistics::p_singletonInstance=NULL; -OvenStatistics* OvenStatistics::getInstance(QObject *parent, UdpHandler* udp, Oven* oven){ +OvenStatistics* OvenStatistics::getInstance(QObject *parent){ if(!p_singletonInstance){ - if(udp==NULL) return NULL; p_singletonInstance = new OvenStatistics(parent); - p_singletonInstance->udp = udp; - p_singletonInstance->oven = oven; + p_singletonInstance->udp = UdpHandler::getInstance(); + p_singletonInstance->oven = Oven::getInstance(); //for singletone event debug // MainWindow* mw = (MainWindow*)parent; // connect(mw->pcombiButton, SIGNAL(clicked()),p_singtonInstance, SLOT(onDataChanged())); diff --git a/app/gui/oven_control/ovenstatics.h b/app/gui/oven_control/ovenstatics.h index a29314a..9e41769 100644 --- a/app/gui/oven_control/ovenstatics.h +++ b/app/gui/oven_control/ovenstatics.h @@ -166,7 +166,7 @@ class OvenStatistics : public QObject public: servicedatas* srvdatas; - static OvenStatistics* getInstance(QObject* parent = 0,UdpHandler * udp=0, Oven* oven=0); + static OvenStatistics* getInstance(QObject* parent = 0); static void destroy(); bool getNeedErrorClear(); void clearNeedErrorClear(); diff --git a/app/gui/oven_control/udphandler.cpp b/app/gui/oven_control/udphandler.cpp index 3341cf5..0e179d8 100644 --- a/app/gui/oven_control/udphandler.cpp +++ b/app/gui/oven_control/udphandler.cpp @@ -11,6 +11,8 @@ typedef struct { char body[]; } STRUCT_PACK packet_t; +UdpHandler *UdpHandler::instance = 0; + UdpHandler::UdpHandler(QObject *parent) : QObject(parent) { bzero(&control, sizeof(control)); diff --git a/app/gui/oven_control/udphandler.h b/app/gui/oven_control/udphandler.h index a1bb611..4f364dd 100644 --- a/app/gui/oven_control/udphandler.h +++ b/app/gui/oven_control/udphandler.h @@ -14,8 +14,20 @@ class UdpHandler : public QObject oven_control_t control; oven_state_t state; + static UdpHandler *instance; + public: - explicit UdpHandler(QObject *parent = 0); + static UdpHandler *getInstance() { + if (instance == 0) + { + UdpHandler *u = new UdpHandler; + if (u->init()) + instance = u; + } + + return instance; + } + bool init(); @@ -52,6 +64,8 @@ public slots: void fillData(oven_state_t &container); private: + explicit UdpHandler(QObject *parent = 0); + void processDatagram(QByteArray &datagram); void processControl(oven_control_t *control); void processState(oven_state_t *state); diff --git a/app/gui/oven_control/valvetestwindow.cpp b/app/gui/oven_control/valvetestwindow.cpp index 3c03f95..d2e1c9f 100644 --- a/app/gui/oven_control/valvetestwindow.cpp +++ b/app/gui/oven_control/valvetestwindow.cpp @@ -1,15 +1,16 @@ #include "valvetestwindow.h" #include "ui_valvetestwindow.h" -ValveTestWindow::ValveTestWindow(QWidget *parent, UdpHandler *udp) : +ValveTestWindow::ValveTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::ValveTestWindow), udp(udp) + ui(new Ui::ValveTestWindow) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); connect(udp, SIGNAL(changed()), this, SLOT(onDataChanged())); udp->set(TG_OVEN_MODE, 4); diff --git a/app/gui/oven_control/valvetestwindow.h b/app/gui/oven_control/valvetestwindow.h index 4dd01b0..b8b3653 100644 --- a/app/gui/oven_control/valvetestwindow.h +++ b/app/gui/oven_control/valvetestwindow.h @@ -14,7 +14,7 @@ class ValveTestWindow : public QMainWindow Q_OBJECT public: - explicit ValveTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit ValveTestWindow(QWidget *parent = 0); ~ValveTestWindow(); private slots: diff --git a/app/gui/oven_control/washtestwindow.cpp b/app/gui/oven_control/washtestwindow.cpp index 296953f..da5aafd 100644 --- a/app/gui/oven_control/washtestwindow.cpp +++ b/app/gui/oven_control/washtestwindow.cpp @@ -1,15 +1,16 @@ #include "washtestwindow.h" #include "ui_washtestwindow.h" -WashTestWindow::WashTestWindow(QWidget *parent, UdpHandler *udp) : +WashTestWindow::WashTestWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::WashTestWindow), udp(udp) + ui(new Ui::WashTestWindow) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); connect(udp, SIGNAL(changed()), this, SLOT(onDataChanged())); udp->set(TG_OVEN_MODE, 4); diff --git a/app/gui/oven_control/washtestwindow.h b/app/gui/oven_control/washtestwindow.h index 18db285..8798977 100644 --- a/app/gui/oven_control/washtestwindow.h +++ b/app/gui/oven_control/washtestwindow.h @@ -14,7 +14,7 @@ class WashTestWindow : public QMainWindow Q_OBJECT public: - explicit WashTestWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit WashTestWindow(QWidget *parent = 0); ~WashTestWindow(); private slots: diff --git a/app/gui/oven_control/washwindow.cpp b/app/gui/oven_control/washwindow.cpp index 4d00a6f..2e82263 100644 --- a/app/gui/oven_control/washwindow.cpp +++ b/app/gui/oven_control/washwindow.cpp @@ -3,10 +3,9 @@ #include -WashWindow::WashWindow(QWidget *parent, UdpHandler *udp) : +WashWindow::WashWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::WashWindow), - udp(udp), selected(false), opened(false), started(false), @@ -20,6 +19,7 @@ WashWindow::WashWindow(QWidget *parent, UdpHandler *udp) : ui->progressContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); + udp = UdpHandler::getInstance(); udp->turnOff(TG_SYSTEM); connect(udp, SIGNAL(changed()), SLOT(onChanged())); diff --git a/app/gui/oven_control/washwindow.h b/app/gui/oven_control/washwindow.h index d402ded..6634234 100644 --- a/app/gui/oven_control/washwindow.h +++ b/app/gui/oven_control/washwindow.h @@ -15,7 +15,7 @@ class WashWindow : public QMainWindow Q_OBJECT public: - explicit WashWindow(QWidget *parent = 0, UdpHandler *udp = 0); + explicit WashWindow(QWidget *parent = 0); ~WashWindow(); private slots: -- 2.1.4