From f97672f519e544f0e17f8548ea381f826c8621fc Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 4 Jul 2017 14:31:45 +0900 Subject: [PATCH] =?UTF-8?q?=ED=98=84=EC=9E=AC=20=EC=9E=90=EC=8B=9D=20?= =?UTF-8?q?=EC=B0=BD=EC=9D=B4=20=ED=99=98=EA=B2=BD=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B0=BD=EC=9D=B4=20=EC=95=84=EB=8B=90=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=EB=A7=8C=20=EC=82=AD=EC=A0=9C=ED=95=98=EB=8A=94=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80=20-=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EB=B0=9C=EC=83=9D=20=EC=8B=9C=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=20-=20=EA=B8=B0=EC=A1=B4=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=8A=94=20=EC=9E=90=EC=8B=9D=EC=9D=B4=20=ED=95=AD=EC=83=81=20?= =?UTF-8?q?=EC=9E=88=EC=9D=84=20=EA=B1=B0=EB=9D=BC=20=EA=B0=80=EC=A0=95?= =?UTF-8?q?=ED=96=88=EA=B3=A0,=20=EC=9D=B4=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=8A=94=20=EC=9E=90=EC=8B=9D=EC=9D=B4=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EC=88=98=EB=8F=84=20=EC=9E=88=EA=B8=B0=EC=97=90=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD=20=EC=9E=88?= =?UTF-8?q?=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/mainwindow.cpp | 32 ++++++++++++++++++++++++-------- app/gui/oven_control/mainwindow.h | 4 ++++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app/gui/oven_control/mainwindow.cpp b/app/gui/oven_control/mainwindow.cpp index 5f869bb..a595ceb 100644 --- a/app/gui/oven_control/mainwindow.cpp +++ b/app/gui/oven_control/mainwindow.cpp @@ -43,15 +43,19 @@ void MainWindow::jump(QMainWindow *newChild) if (instance->child) instance->child->deleteLater(); - instance->child = newChild; + instance->newChild(newChild); } void MainWindow::killChild() { if (instance->child) instance->child->deleteLater(); +} - instance->child = NULL; +void MainWindow::killChildCook() +{ + if (instance->child && !instance->child->inherits("ConfigWindow")) + instance->child->deleteLater(); } void MainWindow::keyPressEvent(QKeyEvent *event) @@ -113,7 +117,7 @@ void MainWindow::showManualCookWindow(Define::Mode mode) w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::showAutoCookSelectionWindow(Define::CookType type) @@ -123,7 +127,19 @@ void MainWindow::showAutoCookSelectionWindow(Define::CookType type) w->showFullScreen(); w->raise(); - child = w; + newChild(w); +} + +void MainWindow::newChild(QMainWindow *newChild) +{ + child = newChild; + connect(newChild, SIGNAL(destroyed(QObject*)), this, SLOT(onChildDestroyed(QObject*))); +} + +void MainWindow::onChildDestroyed(QObject *destroyed) +{ + if (destroyed == child) + child = NULL; } void MainWindow::on_steamButton_clicked() @@ -183,7 +199,7 @@ void MainWindow::on_primeButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_multiButton_clicked() @@ -198,7 +214,7 @@ void MainWindow::on_programmingButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_washButton_clicked() @@ -208,7 +224,7 @@ void MainWindow::on_washButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_configButton_clicked() @@ -218,7 +234,7 @@ void MainWindow::on_configButton_clicked() w->showFullScreen(); w->raise(); - child = w; + newChild(w); } void MainWindow::on_helpButton_clicked() diff --git a/app/gui/oven_control/mainwindow.h b/app/gui/oven_control/mainwindow.h index 741d2c3..4c767d6 100644 --- a/app/gui/oven_control/mainwindow.h +++ b/app/gui/oven_control/mainwindow.h @@ -22,6 +22,7 @@ public: static MainWindow *getInstance() { return instance; } static void jump(QMainWindow *newChild); static void killChild(); + static void killChildCook(); protected: void keyPressEvent(QKeyEvent *event); @@ -40,6 +41,9 @@ private slots: void showManualCookWindow(Define::Mode mode); void showAutoCookSelectionWindow(Define::CookType type); + void newChild(QMainWindow *newChild); + void onChildDestroyed(QObject *destroyed); + void on_steamButton_clicked(); void on_combiButton_clicked(); void on_dryheatButton_clicked(); -- 2.1.4