Commit f97672f519e544f0e17f8548ea381f826c8621fc

Authored by 김태훈
1 parent 8a2c6871f9
Exists in master and in 2 other branches fhd, fhd-demo

현재 자식 창이 환경 설정 창이 아닐 경우만 삭제하는 메소드 추가

- 오류 발생 시 호출
- 기존 메소드는 자식이 항상 있을 거라 가정했고, 이 메소드는 자식이 없을 수도 있기에 관련 구조 변경 있음
app/gui/oven_control/mainwindow.cpp
... ... @@ -43,15 +43,19 @@ void MainWindow::jump(QMainWindow *newChild)
43 43 if (instance->child)
44 44 instance->child->deleteLater();
45 45  
46   - instance->child = newChild;
  46 + instance->newChild(newChild);
47 47 }
48 48  
49 49 void MainWindow::killChild()
50 50 {
51 51 if (instance->child)
52 52 instance->child->deleteLater();
  53 +}
53 54  
54   - instance->child = NULL;
  55 +void MainWindow::killChildCook()
  56 +{
  57 + if (instance->child && !instance->child->inherits("ConfigWindow"))
  58 + instance->child->deleteLater();
55 59 }
56 60  
57 61 void MainWindow::keyPressEvent(QKeyEvent *event)
... ... @@ -113,7 +117,7 @@ void MainWindow::showManualCookWindow(Define::Mode mode)
113 117 w->showFullScreen();
114 118 w->raise();
115 119  
116   - child = w;
  120 + newChild(w);
117 121 }
118 122  
119 123 void MainWindow::showAutoCookSelectionWindow(Define::CookType type)
... ... @@ -123,7 +127,19 @@ void MainWindow::showAutoCookSelectionWindow(Define::CookType type)
123 127 w->showFullScreen();
124 128 w->raise();
125 129  
126   - child = w;
  130 + newChild(w);
  131 +}
  132 +
  133 +void MainWindow::newChild(QMainWindow *newChild)
  134 +{
  135 + child = newChild;
  136 + connect(newChild, SIGNAL(destroyed(QObject*)), this, SLOT(onChildDestroyed(QObject*)));
  137 +}
  138 +
  139 +void MainWindow::onChildDestroyed(QObject *destroyed)
  140 +{
  141 + if (destroyed == child)
  142 + child = NULL;
127 143 }
128 144  
129 145 void MainWindow::on_steamButton_clicked()
... ... @@ -183,7 +199,7 @@ void MainWindow::on_primeButton_clicked()
183 199 w->showFullScreen();
184 200 w->raise();
185 201  
186   - child = w;
  202 + newChild(w);
187 203 }
188 204  
189 205 void MainWindow::on_multiButton_clicked()
... ... @@ -198,7 +214,7 @@ void MainWindow::on_programmingButton_clicked()
198 214 w->showFullScreen();
199 215 w->raise();
200 216  
201   - child = w;
  217 + newChild(w);
202 218 }
203 219  
204 220 void MainWindow::on_washButton_clicked()
... ... @@ -208,7 +224,7 @@ void MainWindow::on_washButton_clicked()
208 224 w->showFullScreen();
209 225 w->raise();
210 226  
211   - child = w;
  227 + newChild(w);
212 228 }
213 229  
214 230 void MainWindow::on_configButton_clicked()
... ... @@ -218,7 +234,7 @@ void MainWindow::on_configButton_clicked()
218 234 w->showFullScreen();
219 235 w->raise();
220 236  
221   - child = w;
  237 + newChild(w);
222 238 }
223 239  
224 240 void MainWindow::on_helpButton_clicked()
... ...
app/gui/oven_control/mainwindow.h
... ... @@ -22,6 +22,7 @@ public:
22 22 static MainWindow *getInstance() { return instance; }
23 23 static void jump(QMainWindow *newChild);
24 24 static void killChild();
  25 + static void killChildCook();
25 26  
26 27 protected:
27 28 void keyPressEvent(QKeyEvent *event);
... ... @@ -40,6 +41,9 @@ private slots:
40 41 void showManualCookWindow(Define::Mode mode);
41 42 void showAutoCookSelectionWindow(Define::CookType type);
42 43  
  44 + void newChild(QMainWindow *newChild);
  45 + void onChildDestroyed(QObject *destroyed);
  46 +
43 47 void on_steamButton_clicked();
44 48 void on_combiButton_clicked();
45 49 void on_dryheatButton_clicked();
... ...