Commit f97672f519e544f0e17f8548ea381f826c8621fc
1 parent
8a2c6871f9
Exists in
master
and in
2 other branches
현재 자식 창이 환경 설정 창이 아닐 경우만 삭제하는 메소드 추가
- 오류 발생 시 호출 - 기존 메소드는 자식이 항상 있을 거라 가정했고, 이 메소드는 자식이 없을 수도 있기에 관련 구조 변경 있음
Showing
2 changed files
with
28 additions
and
8 deletions
Show diff stats
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(); | ... | ... |