Commit dcfd897f3155f978bea1e94259a2de7bed87534e
1 parent
e3fcdf4faa
Exists in
master
and in
2 other branches
수동 요리 만들기 추가
Showing
15 changed files
with
3351 additions
and
35 deletions
Show diff stats
app/gui/oven_control/cookprogram.cpp
@@ -0,0 +1,714 @@ | @@ -0,0 +1,714 @@ | ||
1 | +#include "cookprogram.h" | ||
2 | + | ||
3 | +#include <QTimer> | ||
4 | + | ||
5 | +#include "cookbook.h" | ||
6 | + | ||
7 | +namespace { | ||
8 | +Define::CookType toCookType(QString type) | ||
9 | +{ | ||
10 | + if (type == "poutry") | ||
11 | + return Define::Poultry; | ||
12 | + if (type == "meat") | ||
13 | + return Define::Meat; | ||
14 | + if (type == "fish") | ||
15 | + return Define::Fish; | ||
16 | + if (type == "desert") | ||
17 | + return Define::Desert; | ||
18 | + if (type == "vegetable") | ||
19 | + return Define::Vegetable; | ||
20 | + if (type == "bread") | ||
21 | + return Define::Bread; | ||
22 | + if (type == "etc") | ||
23 | + return Define::Etc; | ||
24 | + | ||
25 | + return Define::InvalidCookType; | ||
26 | +} | ||
27 | + | ||
28 | +QString toString(Define::CookType type) | ||
29 | +{ | ||
30 | + switch (type) | ||
31 | + { | ||
32 | + case Define::Poultry: | ||
33 | + return "poultry"; | ||
34 | + case Define::Meat: | ||
35 | + return "meat"; | ||
36 | + case Define::Fish: | ||
37 | + return "fish"; | ||
38 | + case Define::Desert: | ||
39 | + return "desert"; | ||
40 | + case Define::Vegetable: | ||
41 | + return "vegetable"; | ||
42 | + case Define::Bread: | ||
43 | + return "bread"; | ||
44 | + case Define::Etc: | ||
45 | + return "etc"; | ||
46 | + default: | ||
47 | + return QString(); | ||
48 | + } | ||
49 | +} | ||
50 | + | ||
51 | +Define::Mode toMode(QString mode) | ||
52 | +{ | ||
53 | + if (mode == "steam") | ||
54 | + return Define::SteamMode; | ||
55 | + if (mode == "combi") | ||
56 | + return Define::CombiMode; | ||
57 | + if (mode == "dry") | ||
58 | + return Define::DryMode; | ||
59 | + | ||
60 | + return Define::InvalidMode; | ||
61 | +} | ||
62 | + | ||
63 | +QString toString(Define::Mode mode) | ||
64 | +{ | ||
65 | + switch (mode) | ||
66 | + { | ||
67 | + case Define::SteamMode: | ||
68 | + return "steam"; | ||
69 | + case Define::CombiMode: | ||
70 | + return "combi"; | ||
71 | + case Define::DryMode: | ||
72 | + return "dry"; | ||
73 | + default: | ||
74 | + return QString(); | ||
75 | + } | ||
76 | +} | ||
77 | + | ||
78 | +QString name(Define::CookType type, QString root) | ||
79 | +{ | ||
80 | + CookBook book(type); | ||
81 | + return book.name(root); | ||
82 | +} | ||
83 | +} | ||
84 | + | ||
85 | +namespace { | ||
86 | + | ||
87 | +const int maxAuto = 20; | ||
88 | +const int maxManual = 20; | ||
89 | + | ||
90 | +struct AutoEntry | ||
91 | +{ | ||
92 | + int id; | ||
93 | + QString name; | ||
94 | + Define::CookType type; | ||
95 | + QString root; | ||
96 | + int configs[5]; | ||
97 | + | ||
98 | + bool operator==(const AutoEntry &other) | ||
99 | + { | ||
100 | + for (int i = 0; i < 5; i++) | ||
101 | + if (configs[i] != other.configs[i]) | ||
102 | + return false; | ||
103 | + | ||
104 | + return id == other.id | ||
105 | + && name == other.name | ||
106 | + && type == other.type | ||
107 | + && root == other.root; | ||
108 | + } | ||
109 | +}; | ||
110 | + | ||
111 | +struct ManualEntry | ||
112 | +{ | ||
113 | + int id; | ||
114 | + QString name; | ||
115 | + Define::Mode mode; | ||
116 | + int humidity; | ||
117 | + int temp; | ||
118 | + int time; | ||
119 | + int fan; | ||
120 | + int coreTemp; | ||
121 | + | ||
122 | + bool operator==(const ManualEntry &other) | ||
123 | + { | ||
124 | + return id == other.id | ||
125 | + && name == other.name | ||
126 | + && mode == other.mode | ||
127 | + && humidity == other.humidity | ||
128 | + && temp == other.temp | ||
129 | + && time == other.time | ||
130 | + && fan == other.fan | ||
131 | + && coreTemp == other.coreTemp; | ||
132 | + } | ||
133 | +}; | ||
134 | + | ||
135 | +QList<AutoEntry> savedAutoList; | ||
136 | +QList<ManualEntry> savedManualList; | ||
137 | +QList<AutoEntry> currentAutoList; | ||
138 | +QList<ManualEntry> currentManualList; | ||
139 | + | ||
140 | +void readAuto() | ||
141 | +{ | ||
142 | + QFile file("/prime/program/auto.csv"); | ||
143 | + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) | ||
144 | + { | ||
145 | + qDebug() << "File not found: " + file.fileName(); | ||
146 | + return; | ||
147 | + } | ||
148 | + | ||
149 | + QString errorMessage = QString("%3: %1, line %2").arg(file.fileName()); | ||
150 | + int lineCount = 0; | ||
151 | + while (!file.atEnd()) | ||
152 | + { | ||
153 | + lineCount++; | ||
154 | + | ||
155 | + QString line = QString::fromUtf8(file.readLine()).trimmed(); | ||
156 | + if (line.isEmpty()) | ||
157 | + continue; | ||
158 | + | ||
159 | + QString error = errorMessage.arg(lineCount); | ||
160 | + | ||
161 | + QString id = line.section(',', 0, 0).trimmed(); | ||
162 | + if (id.isEmpty()) | ||
163 | + { | ||
164 | + qDebug() << error.arg("Invalid id"); | ||
165 | + continue; | ||
166 | + } | ||
167 | + | ||
168 | + QString name = line.section(',', 1, 1).trimmed(); | ||
169 | + if (name.isEmpty()) | ||
170 | + { | ||
171 | + qDebug() << error.arg("Invalid name"); | ||
172 | + continue; | ||
173 | + } | ||
174 | + | ||
175 | + QString type = line.section(',', 2, 2).trimmed(); | ||
176 | + if (type.isEmpty()) | ||
177 | + { | ||
178 | + qDebug() << error.arg("Invalid type"); | ||
179 | + continue; | ||
180 | + } | ||
181 | + | ||
182 | + QString root = line.section(',', 3, 3).trimmed(); | ||
183 | + if (root.isEmpty()) | ||
184 | + { | ||
185 | + qDebug() << error.arg("Invalid root"); | ||
186 | + continue; | ||
187 | + } | ||
188 | + | ||
189 | + QString config1 = line.section(',', 4, 4).trimmed(); | ||
190 | + if (config1.isEmpty()) | ||
191 | + { | ||
192 | + qDebug() << error.arg("Invalid config1"); | ||
193 | + continue; | ||
194 | + } | ||
195 | + | ||
196 | + QString config2 = line.section(',', 5, 5).trimmed(); | ||
197 | + if (config2.isEmpty()) | ||
198 | + { | ||
199 | + qDebug() << error.arg("Invalid config2"); | ||
200 | + continue; | ||
201 | + } | ||
202 | + | ||
203 | + QString config3 = line.section(',', 6, 6).trimmed(); | ||
204 | + if (config3.isEmpty()) | ||
205 | + { | ||
206 | + qDebug() << error.arg("Invalid config3"); | ||
207 | + continue; | ||
208 | + } | ||
209 | + | ||
210 | + QString config4 = line.section(',', 7, 7).trimmed(); | ||
211 | + if (config4.isEmpty()) | ||
212 | + { | ||
213 | + qDebug() << error.arg("Invalid config4"); | ||
214 | + continue; | ||
215 | + } | ||
216 | + | ||
217 | + QString config5 = line.section(',', 8, 8).trimmed(); | ||
218 | + if (config5.isEmpty()) | ||
219 | + { | ||
220 | + qDebug() << error.arg("Invalid config5"); | ||
221 | + continue; | ||
222 | + } | ||
223 | + | ||
224 | + AutoEntry e; | ||
225 | + | ||
226 | + bool ok; | ||
227 | + e.id = id.toInt(&ok); | ||
228 | + if (!ok) | ||
229 | + { | ||
230 | + qDebug() << error.arg("Invalid id"); | ||
231 | + continue; | ||
232 | + } | ||
233 | + | ||
234 | + e.name = name.replace("\\c", ","); | ||
235 | + | ||
236 | + e.type = toCookType(type); | ||
237 | + if (e.type == Define::InvalidCookType) | ||
238 | + { | ||
239 | + qDebug() << error.arg("Invalid type"); | ||
240 | + continue; | ||
241 | + } | ||
242 | + | ||
243 | + e.root = root; | ||
244 | + | ||
245 | + e.configs[0] = config1.toInt(&ok); | ||
246 | + if (!ok) | ||
247 | + { | ||
248 | + qDebug() << error.arg("Invalid config1"); | ||
249 | + continue; | ||
250 | + } | ||
251 | + | ||
252 | + e.configs[1] = config2.toInt(&ok); | ||
253 | + if (!ok) | ||
254 | + { | ||
255 | + qDebug() << error.arg("Invalid config2"); | ||
256 | + continue; | ||
257 | + } | ||
258 | + | ||
259 | + e.configs[2] = config3.toInt(&ok); | ||
260 | + if (!ok) | ||
261 | + { | ||
262 | + qDebug() << error.arg("Invalid config3"); | ||
263 | + continue; | ||
264 | + } | ||
265 | + | ||
266 | + e.configs[3] = config4.toInt(&ok); | ||
267 | + if (!ok) | ||
268 | + { | ||
269 | + qDebug() << error.arg("Invalid config4"); | ||
270 | + continue; | ||
271 | + } | ||
272 | + | ||
273 | + e.configs[4] = config5.toInt(&ok); | ||
274 | + if (!ok) | ||
275 | + { | ||
276 | + qDebug() << error.arg("Invalid config5"); | ||
277 | + continue; | ||
278 | + } | ||
279 | + | ||
280 | + savedAutoList.append(e); | ||
281 | + } | ||
282 | + | ||
283 | + currentAutoList = savedAutoList; | ||
284 | +} | ||
285 | + | ||
286 | +void readManual() | ||
287 | +{ | ||
288 | + QFile file("/prime/program/manual.csv"); | ||
289 | + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) | ||
290 | + { | ||
291 | + qDebug() << "File not found: " + file.fileName(); | ||
292 | + return; | ||
293 | + } | ||
294 | + | ||
295 | + QString errorMessage = QString("%3: %1, line %2").arg(file.fileName()); | ||
296 | + int lineCount = 0; | ||
297 | + while (!file.atEnd()) | ||
298 | + { | ||
299 | + lineCount++; | ||
300 | + | ||
301 | + QString line = QString::fromUtf8(file.readLine()).trimmed(); | ||
302 | + if (line.isEmpty()) | ||
303 | + continue; | ||
304 | + | ||
305 | + QString error = errorMessage.arg(lineCount); | ||
306 | + | ||
307 | + QString id = line.section(',', 0, 0).trimmed(); | ||
308 | + if (id.isEmpty()) | ||
309 | + { | ||
310 | + qDebug() << error.arg("Invalid id"); | ||
311 | + continue; | ||
312 | + } | ||
313 | + | ||
314 | + QString name = line.section(',', 1, 1).trimmed(); | ||
315 | + if (name.isEmpty()) | ||
316 | + { | ||
317 | + qDebug() << error.arg("Invalid name"); | ||
318 | + continue; | ||
319 | + } | ||
320 | + | ||
321 | + QString mode = line.section(',', 2, 2).trimmed(); | ||
322 | + if (mode.isEmpty()) | ||
323 | + { | ||
324 | + qDebug() << error.arg("Invalid mode"); | ||
325 | + continue; | ||
326 | + } | ||
327 | + | ||
328 | + QString humidity = line.section(',', 3, 3).trimmed(); | ||
329 | + if (humidity.isEmpty()) | ||
330 | + { | ||
331 | + qDebug() << error.arg("Invalid humidity"); | ||
332 | + continue; | ||
333 | + } | ||
334 | + | ||
335 | + QString temp = line.section(',', 4, 4).trimmed(); | ||
336 | + if (temp.isEmpty()) | ||
337 | + { | ||
338 | + qDebug() << error.arg("Invalid temp"); | ||
339 | + continue; | ||
340 | + } | ||
341 | + | ||
342 | + QString time = line.section(',', 5, 5).trimmed(); | ||
343 | + if (time.isEmpty()) | ||
344 | + { | ||
345 | + qDebug() << error.arg("Invalid time"); | ||
346 | + continue; | ||
347 | + } | ||
348 | + | ||
349 | + QString fan = line.section(',', 6, 6).trimmed(); | ||
350 | + if (fan.isEmpty()) | ||
351 | + { | ||
352 | + qDebug() << error.arg("Invalid fan"); | ||
353 | + continue; | ||
354 | + } | ||
355 | + | ||
356 | + QString coreTemp = line.section(',', 7, 7).trimmed(); | ||
357 | + if (coreTemp.isEmpty()) | ||
358 | + { | ||
359 | + qDebug() << error.arg("Invalid coreTemp"); | ||
360 | + continue; | ||
361 | + } | ||
362 | + | ||
363 | + ManualEntry e; | ||
364 | + | ||
365 | + bool ok; | ||
366 | + e.id = id.toInt(&ok); | ||
367 | + if (!ok) | ||
368 | + { | ||
369 | + qDebug() << error.arg("Invalid id"); | ||
370 | + continue; | ||
371 | + } | ||
372 | + | ||
373 | + e.name = name.replace("\\c", ","); | ||
374 | + | ||
375 | + e.mode = toMode(mode); | ||
376 | + if (e.mode == Define::InvalidMode) | ||
377 | + { | ||
378 | + qDebug() << error.arg("Invalid mode"); | ||
379 | + continue; | ||
380 | + } | ||
381 | + | ||
382 | + e.humidity = humidity.toInt(&ok); | ||
383 | + if (!ok) | ||
384 | + { | ||
385 | + qDebug() << error.arg("Invalid humidity"); | ||
386 | + continue; | ||
387 | + } | ||
388 | + | ||
389 | + e.temp = temp.toInt(&ok); | ||
390 | + if (!ok) | ||
391 | + { | ||
392 | + qDebug() << error.arg("Invalid temp"); | ||
393 | + continue; | ||
394 | + } | ||
395 | + | ||
396 | + e.time = time.toInt(&ok); | ||
397 | + if (!ok) | ||
398 | + { | ||
399 | + qDebug() << error.arg("Invalid time"); | ||
400 | + continue; | ||
401 | + } | ||
402 | + | ||
403 | + e.fan = fan.toInt(&ok); | ||
404 | + if (!ok) | ||
405 | + { | ||
406 | + qDebug() << error.arg("Invalid fan"); | ||
407 | + continue; | ||
408 | + } | ||
409 | + | ||
410 | + e.coreTemp = coreTemp.toInt(&ok); | ||
411 | + if (!ok) | ||
412 | + { | ||
413 | + qDebug() << error.arg("Invalid coreTemp"); | ||
414 | + continue; | ||
415 | + } | ||
416 | + | ||
417 | + savedManualList.append(e); | ||
418 | + } | ||
419 | + | ||
420 | + currentManualList = savedManualList; | ||
421 | +} | ||
422 | + | ||
423 | +void writeAuto() | ||
424 | +{ | ||
425 | + QFile file("/prime/program/auto.csv"); | ||
426 | + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) | ||
427 | + { | ||
428 | + qDebug() << "File not opened: " + file.fileName(); | ||
429 | + return; | ||
430 | + } | ||
431 | + | ||
432 | + QTextStream stream(&file); | ||
433 | + stream.setCodec("UTF-8"); | ||
434 | + foreach (AutoEntry e, savedAutoList) | ||
435 | + { | ||
436 | + stream << e.id << "," | ||
437 | + << e.name.replace(",", "\\c").toUtf8() << "," | ||
438 | + << toString(e.type) << "," | ||
439 | + << e.root; | ||
440 | + for (int i = 0; i < 5; i++) | ||
441 | + stream << "," << e.configs[i]; | ||
442 | + | ||
443 | + stream << "\n"; | ||
444 | + } | ||
445 | +} | ||
446 | + | ||
447 | +void writeManual() | ||
448 | +{ | ||
449 | + QFile file("/prime/program/manual.csv"); | ||
450 | + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) | ||
451 | + { | ||
452 | + qDebug() << "File not opened: " + file.fileName(); | ||
453 | + return; | ||
454 | + } | ||
455 | + | ||
456 | + QTextStream stream(&file); | ||
457 | + stream.setCodec("UTF-8"); | ||
458 | + foreach (ManualEntry e, savedManualList) | ||
459 | + { | ||
460 | + stream << e.id << "," | ||
461 | + << e.name.replace(",", "\\c").toUtf8() << "," | ||
462 | + << toString(e.mode) << "," | ||
463 | + << e.humidity << "," | ||
464 | + << e.temp << "," | ||
465 | + << e.time << "," | ||
466 | + << e.fan << "," | ||
467 | + << e.coreTemp << "\n"; | ||
468 | + } | ||
469 | +} | ||
470 | + | ||
471 | +bool initialized = false; | ||
472 | +void initialize() | ||
473 | +{ | ||
474 | + initialized = true; | ||
475 | + | ||
476 | + readAuto(); | ||
477 | + readManual(); | ||
478 | +} | ||
479 | + | ||
480 | +void checkInitialized() | ||
481 | +{ | ||
482 | + if (!initialized) | ||
483 | + initialize(); | ||
484 | +} | ||
485 | + | ||
486 | +int newAutoId() | ||
487 | +{ | ||
488 | + for (int i = 0; i < 1000; i++) | ||
489 | + { | ||
490 | + bool absent = true; | ||
491 | + foreach (AutoEntry e, currentAutoList) | ||
492 | + if (e.id == i) | ||
493 | + { | ||
494 | + absent = false; | ||
495 | + break; | ||
496 | + } | ||
497 | + | ||
498 | + if (absent) | ||
499 | + return i; | ||
500 | + } | ||
501 | + | ||
502 | + return -1; | ||
503 | +} | ||
504 | + | ||
505 | +int newManualId() | ||
506 | +{ | ||
507 | + for (int i = 0; i < 1000; i++) | ||
508 | + { | ||
509 | + bool absent = true; | ||
510 | + foreach (ManualEntry e, currentManualList) | ||
511 | + if (e.id == i) | ||
512 | + { | ||
513 | + absent = false; | ||
514 | + break; | ||
515 | + } | ||
516 | + | ||
517 | + if (absent) | ||
518 | + return i; | ||
519 | + } | ||
520 | + | ||
521 | + return -1; | ||
522 | +} | ||
523 | +} | ||
524 | + | ||
525 | +void CookProgram::add(AutoCookSetting cook) | ||
526 | +{ | ||
527 | + checkInitialized(); | ||
528 | + | ||
529 | + AutoEntry e; | ||
530 | + e.id = newAutoId(); | ||
531 | + e.name = cook.name; | ||
532 | + e.type = cook.type; | ||
533 | + e.root = cook.root; | ||
534 | + | ||
535 | + for (int i = 0; i < 5; i++) | ||
536 | + e.configs[i] = cook.configs[i]; | ||
537 | + | ||
538 | + currentAutoList.append(e); | ||
539 | +} | ||
540 | + | ||
541 | +void CookProgram::add(ManualCookSetting cook) | ||
542 | +{ | ||
543 | + checkInitialized(); | ||
544 | + | ||
545 | + ManualEntry e; | ||
546 | + e.id = newManualId(); | ||
547 | + e.name = "Manual"; | ||
548 | + e.mode = cook.mode; | ||
549 | + e.humidity = cook.humidity; | ||
550 | + e.temp = cook.temp; | ||
551 | + e.time = cook.time; | ||
552 | + e.fan = cook.fan; | ||
553 | + e.coreTemp = cook.coreTempEnabled ? cook.coreTemp : -1; | ||
554 | + | ||
555 | + currentManualList.append(e); | ||
556 | +} | ||
557 | + | ||
558 | +void CookProgram::remove(CookRecord record) | ||
559 | +{ | ||
560 | + checkInitialized(); | ||
561 | + | ||
562 | + switch (record.type) | ||
563 | + { | ||
564 | + case CookRecord::Auto: | ||
565 | + { | ||
566 | + AutoEntry e; | ||
567 | + e.id = record.id; | ||
568 | + e.name = record.name; | ||
569 | + e.type = record.autoRecord.setting.type; | ||
570 | + e.root = record.autoRecord.setting.root; | ||
571 | + for (int i = 0; i < 5; i++) | ||
572 | + e.configs[i] = record.autoRecord.setting.configs[i]; | ||
573 | + | ||
574 | + currentAutoList.removeAll(e); | ||
575 | + } | ||
576 | + break; | ||
577 | + case CookRecord::Manual: | ||
578 | + { | ||
579 | + ManualEntry e; | ||
580 | + e.id = record.id; | ||
581 | + e.name = record.name; | ||
582 | + e.mode = record.manualRecord.setting.mode; | ||
583 | + e.humidity = record.manualRecord.setting.humidity; | ||
584 | + e.temp = record.manualRecord.setting.temp; | ||
585 | + e.time = record.manualRecord.setting.time; | ||
586 | + e.fan = record.manualRecord.setting.fan; | ||
587 | + e.coreTemp = record.manualRecord.setting.coreTempEnabled ? record.manualRecord.setting.coreTemp : -1; | ||
588 | + | ||
589 | + currentManualList.removeAll(e); | ||
590 | + } | ||
591 | + break; | ||
592 | + } | ||
593 | +} | ||
594 | + | ||
595 | +QList<CookRecord> CookProgram::listAuto() | ||
596 | +{ | ||
597 | + checkInitialized(); | ||
598 | + | ||
599 | + QList<CookRecord> list; | ||
600 | + foreach (AutoEntry e, currentAutoList) | ||
601 | + { | ||
602 | + CookRecord r; | ||
603 | + r.type = CookRecord::Auto; | ||
604 | + r.id = e.id; | ||
605 | + r.name = e.name; | ||
606 | + r.autoRecord.setting.name = name(e.type, e.root); | ||
607 | + r.autoRecord.setting.type = e.type; | ||
608 | + r.autoRecord.setting.root = e.root; | ||
609 | + | ||
610 | + for (int i = 0; i < 5; i++) | ||
611 | + r.autoRecord.setting.configs[i] = e.configs[i]; | ||
612 | + | ||
613 | + list.append(r); | ||
614 | + } | ||
615 | + | ||
616 | + return list; | ||
617 | +} | ||
618 | + | ||
619 | +QList<CookRecord> CookProgram::listManual() | ||
620 | +{ | ||
621 | + checkInitialized(); | ||
622 | + | ||
623 | + QList<CookRecord> list; | ||
624 | + foreach (ManualEntry e, currentManualList) | ||
625 | + { | ||
626 | + CookRecord r; | ||
627 | + r.type = CookRecord::Manual; | ||
628 | + r.id = e.id; | ||
629 | + r.name = e.name; | ||
630 | + r.manualRecord.setting.mode = e.mode; | ||
631 | + r.manualRecord.setting.humidity = e.humidity; | ||
632 | + r.manualRecord.setting.temp = e.temp; | ||
633 | + r.manualRecord.setting.time = e.time; | ||
634 | + r.manualRecord.setting.fan = e.fan; | ||
635 | + r.manualRecord.setting.coreTempEnabled = e.coreTemp > 0; | ||
636 | + r.manualRecord.setting.coreTemp = e.coreTemp; | ||
637 | + | ||
638 | + list.append(r); | ||
639 | + } | ||
640 | + | ||
641 | + return list; | ||
642 | +} | ||
643 | + | ||
644 | +void CookProgram::rename(CookRecord record, QString name) | ||
645 | +{ | ||
646 | + checkInitialized(); | ||
647 | + | ||
648 | + switch (record.type) | ||
649 | + { | ||
650 | + case CookRecord::Auto: | ||
651 | + { | ||
652 | + AutoEntry e; | ||
653 | + e.id = record.id; | ||
654 | + e.name = record.name; | ||
655 | + e.type = record.autoRecord.setting.type; | ||
656 | + e.root = record.autoRecord.setting.root; | ||
657 | + for (int i = 0; i < 5; i++) | ||
658 | + e.configs[i] = record.autoRecord.setting.configs[i]; | ||
659 | + | ||
660 | + int index = currentAutoList.indexOf(e); | ||
661 | + if (index != -1) | ||
662 | + { | ||
663 | + AutoEntry &e = currentAutoList[index]; | ||
664 | + e.name = name; | ||
665 | + } | ||
666 | + } | ||
667 | + break; | ||
668 | + case CookRecord::Manual: | ||
669 | + { | ||
670 | + ManualEntry e; | ||
671 | + e.id = record.id; | ||
672 | + e.name = record.name; | ||
673 | + e.mode = record.manualRecord.setting.mode; | ||
674 | + e.humidity = record.manualRecord.setting.humidity; | ||
675 | + e.temp = record.manualRecord.setting.temp; | ||
676 | + e.time = record.manualRecord.setting.time; | ||
677 | + e.fan = record.manualRecord.setting.fan; | ||
678 | + e.coreTemp = record.manualRecord.setting.coreTempEnabled ? record.manualRecord.setting.coreTemp : -1; | ||
679 | + | ||
680 | + int index = currentManualList.indexOf(e); | ||
681 | + if (index != -1) | ||
682 | + { | ||
683 | + ManualEntry &e = currentManualList[index]; | ||
684 | + e.name = name; | ||
685 | + } | ||
686 | + } | ||
687 | + break; | ||
688 | + } | ||
689 | +} | ||
690 | + | ||
691 | +void CookProgram::save() | ||
692 | +{ | ||
693 | + checkInitialized(); | ||
694 | + | ||
695 | + if (currentAutoList != savedAutoList) | ||
696 | + { | ||
697 | + savedAutoList = currentAutoList; | ||
698 | + writeAuto(); | ||
699 | + } | ||
700 | + | ||
701 | + if (currentManualList != savedManualList) | ||
702 | + { | ||
703 | + savedManualList = currentManualList; | ||
704 | + writeManual(); | ||
705 | + } | ||
706 | +} | ||
707 | + | ||
708 | +void CookProgram::discard() | ||
709 | +{ | ||
710 | + checkInitialized(); | ||
711 | + | ||
712 | + currentAutoList = savedAutoList; | ||
713 | + currentManualList = savedManualList; | ||
714 | +} |
app/gui/oven_control/cookprogram.h
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +#ifndef COOKPROGRAM_H | ||
2 | +#define COOKPROGRAM_H | ||
3 | + | ||
4 | + | ||
5 | +#include "cookhistory.h" | ||
6 | + | ||
7 | +namespace CookProgram | ||
8 | +{ | ||
9 | +void add(AutoCookSetting cook); | ||
10 | +void add(ManualCookSetting cook); | ||
11 | +void remove(CookRecord record); | ||
12 | +void rename(CookRecord record, QString name); | ||
13 | +void save(); | ||
14 | +void discard(); | ||
15 | + | ||
16 | +QList<CookRecord> listAuto(); | ||
17 | +QList<CookRecord> listManual(); | ||
18 | +} | ||
19 | + | ||
20 | +#endif // COOKPROGRAM_H |
app/gui/oven_control/oven_control.pro
@@ -106,7 +106,11 @@ SOURCES += main.cpp\ | @@ -106,7 +106,11 @@ SOURCES += main.cpp\ | ||
106 | coretempsettingpopup.cpp \ | 106 | coretempsettingpopup.cpp \ |
107 | fileprocessor.cpp \ | 107 | fileprocessor.cpp \ |
108 | fileprocessgauge.cpp \ | 108 | fileprocessgauge.cpp \ |
109 | - fileprocessdlg.cpp | 109 | + fileprocessdlg.cpp \ |
110 | + programmingselectionwindow.cpp \ | ||
111 | + programmingmanualwindow.cpp \ | ||
112 | + programmingmanualcoretemppopup.cpp \ | ||
113 | + cookprogram.cpp | ||
110 | 114 | ||
111 | HEADERS += mainwindow.h \ | 115 | HEADERS += mainwindow.h \ |
112 | cook.h \ | 116 | cook.h \ |
@@ -202,7 +206,11 @@ HEADERS += mainwindow.h \ | @@ -202,7 +206,11 @@ HEADERS += mainwindow.h \ | ||
202 | coretempsettingpopup.h \ | 206 | coretempsettingpopup.h \ |
203 | fileprocessor.h \ | 207 | fileprocessor.h \ |
204 | fileprocessgauge.h \ | 208 | fileprocessgauge.h \ |
205 | - fileprocessdlg.h | 209 | + fileprocessdlg.h \ |
210 | + programmingselectionwindow.h \ | ||
211 | + programmingmanualwindow.h \ | ||
212 | + programmingmanualcoretemppopup.h \ | ||
213 | + cookprogram.h | ||
206 | 214 | ||
207 | FORMS += mainwindow.ui \ | 215 | FORMS += mainwindow.ui \ |
208 | manualcookwindow.ui \ | 216 | manualcookwindow.ui \ |
@@ -266,7 +274,10 @@ FORMS += mainwindow.ui \ | @@ -266,7 +274,10 @@ FORMS += mainwindow.ui \ | ||
266 | electricmodelsettingwindow.ui \ | 274 | electricmodelsettingwindow.ui \ |
267 | servicepassinputdlg.ui \ | 275 | servicepassinputdlg.ui \ |
268 | coretempsettingpopup.ui \ | 276 | coretempsettingpopup.ui \ |
269 | - fileprocessdlg.ui | 277 | + fileprocessdlg.ui \ |
278 | + programmingselectionwindow.ui \ | ||
279 | + programmingmanualwindow.ui \ | ||
280 | + programmingmanualcoretemppopup.ui | ||
270 | 281 | ||
271 | RESOURCES += \ | 282 | RESOURCES += \ |
272 | resources.qrc | 283 | resources.qrc |
app/gui/oven_control/programmingmanualcoretemppopup.cpp
1 | #include "programmingmanualcoretemppopup.h" | 1 | #include "programmingmanualcoretemppopup.h" |
2 | #include "ui_programmingmanualcoretemppopup.h" | 2 | #include "ui_programmingmanualcoretemppopup.h" |
3 | 3 | ||
4 | +#include "stringer.h" | ||
5 | + | ||
4 | ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent) : | 6 | ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent) : |
5 | QWidget(parent), | 7 | QWidget(parent), |
6 | ui(new Ui::ProgrammingManualCoreTempPopup) | 8 | ui(new Ui::ProgrammingManualCoreTempPopup) |
7 | { | 9 | { |
8 | ui->setupUi(this); | 10 | ui->setupUi(this); |
11 | + | ||
12 | + setAttribute(Qt::WA_DeleteOnClose); | ||
13 | + | ||
14 | + connect(ui->coreTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel())); | ||
15 | + | ||
16 | + updateCoreTempLabel(); | ||
9 | } | 17 | } |
10 | 18 | ||
11 | ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup() | 19 | ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup() |
12 | { | 20 | { |
13 | delete ui; | 21 | delete ui; |
14 | } | 22 | } |
23 | + | ||
24 | +void ProgrammingManualCoreTempPopup::updateCoreTempLabel() | ||
25 | +{ | ||
26 | + ui->coreTempLabel->setText(Stringer::temperature(ui->coreTempSlider->value(), Stringer::fontSize14)); | ||
27 | +} | ||
28 | + | ||
29 | +void ProgrammingManualCoreTempPopup::on_coreTempButton_clicked() | ||
30 | +{ | ||
31 | + | ||
32 | +} | ||
33 | + | ||
34 | +void ProgrammingManualCoreTempPopup::on_cancelButton_clicked() | ||
35 | +{ | ||
36 | + close(); | ||
37 | +} | ||
38 | + | ||
39 | +void ProgrammingManualCoreTempPopup::on_applyButton_clicked() | ||
40 | +{ | ||
41 | + emit coreTempEnabled(ui->coreTempSlider->value()); | ||
42 | + | ||
43 | + close(); | ||
44 | +} |
app/gui/oven_control/programmingmanualcoretemppopup.h
@@ -15,8 +15,18 @@ public: | @@ -15,8 +15,18 @@ public: | ||
15 | explicit ProgrammingManualCoreTempPopup(QWidget *parent = 0); | 15 | explicit ProgrammingManualCoreTempPopup(QWidget *parent = 0); |
16 | ~ProgrammingManualCoreTempPopup(); | 16 | ~ProgrammingManualCoreTempPopup(); |
17 | 17 | ||
18 | +private slots: | ||
19 | + void updateCoreTempLabel(); | ||
20 | + | ||
21 | + void on_coreTempButton_clicked(); | ||
22 | + void on_cancelButton_clicked(); | ||
23 | + void on_applyButton_clicked(); | ||
24 | + | ||
18 | private: | 25 | private: |
19 | Ui::ProgrammingManualCoreTempPopup *ui; | 26 | Ui::ProgrammingManualCoreTempPopup *ui; |
27 | + | ||
28 | +signals: | ||
29 | + void coreTempEnabled(int); | ||
20 | }; | 30 | }; |
21 | 31 | ||
22 | #endif // PROGRAMMINGMANUALCORETEMPPOPUP_H | 32 | #endif // PROGRAMMINGMANUALCORETEMPPOPUP_H |
app/gui/oven_control/programmingmanualcoretemppopup.ui
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
1 | <ui version="4.0"> | 2 | <ui version="4.0"> |
2 | - <author/> | ||
3 | - <comment/> | ||
4 | - <exportmacro/> | ||
5 | <class>ProgrammingManualCoreTempPopup</class> | 3 | <class>ProgrammingManualCoreTempPopup</class> |
6 | <widget class="QWidget" name="ProgrammingManualCoreTempPopup"> | 4 | <widget class="QWidget" name="ProgrammingManualCoreTempPopup"> |
7 | <property name="geometry"> | 5 | <property name="geometry"> |
8 | <rect> | 6 | <rect> |
9 | <x>0</x> | 7 | <x>0</x> |
10 | <y>0</y> | 8 | <y>0</y> |
11 | - <width>400</width> | ||
12 | - <height>300</height> | 9 | + <width>900</width> |
10 | + <height>1600</height> | ||
13 | </rect> | 11 | </rect> |
14 | </property> | 12 | </property> |
15 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
16 | <string>Form</string> | 14 | <string>Form</string> |
17 | </property> | 15 | </property> |
16 | + <property name="styleSheet"> | ||
17 | + <string notr="true">#background { | ||
18 | +background-image: url(:/images/background/manual_core.png); | ||
19 | +margin-top: -720px; | ||
20 | +} | ||
21 | + | ||
22 | +QPushButton[style="icon"] { | ||
23 | +background-image: url(:/images/slider_icon/background.png); | ||
24 | +background-repeat: no-repeat; | ||
25 | +background-position: center; | ||
26 | +border: none; | ||
27 | +} | ||
28 | + | ||
29 | +QPushButton[style="interTemp"] { | ||
30 | +background-repeat: no-repeat; | ||
31 | +background-position: center; | ||
32 | +background-clip: border; | ||
33 | +background-origin: border; | ||
34 | + | ||
35 | +border-top: 130px; | ||
36 | +border-style: hidden; | ||
37 | +color: white; | ||
38 | +font-size: 30px; | ||
39 | +} | ||
40 | + | ||
41 | +QSlider::groove { | ||
42 | +background-image: url(:/images/slider/groove_ticks.png); | ||
43 | +background-repeat: no-repeat; | ||
44 | +} | ||
45 | + | ||
46 | +QSlider::sub-page { | ||
47 | +background-repeat: no-repeat; | ||
48 | +margin: 5px; | ||
49 | +} | ||
50 | + | ||
51 | +QSlider::handle { | ||
52 | +background-image: url(:/images/slider/handle_big.png); | ||
53 | +background-repeat: no-repeat; | ||
54 | +width: 23px; | ||
55 | +height: 33px; | ||
56 | +}</string> | ||
57 | + </property> | ||
58 | + <widget class="QSlider" name="coreTempSlider"> | ||
59 | + <property name="geometry"> | ||
60 | + <rect> | ||
61 | + <x>185</x> | ||
62 | + <y>1012</y> | ||
63 | + <width>666</width> | ||
64 | + <height>33</height> | ||
65 | + </rect> | ||
66 | + </property> | ||
67 | + <property name="styleSheet"> | ||
68 | + <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); }</string> | ||
69 | + </property> | ||
70 | + <property name="minimum"> | ||
71 | + <number>30</number> | ||
72 | + </property> | ||
73 | + <property name="maximum"> | ||
74 | + <number>99</number> | ||
75 | + </property> | ||
76 | + <property name="value"> | ||
77 | + <number>30</number> | ||
78 | + </property> | ||
79 | + <property name="tracking"> | ||
80 | + <bool>true</bool> | ||
81 | + </property> | ||
82 | + <property name="orientation"> | ||
83 | + <enum>Qt::Horizontal</enum> | ||
84 | + </property> | ||
85 | + </widget> | ||
86 | + <widget class="QPushButton" name="coreTempButton"> | ||
87 | + <property name="geometry"> | ||
88 | + <rect> | ||
89 | + <x>27</x> | ||
90 | + <y>954</y> | ||
91 | + <width>140</width> | ||
92 | + <height>140</height> | ||
93 | + </rect> | ||
94 | + </property> | ||
95 | + <property name="styleSheet"> | ||
96 | + <string notr="true">QPushButton { image: url(:/images/slider_icon/core_temp_enabled.png); } | ||
97 | +QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }</string> | ||
98 | + </property> | ||
99 | + <property name="style" stdset="0"> | ||
100 | + <string>icon</string> | ||
101 | + </property> | ||
102 | + </widget> | ||
103 | + <widget class="QPushButton" name="cancelButton"> | ||
104 | + <property name="geometry"> | ||
105 | + <rect> | ||
106 | + <x>200</x> | ||
107 | + <y>1260</y> | ||
108 | + <width>250</width> | ||
109 | + <height>190</height> | ||
110 | + </rect> | ||
111 | + </property> | ||
112 | + <property name="styleSheet"> | ||
113 | + <string notr="true">QPushButton { background-image: url(:/images/manual_button/back.png); } | ||
114 | +QPushButton:pressed { background-image: url(:/images/manual_button/back_ov.png); }</string> | ||
115 | + </property> | ||
116 | + <property name="text"> | ||
117 | + <string>이전으로</string> | ||
118 | + </property> | ||
119 | + <property name="style" stdset="0"> | ||
120 | + <string notr="true">interTemp</string> | ||
121 | + </property> | ||
122 | + </widget> | ||
123 | + <widget class="QPushButton" name="applyButton"> | ||
124 | + <property name="geometry"> | ||
125 | + <rect> | ||
126 | + <x>450</x> | ||
127 | + <y>1260</y> | ||
128 | + <width>250</width> | ||
129 | + <height>190</height> | ||
130 | + </rect> | ||
131 | + </property> | ||
132 | + <property name="styleSheet"> | ||
133 | + <string notr="true">QPushButton { background-image: url(:/images/manual_button/ok.png); } | ||
134 | +QPushButton:pressed { background-image: url(:/images/manual_button/ok_ov.png); }</string> | ||
135 | + </property> | ||
136 | + <property name="text"> | ||
137 | + <string>확인/적용하기</string> | ||
138 | + </property> | ||
139 | + <property name="style" stdset="0"> | ||
140 | + <string notr="true">interTemp</string> | ||
141 | + </property> | ||
142 | + </widget> | ||
143 | + <widget class="QLabel" name="background"> | ||
144 | + <property name="geometry"> | ||
145 | + <rect> | ||
146 | + <x>0</x> | ||
147 | + <y>720</y> | ||
148 | + <width>900</width> | ||
149 | + <height>730</height> | ||
150 | + </rect> | ||
151 | + </property> | ||
152 | + </widget> | ||
153 | + <widget class="QLabel" name="coreTempLabel"> | ||
154 | + <property name="enabled"> | ||
155 | + <bool>true</bool> | ||
156 | + </property> | ||
157 | + <property name="geometry"> | ||
158 | + <rect> | ||
159 | + <x>690</x> | ||
160 | + <y>1038</y> | ||
161 | + <width>150</width> | ||
162 | + <height>50</height> | ||
163 | + </rect> | ||
164 | + </property> | ||
165 | + <property name="palette"> | ||
166 | + <palette> | ||
167 | + <active> | ||
168 | + <colorrole role="WindowText"> | ||
169 | + <brush brushstyle="SolidPattern"> | ||
170 | + <color alpha="255"> | ||
171 | + <red>255</red> | ||
172 | + <green>255</green> | ||
173 | + <blue>255</blue> | ||
174 | + </color> | ||
175 | + </brush> | ||
176 | + </colorrole> | ||
177 | + </active> | ||
178 | + <inactive> | ||
179 | + <colorrole role="WindowText"> | ||
180 | + <brush brushstyle="SolidPattern"> | ||
181 | + <color alpha="255"> | ||
182 | + <red>255</red> | ||
183 | + <green>255</green> | ||
184 | + <blue>255</blue> | ||
185 | + </color> | ||
186 | + </brush> | ||
187 | + </colorrole> | ||
188 | + </inactive> | ||
189 | + <disabled> | ||
190 | + <colorrole role="WindowText"> | ||
191 | + <brush brushstyle="SolidPattern"> | ||
192 | + <color alpha="255"> | ||
193 | + <red>123</red> | ||
194 | + <green>123</green> | ||
195 | + <blue>123</blue> | ||
196 | + </color> | ||
197 | + </brush> | ||
198 | + </colorrole> | ||
199 | + </disabled> | ||
200 | + </palette> | ||
201 | + </property> | ||
202 | + <property name="font"> | ||
203 | + <font> | ||
204 | + <family>Roboto</family> | ||
205 | + <pointsize>16</pointsize> | ||
206 | + <weight>75</weight> | ||
207 | + <bold>true</bold> | ||
208 | + </font> | ||
209 | + </property> | ||
210 | + <property name="text"> | ||
211 | + <string>℃</string> | ||
212 | + </property> | ||
213 | + <property name="alignment"> | ||
214 | + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | ||
215 | + </property> | ||
216 | + </widget> | ||
217 | + <zorder>background</zorder> | ||
218 | + <zorder>coreTempSlider</zorder> | ||
219 | + <zorder>coreTempButton</zorder> | ||
220 | + <zorder>cancelButton</zorder> | ||
221 | + <zorder>applyButton</zorder> | ||
222 | + <zorder>coreTempLabel</zorder> | ||
18 | </widget> | 223 | </widget> |
19 | - <pixmapfunction/> | 224 | + <resources> |
225 | + <include location="resources.qrc"/> | ||
226 | + </resources> | ||
20 | <connections/> | 227 | <connections/> |
21 | </ui> | 228 | </ui> |
app/gui/oven_control/programmingmanualwindow.cpp
1 | #include "programmingmanualwindow.h" | 1 | #include "programmingmanualwindow.h" |
2 | #include "ui_programmingmanualwindow.h" | 2 | #include "ui_programmingmanualwindow.h" |
3 | 3 | ||
4 | -ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent) : | 4 | +#include "stringer.h" |
5 | +#include "programmingmanualcoretemppopup.h" | ||
6 | +#include "cookprogram.h" | ||
7 | + | ||
8 | +ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent, Define::Mode mode) : | ||
5 | QMainWindow(parent), | 9 | QMainWindow(parent), |
6 | ui(new Ui::ProgrammingManualWindow) | 10 | ui(new Ui::ProgrammingManualWindow) |
7 | { | 11 | { |
8 | ui->setupUi(this); | 12 | ui->setupUi(this); |
13 | + | ||
14 | + ui->clockContainer->setParent(ui->upperStack); | ||
15 | + setAttribute(Qt::WA_DeleteOnClose); | ||
16 | + | ||
17 | + connect(ui->humiditySlider, SIGNAL(valueChanged(int)), SLOT(updateHumidityLabel())); | ||
18 | + connect(ui->tempSlider, SIGNAL(valueChanged(int)), SLOT(updateTempLabel())); | ||
19 | + connect(ui->timeSlider, SIGNAL(valueChanged(int)), SLOT(updateTimeLabel())); | ||
20 | + connect(ui->interTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel())); | ||
21 | + | ||
22 | + setDefault(mode); | ||
9 | } | 23 | } |
10 | 24 | ||
11 | ProgrammingManualWindow::~ProgrammingManualWindow() | 25 | ProgrammingManualWindow::~ProgrammingManualWindow() |
12 | { | 26 | { |
13 | delete ui; | 27 | delete ui; |
14 | } | 28 | } |
29 | + | ||
30 | +void ProgrammingManualWindow::setDefault(Define::Mode mode) | ||
31 | +{ | ||
32 | + switch (mode) | ||
33 | + { | ||
34 | + case Define::SteamMode: | ||
35 | + ui->steamButton->setChecked(true); | ||
36 | + ui->humiditySlider->setEnabled(false); | ||
37 | + ui->humiditySlider->setValue(100); | ||
38 | + ui->tempSlider->setRange(30, 130); | ||
39 | + ui->tempSlider->setValue(100); | ||
40 | + ui->timeSlider->setValue(0); | ||
41 | + ui->interTempSlider->setEnabled(false); | ||
42 | + ui->interTempSlider->setValue(30); | ||
43 | + setFan(4); | ||
44 | + updateCoreTempButton(); | ||
45 | + updateCoreTempLabel(); | ||
46 | + this->mode = mode; | ||
47 | + break; | ||
48 | + case Define::CombiMode: | ||
49 | + ui->combiButton->setChecked(true); | ||
50 | + ui->humiditySlider->setEnabled(true); | ||
51 | + ui->humiditySlider->setValue(50); | ||
52 | + ui->tempSlider->setRange(30, 300); | ||
53 | + ui->tempSlider->setValue(100); | ||
54 | + ui->timeSlider->setValue(0); | ||
55 | + ui->interTempSlider->setEnabled(false); | ||
56 | + ui->interTempSlider->setValue(30); | ||
57 | + setFan(4); | ||
58 | + updateCoreTempButton(); | ||
59 | + updateCoreTempLabel(); | ||
60 | + this->mode = mode; | ||
61 | + break; | ||
62 | + case Define::DryMode: | ||
63 | + ui->dryheatButton->setChecked(true); | ||
64 | + ui->humiditySlider->setEnabled(false); | ||
65 | + ui->humiditySlider->setValue(0); | ||
66 | + ui->tempSlider->setRange(30, 300); | ||
67 | + ui->tempSlider->setValue(160); | ||
68 | + ui->timeSlider->setValue(0); | ||
69 | + ui->interTempSlider->setEnabled(false); | ||
70 | + ui->interTempSlider->setValue(30); | ||
71 | + setFan(4); | ||
72 | + updateCoreTempButton(); | ||
73 | + updateCoreTempLabel(); | ||
74 | + this->mode = mode; | ||
75 | + break; | ||
76 | + default: | ||
77 | + return; | ||
78 | + } | ||
79 | +} | ||
80 | + | ||
81 | +void ProgrammingManualWindow::setFan(int level) | ||
82 | +{ | ||
83 | + fan = level; | ||
84 | + | ||
85 | + updateFanButton(); | ||
86 | +} | ||
87 | + | ||
88 | +void ProgrammingManualWindow::updateHumidityLabel() | ||
89 | +{ | ||
90 | +// ui->humidityLabel->setText(QString::number(ui->humiditySlider->value())); | ||
91 | + ui->humidityLabel->setText(QString("%1%").arg(ui->humiditySlider->value())); | ||
92 | +} | ||
93 | + | ||
94 | +void ProgrammingManualWindow::updateTempLabel() | ||
95 | +{ | ||
96 | + ui->tempLabel->setText(Stringer::temperature(ui->tempSlider->value(), Stringer::fontSize14)); | ||
97 | +} | ||
98 | + | ||
99 | +void ProgrammingManualWindow::updateTimeLabel() | ||
100 | +{ | ||
101 | + ui->timeLabel->setText(Stringer::remainingTime(ui->timeSlider->value() * 1000, Stringer::fontSize14)); | ||
102 | +} | ||
103 | + | ||
104 | +void ProgrammingManualWindow::updateCoreTempButton() | ||
105 | +{ | ||
106 | + if (ui->interTempSlider->isEnabled()) | ||
107 | + ui->interTempButton->setStyleSheet("\ | ||
108 | +QPushButton {\ | ||
109 | + image: url(:/images/slider_icon/core_temp_enabled.png);\ | ||
110 | +}\ | ||
111 | +QPushButton:pressed {\ | ||
112 | + image: url(:/images/slider_icon/core_temp_ov.png);\ | ||
113 | +}"); | ||
114 | + else | ||
115 | + ui->interTempButton->setStyleSheet("\ | ||
116 | +QPushButton {\ | ||
117 | + image: url(:/images/slider_icon/core_temp.png);\ | ||
118 | +}\ | ||
119 | +QPushButton:pressed {\ | ||
120 | + image: url(:/images/slider_icon/core_temp_ov.png);\ | ||
121 | +}"); | ||
122 | +} | ||
123 | + | ||
124 | +void ProgrammingManualWindow::updateCoreTempLabel() | ||
125 | +{ | ||
126 | + if (ui->interTempSlider->isEnabled()) | ||
127 | + ui->interTempLabel->setText(Stringer::temperature(ui->interTempSlider->value(), Stringer::fontSize14)); | ||
128 | + else | ||
129 | + ui->interTempLabel->setText(Stringer::unusedTemperature(Stringer::fontSize14)); | ||
130 | +} | ||
131 | + | ||
132 | +void ProgrammingManualWindow::updateFanButton() | ||
133 | +{ | ||
134 | + switch (fan) | ||
135 | + { | ||
136 | + case 1: | ||
137 | + ui->fanButton->setStyleSheet( | ||
138 | + "background-image: url(:/images/manual_button/fan_1.png)"); | ||
139 | + break; | ||
140 | + case 2: | ||
141 | + ui->fanButton->setStyleSheet( | ||
142 | + "background-image: url(:/images/manual_button/fan_2.png)"); | ||
143 | + break; | ||
144 | + case 3: | ||
145 | + ui->fanButton->setStyleSheet( | ||
146 | + "background-image: url(:/images/manual_button/fan_3.png)"); | ||
147 | + break; | ||
148 | + case 4: | ||
149 | + ui->fanButton->setStyleSheet( | ||
150 | + "background-image: url(:/images/manual_button/fan_4.png)"); | ||
151 | + break; | ||
152 | + case 5: | ||
153 | + ui->fanButton->setStyleSheet( | ||
154 | + "background-image: url(:/images/manual_button/fan_5.png)"); | ||
155 | + break; | ||
156 | + default: | ||
157 | + ui->fanButton->setStyleSheet( | ||
158 | + "background-image: url(:/images/manual_button/fan_1.png)"); | ||
159 | + break; | ||
160 | + } | ||
161 | +} | ||
162 | + | ||
163 | +void ProgrammingManualWindow::onCoreTempEnabled(int celsius) | ||
164 | +{ | ||
165 | + ui->interTempSlider->setEnabled(true); | ||
166 | + ui->interTempSlider->setValue(celsius); | ||
167 | + updateCoreTempButton(); | ||
168 | + updateCoreTempLabel(); | ||
169 | +} | ||
170 | + | ||
171 | +void ProgrammingManualWindow::on_steamButton_clicked() | ||
172 | +{ | ||
173 | + setDefault(Define::SteamMode); | ||
174 | +} | ||
175 | + | ||
176 | +void ProgrammingManualWindow::on_combiButton_clicked() | ||
177 | +{ | ||
178 | + setDefault(Define::CombiMode); | ||
179 | +} | ||
180 | + | ||
181 | +void ProgrammingManualWindow::on_dryheatButton_clicked() | ||
182 | +{ | ||
183 | + setDefault(Define::DryMode); | ||
184 | +} | ||
185 | + | ||
186 | +void ProgrammingManualWindow::on_interTempButton_clicked() | ||
187 | +{ | ||
188 | + if (ui->interTempSlider->isEnabled()) | ||
189 | + { | ||
190 | + ui->interTempSlider->setEnabled(false); | ||
191 | + updateCoreTempButton(); | ||
192 | + updateCoreTempLabel(); | ||
193 | + } | ||
194 | + else | ||
195 | + { | ||
196 | + ProgrammingManualCoreTempPopup *p = new ProgrammingManualCoreTempPopup(this); | ||
197 | + connect(p, SIGNAL(coreTempEnabled(int)), SLOT(onCoreTempEnabled(int))); | ||
198 | + p->showFullScreen(); | ||
199 | + } | ||
200 | +} | ||
201 | + | ||
202 | +void ProgrammingManualWindow::on_fanButton_clicked() | ||
203 | +{ | ||
204 | + fan++; | ||
205 | + if (fan > 5) | ||
206 | + fan = 1; | ||
207 | + | ||
208 | + updateFanButton(); | ||
209 | +} | ||
210 | + | ||
211 | +void ProgrammingManualWindow::on_backButton_clicked() | ||
212 | +{ | ||
213 | + close(); | ||
214 | +} | ||
215 | + | ||
216 | +void ProgrammingManualWindow::on_configButton_clicked() | ||
217 | +{ | ||
218 | + | ||
219 | +} | ||
220 | + | ||
221 | +void ProgrammingManualWindow::on_helpButton_clicked() | ||
222 | +{ | ||
223 | + | ||
224 | +} | ||
225 | + | ||
226 | +void ProgrammingManualWindow::on_okButton_clicked() | ||
227 | +{ | ||
228 | + ManualCookSetting s; | ||
229 | + s.mode = mode; | ||
230 | + s.humidity = ui->humiditySlider->value(); | ||
231 | + s.temp = ui->tempSlider->value(); | ||
232 | + s.time = ui->timeSlider->value(); | ||
233 | + s.coreTempEnabled = ui->interTempSlider->isEnabled(); | ||
234 | + s.coreTemp = ui->interTempSlider->value(); | ||
235 | + s.fan = fan; | ||
236 | + | ||
237 | + CookProgram::add(s); | ||
238 | + | ||
239 | + emit added(); | ||
240 | + close(); | ||
241 | +} |
app/gui/oven_control/programmingmanualwindow.h
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | 3 | ||
4 | #include <QMainWindow> | 4 | #include <QMainWindow> |
5 | 5 | ||
6 | +#include "define.h" | ||
7 | + | ||
6 | namespace Ui { | 8 | namespace Ui { |
7 | class ProgrammingManualWindow; | 9 | class ProgrammingManualWindow; |
8 | } | 10 | } |
@@ -12,11 +14,39 @@ class ProgrammingManualWindow : public QMainWindow | @@ -12,11 +14,39 @@ class ProgrammingManualWindow : public QMainWindow | ||
12 | Q_OBJECT | 14 | Q_OBJECT |
13 | 15 | ||
14 | public: | 16 | public: |
15 | - explicit ProgrammingManualWindow(QWidget *parent = 0); | 17 | + explicit ProgrammingManualWindow(QWidget *parent, Define::Mode mode); |
16 | ~ProgrammingManualWindow(); | 18 | ~ProgrammingManualWindow(); |
17 | 19 | ||
18 | private: | 20 | private: |
19 | Ui::ProgrammingManualWindow *ui; | 21 | Ui::ProgrammingManualWindow *ui; |
22 | + | ||
23 | + Define::Mode mode; | ||
24 | + int fan; | ||
25 | + | ||
26 | +private slots: | ||
27 | + void setDefault(Define::Mode mode); | ||
28 | + void setFan(int level); | ||
29 | + void updateHumidityLabel(); | ||
30 | + void updateTempLabel(); | ||
31 | + void updateTimeLabel(); | ||
32 | + void updateCoreTempButton(); | ||
33 | + void updateCoreTempLabel(); | ||
34 | + void updateFanButton(); | ||
35 | + | ||
36 | + void onCoreTempEnabled(int celsius); | ||
37 | + | ||
38 | + void on_steamButton_clicked(); | ||
39 | + void on_combiButton_clicked(); | ||
40 | + void on_dryheatButton_clicked(); | ||
41 | + void on_interTempButton_clicked(); | ||
42 | + void on_fanButton_clicked(); | ||
43 | + void on_backButton_clicked(); | ||
44 | + void on_configButton_clicked(); | ||
45 | + void on_helpButton_clicked(); | ||
46 | + void on_okButton_clicked(); | ||
47 | + | ||
48 | +signals: | ||
49 | + void added(); | ||
20 | }; | 50 | }; |
21 | 51 | ||
22 | #endif // PROGRAMMINGMANUALWINDOW_H | 52 | #endif // PROGRAMMINGMANUALWINDOW_H |
app/gui/oven_control/programmingmanualwindow.ui
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
1 | <ui version="4.0"> | 2 | <ui version="4.0"> |
2 | - <author/> | ||
3 | - <comment/> | ||
4 | - <exportmacro/> | ||
5 | <class>ProgrammingManualWindow</class> | 3 | <class>ProgrammingManualWindow</class> |
6 | <widget class="QMainWindow" name="ProgrammingManualWindow"> | 4 | <widget class="QMainWindow" name="ProgrammingManualWindow"> |
7 | <property name="geometry"> | 5 | <property name="geometry"> |
8 | <rect> | 6 | <rect> |
9 | <x>0</x> | 7 | <x>0</x> |
10 | <y>0</y> | 8 | <y>0</y> |
11 | - <width>800</width> | ||
12 | - <height>600</height> | 9 | + <width>900</width> |
10 | + <height>1600</height> | ||
13 | </rect> | 11 | </rect> |
14 | </property> | 12 | </property> |
15 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
16 | <string>MainWindow</string> | 14 | <string>MainWindow</string> |
17 | </property> | 15 | </property> |
18 | - <widget class="QMenuBar" name="menubar"/> | ||
19 | - <widget class="QWidget" name="centralwidget"/> | ||
20 | - <widget class="QStatusBar" name="statusbar"/> | 16 | + <property name="styleSheet"> |
17 | + <string notr="true">#bottomBar { background-image: url(:/images/bottom_bar/background.png); } | ||
18 | +#centralwidget { background-image: url(:/images/background/manual.png); } | ||
19 | + | ||
20 | +QPushButton { | ||
21 | +background-repeat: no-repeat; | ||
22 | +background-position: center; | ||
23 | +border: none; | ||
24 | +} | ||
25 | + | ||
26 | +QPushButton[style="mode"] { | ||
27 | +background-clip: border; | ||
28 | +background-origin: border; | ||
29 | +margin-bottom: 50px; | ||
30 | + | ||
31 | +border-top: 200px; | ||
32 | +border-bottom: -50px; | ||
33 | +border-style: hidden; | ||
34 | +color: #7B7B7B; | ||
35 | +font-size: 40px; | ||
36 | +} | ||
37 | + | ||
38 | +QPushButton[style="mode"]:checked { | ||
39 | +color: white; | ||
40 | +image: url(:/images/cook_mode/indicator.png); | ||
41 | +image-position: bottom; | ||
42 | +} | ||
43 | + | ||
44 | +QPushButton[style="icon"] { | ||
45 | +background-image: url(:/images/slider_icon/background.png); | ||
46 | +} | ||
47 | + | ||
48 | +QSlider::groove { | ||
49 | +background-image: url(:/images/slider/groove_ticks.png); | ||
50 | +background-repeat: no-repeat; | ||
51 | +} | ||
52 | + | ||
53 | +QSlider::sub-page { | ||
54 | +background-repeat: no-repeat; | ||
55 | +margin: 5px; | ||
56 | +} | ||
57 | + | ||
58 | +QSlider::handle { | ||
59 | +background-image: url(:/images/slider/handle_big.png); | ||
60 | +background-repeat: no-repeat; | ||
61 | +width: 23px; | ||
62 | +height: 33px; | ||
63 | +}</string> | ||
64 | + </property> | ||
65 | + <widget class="QWidget" name="centralwidget"> | ||
66 | + <widget class="QLabel" name="humidityLabel"> | ||
67 | + <property name="enabled"> | ||
68 | + <bool>true</bool> | ||
69 | + </property> | ||
70 | + <property name="geometry"> | ||
71 | + <rect> | ||
72 | + <x>690</x> | ||
73 | + <y>810</y> | ||
74 | + <width>150</width> | ||
75 | + <height>51</height> | ||
76 | + </rect> | ||
77 | + </property> | ||
78 | + <property name="palette"> | ||
79 | + <palette> | ||
80 | + <active> | ||
81 | + <colorrole role="WindowText"> | ||
82 | + <brush brushstyle="SolidPattern"> | ||
83 | + <color alpha="255"> | ||
84 | + <red>255</red> | ||
85 | + <green>255</green> | ||
86 | + <blue>255</blue> | ||
87 | + </color> | ||
88 | + </brush> | ||
89 | + </colorrole> | ||
90 | + </active> | ||
91 | + <inactive> | ||
92 | + <colorrole role="WindowText"> | ||
93 | + <brush brushstyle="SolidPattern"> | ||
94 | + <color alpha="255"> | ||
95 | + <red>255</red> | ||
96 | + <green>255</green> | ||
97 | + <blue>255</blue> | ||
98 | + </color> | ||
99 | + </brush> | ||
100 | + </colorrole> | ||
101 | + </inactive> | ||
102 | + <disabled> | ||
103 | + <colorrole role="WindowText"> | ||
104 | + <brush brushstyle="SolidPattern"> | ||
105 | + <color alpha="255"> | ||
106 | + <red>123</red> | ||
107 | + <green>123</green> | ||
108 | + <blue>123</blue> | ||
109 | + </color> | ||
110 | + </brush> | ||
111 | + </colorrole> | ||
112 | + </disabled> | ||
113 | + </palette> | ||
114 | + </property> | ||
115 | + <property name="font"> | ||
116 | + <font> | ||
117 | + <family>Roboto</family> | ||
118 | + <pointsize>16</pointsize> | ||
119 | + <weight>75</weight> | ||
120 | + <bold>true</bold> | ||
121 | + </font> | ||
122 | + </property> | ||
123 | + <property name="text"> | ||
124 | + <string>0%</string> | ||
125 | + </property> | ||
126 | + <property name="alignment"> | ||
127 | + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | ||
128 | + </property> | ||
129 | + </widget> | ||
130 | + <widget class="QStackedWidget" name="upperStack"> | ||
131 | + <property name="geometry"> | ||
132 | + <rect> | ||
133 | + <x>0</x> | ||
134 | + <y>0</y> | ||
135 | + <width>900</width> | ||
136 | + <height>426</height> | ||
137 | + </rect> | ||
138 | + </property> | ||
139 | + <widget class="QWidget" name="clockContainer"> | ||
140 | + <property name="styleSheet"> | ||
141 | + <string notr="true">#clockContainer { background-image: url(:/images/clock/background.png); }</string> | ||
142 | + </property> | ||
143 | + <widget class="Clock" name="clock" native="true"> | ||
144 | + <property name="geometry"> | ||
145 | + <rect> | ||
146 | + <x>272</x> | ||
147 | + <y>36</y> | ||
148 | + <width>356</width> | ||
149 | + <height>355</height> | ||
150 | + </rect> | ||
151 | + </property> | ||
152 | + </widget> | ||
153 | + <widget class="WashWarnIcon" name="label_6"> | ||
154 | + <property name="geometry"> | ||
155 | + <rect> | ||
156 | + <x>800</x> | ||
157 | + <y>320</y> | ||
158 | + <width>80</width> | ||
159 | + <height>84</height> | ||
160 | + </rect> | ||
161 | + </property> | ||
162 | + </widget> | ||
163 | + </widget> | ||
164 | + <widget class="QWidget" name="closeDoorWidget"> | ||
165 | + <property name="styleSheet"> | ||
166 | + <string notr="true">#closeDoorWidget { background-image: url(:/images/clock/background.png); }</string> | ||
167 | + </property> | ||
168 | + <widget class="AnimatedImageBox" name="openDoorAnimation"> | ||
169 | + <property name="geometry"> | ||
170 | + <rect> | ||
171 | + <x>366</x> | ||
172 | + <y>20</y> | ||
173 | + <width>251</width> | ||
174 | + <height>292</height> | ||
175 | + </rect> | ||
176 | + </property> | ||
177 | + </widget> | ||
178 | + <widget class="QLabel" name="label_5"> | ||
179 | + <property name="geometry"> | ||
180 | + <rect> | ||
181 | + <x>430</x> | ||
182 | + <y>170</y> | ||
183 | + <width>85</width> | ||
184 | + <height>24</height> | ||
185 | + </rect> | ||
186 | + </property> | ||
187 | + <property name="pixmap"> | ||
188 | + <pixmap resource="resources.qrc">:/images/animation/close_door_arrow.png</pixmap> | ||
189 | + </property> | ||
190 | + </widget> | ||
191 | + </widget> | ||
192 | + </widget> | ||
193 | + <widget class="QPushButton" name="dryheatButton"> | ||
194 | + <property name="geometry"> | ||
195 | + <rect> | ||
196 | + <x>600</x> | ||
197 | + <y>426</y> | ||
198 | + <width>300</width> | ||
199 | + <height>293</height> | ||
200 | + </rect> | ||
201 | + </property> | ||
202 | + <property name="styleSheet"> | ||
203 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_dryheat_hide.png); } | ||
204 | +QPushButton:pressed { background-image: url(:/images/cook_mode/big_dryheat_ov.png); } | ||
205 | +QPushButton:checked { background-image: url(:/images/cook_mode/big_dryheat.png); }</string> | ||
206 | + </property> | ||
207 | + <property name="text"> | ||
208 | + <string>건열</string> | ||
209 | + </property> | ||
210 | + <property name="checkable"> | ||
211 | + <bool>true</bool> | ||
212 | + </property> | ||
213 | + <property name="autoExclusive"> | ||
214 | + <bool>true</bool> | ||
215 | + </property> | ||
216 | + <property name="style" stdset="0"> | ||
217 | + <string notr="true">mode</string> | ||
218 | + </property> | ||
219 | + </widget> | ||
220 | + <widget class="QPushButton" name="timeButton"> | ||
221 | + <property name="geometry"> | ||
222 | + <rect> | ||
223 | + <x>27</x> | ||
224 | + <y>1025</y> | ||
225 | + <width>140</width> | ||
226 | + <height>140</height> | ||
227 | + </rect> | ||
228 | + </property> | ||
229 | + <property name="styleSheet"> | ||
230 | + <string notr="true">QPushButton { image: url(:/images/slider_icon/time.png); } | ||
231 | +QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }</string> | ||
232 | + </property> | ||
233 | + <property name="style" stdset="0"> | ||
234 | + <string notr="true">icon</string> | ||
235 | + </property> | ||
236 | + </widget> | ||
237 | + <widget class="QLabel" name="steamLabel_3"> | ||
238 | + <property name="enabled"> | ||
239 | + <bool>true</bool> | ||
240 | + </property> | ||
241 | + <property name="geometry"> | ||
242 | + <rect> | ||
243 | + <x>780</x> | ||
244 | + <y>740</y> | ||
245 | + <width>91</width> | ||
246 | + <height>51</height> | ||
247 | + </rect> | ||
248 | + </property> | ||
249 | + <property name="palette"> | ||
250 | + <palette> | ||
251 | + <active> | ||
252 | + <colorrole role="WindowText"> | ||
253 | + <brush brushstyle="SolidPattern"> | ||
254 | + <color alpha="255"> | ||
255 | + <red>255</red> | ||
256 | + <green>255</green> | ||
257 | + <blue>255</blue> | ||
258 | + </color> | ||
259 | + </brush> | ||
260 | + </colorrole> | ||
261 | + </active> | ||
262 | + <inactive> | ||
263 | + <colorrole role="WindowText"> | ||
264 | + <brush brushstyle="SolidPattern"> | ||
265 | + <color alpha="255"> | ||
266 | + <red>255</red> | ||
267 | + <green>255</green> | ||
268 | + <blue>255</blue> | ||
269 | + </color> | ||
270 | + </brush> | ||
271 | + </colorrole> | ||
272 | + </inactive> | ||
273 | + <disabled> | ||
274 | + <colorrole role="WindowText"> | ||
275 | + <brush brushstyle="SolidPattern"> | ||
276 | + <color alpha="255"> | ||
277 | + <red>123</red> | ||
278 | + <green>123</green> | ||
279 | + <blue>123</blue> | ||
280 | + </color> | ||
281 | + </brush> | ||
282 | + </colorrole> | ||
283 | + </disabled> | ||
284 | + </palette> | ||
285 | + </property> | ||
286 | + <property name="font"> | ||
287 | + <font> | ||
288 | + <family>Malgun Gothic</family> | ||
289 | + <pointsize>9</pointsize> | ||
290 | + </font> | ||
291 | + </property> | ||
292 | + <property name="text"> | ||
293 | + <string>증가</string> | ||
294 | + </property> | ||
295 | + <property name="alignment"> | ||
296 | + <set>Qt::AlignCenter</set> | ||
297 | + </property> | ||
298 | + </widget> | ||
299 | + <widget class="QSlider" name="timeSlider"> | ||
300 | + <property name="geometry"> | ||
301 | + <rect> | ||
302 | + <x>185</x> | ||
303 | + <y>1083</y> | ||
304 | + <width>666</width> | ||
305 | + <height>33</height> | ||
306 | + </rect> | ||
307 | + </property> | ||
308 | + <property name="styleSheet"> | ||
309 | + <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/time.png); }</string> | ||
310 | + </property> | ||
311 | + <property name="maximum"> | ||
312 | + <number>86400</number> | ||
313 | + </property> | ||
314 | + <property name="singleStep"> | ||
315 | + <number>60</number> | ||
316 | + </property> | ||
317 | + <property name="pageStep"> | ||
318 | + <number>3600</number> | ||
319 | + </property> | ||
320 | + <property name="value"> | ||
321 | + <number>0</number> | ||
322 | + </property> | ||
323 | + <property name="orientation"> | ||
324 | + <enum>Qt::Horizontal</enum> | ||
325 | + </property> | ||
326 | + </widget> | ||
327 | + <widget class="QSlider" name="interTempSlider"> | ||
328 | + <property name="enabled"> | ||
329 | + <bool>false</bool> | ||
330 | + </property> | ||
331 | + <property name="geometry"> | ||
332 | + <rect> | ||
333 | + <x>185</x> | ||
334 | + <y>1233</y> | ||
335 | + <width>666</width> | ||
336 | + <height>33</height> | ||
337 | + </rect> | ||
338 | + </property> | ||
339 | + <property name="styleSheet"> | ||
340 | + <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); } | ||
341 | +QSlider::sub-page:disabled { background: #00000000; } | ||
342 | +QSlider::handle:disabled { background: #00000000; }</string> | ||
343 | + </property> | ||
344 | + <property name="minimum"> | ||
345 | + <number>30</number> | ||
346 | + </property> | ||
347 | + <property name="maximum"> | ||
348 | + <number>99</number> | ||
349 | + </property> | ||
350 | + <property name="value"> | ||
351 | + <number>30</number> | ||
352 | + </property> | ||
353 | + <property name="orientation"> | ||
354 | + <enum>Qt::Horizontal</enum> | ||
355 | + </property> | ||
356 | + </widget> | ||
357 | + <widget class="QLabel" name="interTempLabel"> | ||
358 | + <property name="enabled"> | ||
359 | + <bool>true</bool> | ||
360 | + </property> | ||
361 | + <property name="geometry"> | ||
362 | + <rect> | ||
363 | + <x>690</x> | ||
364 | + <y>1260</y> | ||
365 | + <width>150</width> | ||
366 | + <height>50</height> | ||
367 | + </rect> | ||
368 | + </property> | ||
369 | + <property name="palette"> | ||
370 | + <palette> | ||
371 | + <active> | ||
372 | + <colorrole role="WindowText"> | ||
373 | + <brush brushstyle="SolidPattern"> | ||
374 | + <color alpha="255"> | ||
375 | + <red>255</red> | ||
376 | + <green>255</green> | ||
377 | + <blue>255</blue> | ||
378 | + </color> | ||
379 | + </brush> | ||
380 | + </colorrole> | ||
381 | + </active> | ||
382 | + <inactive> | ||
383 | + <colorrole role="WindowText"> | ||
384 | + <brush brushstyle="SolidPattern"> | ||
385 | + <color alpha="255"> | ||
386 | + <red>255</red> | ||
387 | + <green>255</green> | ||
388 | + <blue>255</blue> | ||
389 | + </color> | ||
390 | + </brush> | ||
391 | + </colorrole> | ||
392 | + </inactive> | ||
393 | + <disabled> | ||
394 | + <colorrole role="WindowText"> | ||
395 | + <brush brushstyle="SolidPattern"> | ||
396 | + <color alpha="255"> | ||
397 | + <red>123</red> | ||
398 | + <green>123</green> | ||
399 | + <blue>123</blue> | ||
400 | + </color> | ||
401 | + </brush> | ||
402 | + </colorrole> | ||
403 | + </disabled> | ||
404 | + </palette> | ||
405 | + </property> | ||
406 | + <property name="font"> | ||
407 | + <font> | ||
408 | + <family>Roboto</family> | ||
409 | + <pointsize>16</pointsize> | ||
410 | + <weight>75</weight> | ||
411 | + <bold>true</bold> | ||
412 | + </font> | ||
413 | + </property> | ||
414 | + <property name="text"> | ||
415 | + <string><span style="font-size:11pt;">℃</span></string> | ||
416 | + </property> | ||
417 | + <property name="alignment"> | ||
418 | + <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set> | ||
419 | + </property> | ||
420 | + </widget> | ||
421 | + <widget class="QLabel" name="steamLabel_5"> | ||
422 | + <property name="enabled"> | ||
423 | + <bool>true</bool> | ||
424 | + </property> | ||
425 | + <property name="geometry"> | ||
426 | + <rect> | ||
427 | + <x>780</x> | ||
428 | + <y>890</y> | ||
429 | + <width>91</width> | ||
430 | + <height>51</height> | ||
431 | + </rect> | ||
432 | + </property> | ||
433 | + <property name="palette"> | ||
434 | + <palette> | ||
435 | + <active> | ||
436 | + <colorrole role="WindowText"> | ||
437 | + <brush brushstyle="SolidPattern"> | ||
438 | + <color alpha="255"> | ||
439 | + <red>255</red> | ||
440 | + <green>255</green> | ||
441 | + <blue>255</blue> | ||
442 | + </color> | ||
443 | + </brush> | ||
444 | + </colorrole> | ||
445 | + </active> | ||
446 | + <inactive> | ||
447 | + <colorrole role="WindowText"> | ||
448 | + <brush brushstyle="SolidPattern"> | ||
449 | + <color alpha="255"> | ||
450 | + <red>255</red> | ||
451 | + <green>255</green> | ||
452 | + <blue>255</blue> | ||
453 | + </color> | ||
454 | + </brush> | ||
455 | + </colorrole> | ||
456 | + </inactive> | ||
457 | + <disabled> | ||
458 | + <colorrole role="WindowText"> | ||
459 | + <brush brushstyle="SolidPattern"> | ||
460 | + <color alpha="255"> | ||
461 | + <red>123</red> | ||
462 | + <green>123</green> | ||
463 | + <blue>123</blue> | ||
464 | + </color> | ||
465 | + </brush> | ||
466 | + </colorrole> | ||
467 | + </disabled> | ||
468 | + </palette> | ||
469 | + </property> | ||
470 | + <property name="font"> | ||
471 | + <font> | ||
472 | + <family>Malgun Gothic</family> | ||
473 | + <pointsize>9</pointsize> | ||
474 | + </font> | ||
475 | + </property> | ||
476 | + <property name="text"> | ||
477 | + <string>증가</string> | ||
478 | + </property> | ||
479 | + <property name="alignment"> | ||
480 | + <set>Qt::AlignCenter</set> | ||
481 | + </property> | ||
482 | + </widget> | ||
483 | + <widget class="QLabel" name="steamLabel_4"> | ||
484 | + <property name="enabled"> | ||
485 | + <bool>true</bool> | ||
486 | + </property> | ||
487 | + <property name="geometry"> | ||
488 | + <rect> | ||
489 | + <x>160</x> | ||
490 | + <y>890</y> | ||
491 | + <width>91</width> | ||
492 | + <height>51</height> | ||
493 | + </rect> | ||
494 | + </property> | ||
495 | + <property name="palette"> | ||
496 | + <palette> | ||
497 | + <active> | ||
498 | + <colorrole role="WindowText"> | ||
499 | + <brush brushstyle="SolidPattern"> | ||
500 | + <color alpha="255"> | ||
501 | + <red>255</red> | ||
502 | + <green>255</green> | ||
503 | + <blue>255</blue> | ||
504 | + </color> | ||
505 | + </brush> | ||
506 | + </colorrole> | ||
507 | + </active> | ||
508 | + <inactive> | ||
509 | + <colorrole role="WindowText"> | ||
510 | + <brush brushstyle="SolidPattern"> | ||
511 | + <color alpha="255"> | ||
512 | + <red>255</red> | ||
513 | + <green>255</green> | ||
514 | + <blue>255</blue> | ||
515 | + </color> | ||
516 | + </brush> | ||
517 | + </colorrole> | ||
518 | + </inactive> | ||
519 | + <disabled> | ||
520 | + <colorrole role="WindowText"> | ||
521 | + <brush brushstyle="SolidPattern"> | ||
522 | + <color alpha="255"> | ||
523 | + <red>123</red> | ||
524 | + <green>123</green> | ||
525 | + <blue>123</blue> | ||
526 | + </color> | ||
527 | + </brush> | ||
528 | + </colorrole> | ||
529 | + </disabled> | ||
530 | + </palette> | ||
531 | + </property> | ||
532 | + <property name="font"> | ||
533 | + <font> | ||
534 | + <family>Malgun Gothic</family> | ||
535 | + <pointsize>9</pointsize> | ||
536 | + </font> | ||
537 | + </property> | ||
538 | + <property name="text"> | ||
539 | + <string>감소</string> | ||
540 | + </property> | ||
541 | + <property name="alignment"> | ||
542 | + <set>Qt::AlignCenter</set> | ||
543 | + </property> | ||
544 | + </widget> | ||
545 | + <widget class="QWidget" name="bottomBar" native="true"> | ||
546 | + <property name="geometry"> | ||
547 | + <rect> | ||
548 | + <x>0</x> | ||
549 | + <y>1450</y> | ||
550 | + <width>900</width> | ||
551 | + <height>150</height> | ||
552 | + </rect> | ||
553 | + </property> | ||
554 | + <widget class="QPushButton" name="backButton"> | ||
555 | + <property name="geometry"> | ||
556 | + <rect> | ||
557 | + <x>232</x> | ||
558 | + <y>26</y> | ||
559 | + <width>97</width> | ||
560 | + <height>97</height> | ||
561 | + </rect> | ||
562 | + </property> | ||
563 | + <property name="styleSheet"> | ||
564 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/back.png); } | ||
565 | +QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</string> | ||
566 | + </property> | ||
567 | + <property name="text"> | ||
568 | + <string/> | ||
569 | + </property> | ||
570 | + </widget> | ||
571 | + <widget class="QPushButton" name="configButton"> | ||
572 | + <property name="geometry"> | ||
573 | + <rect> | ||
574 | + <x>345</x> | ||
575 | + <y>26</y> | ||
576 | + <width>97</width> | ||
577 | + <height>97</height> | ||
578 | + </rect> | ||
579 | + </property> | ||
580 | + <property name="styleSheet"> | ||
581 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/config.png); } | ||
582 | +QPushButton:pressed { border-image: url(:/images/bottom_bar/config_ov.png); }</string> | ||
583 | + </property> | ||
584 | + <property name="text"> | ||
585 | + <string/> | ||
586 | + </property> | ||
587 | + </widget> | ||
588 | + <widget class="QPushButton" name="okButton"> | ||
589 | + <property name="geometry"> | ||
590 | + <rect> | ||
591 | + <x>571</x> | ||
592 | + <y>26</y> | ||
593 | + <width>97</width> | ||
594 | + <height>97</height> | ||
595 | + </rect> | ||
596 | + </property> | ||
597 | + <property name="styleSheet"> | ||
598 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/006_sys_icon_16.png); } | ||
599 | +QPushButton:pressed { border-image: url(:/images/bottom_bar/006_sys_icon_16_ov.png); }</string> | ||
600 | + </property> | ||
601 | + <property name="text"> | ||
602 | + <string/> | ||
603 | + </property> | ||
604 | + </widget> | ||
605 | + <widget class="QPushButton" name="helpButton"> | ||
606 | + <property name="geometry"> | ||
607 | + <rect> | ||
608 | + <x>458</x> | ||
609 | + <y>26</y> | ||
610 | + <width>97</width> | ||
611 | + <height>97</height> | ||
612 | + </rect> | ||
613 | + </property> | ||
614 | + <property name="styleSheet"> | ||
615 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/help.png); } | ||
616 | +QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</string> | ||
617 | + </property> | ||
618 | + <property name="text"> | ||
619 | + <string/> | ||
620 | + </property> | ||
621 | + </widget> | ||
622 | + </widget> | ||
623 | + <widget class="QPushButton" name="tempButton"> | ||
624 | + <property name="geometry"> | ||
625 | + <rect> | ||
626 | + <x>27</x> | ||
627 | + <y>875</y> | ||
628 | + <width>140</width> | ||
629 | + <height>140</height> | ||
630 | + </rect> | ||
631 | + </property> | ||
632 | + <property name="styleSheet"> | ||
633 | + <string notr="true">QPushButton { image: url(:/images/slider_icon/temp.png); } | ||
634 | +QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); }</string> | ||
635 | + </property> | ||
636 | + <property name="style" stdset="0"> | ||
637 | + <string notr="true">icon</string> | ||
638 | + </property> | ||
639 | + </widget> | ||
640 | + <widget class="QSlider" name="tempSlider"> | ||
641 | + <property name="geometry"> | ||
642 | + <rect> | ||
643 | + <x>185</x> | ||
644 | + <y>933</y> | ||
645 | + <width>666</width> | ||
646 | + <height>33</height> | ||
647 | + </rect> | ||
648 | + </property> | ||
649 | + <property name="styleSheet"> | ||
650 | + <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/temp.png); }</string> | ||
651 | + </property> | ||
652 | + <property name="maximum"> | ||
653 | + <number>6</number> | ||
654 | + </property> | ||
655 | + <property name="value"> | ||
656 | + <number>0</number> | ||
657 | + </property> | ||
658 | + <property name="orientation"> | ||
659 | + <enum>Qt::Horizontal</enum> | ||
660 | + </property> | ||
661 | + </widget> | ||
662 | + <widget class="QPushButton" name="steamButton"> | ||
663 | + <property name="geometry"> | ||
664 | + <rect> | ||
665 | + <x>0</x> | ||
666 | + <y>426</y> | ||
667 | + <width>300</width> | ||
668 | + <height>293</height> | ||
669 | + </rect> | ||
670 | + </property> | ||
671 | + <property name="styleSheet"> | ||
672 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_steam_hide.png); } | ||
673 | +QPushButton:pressed { background-image: url(:/images/cook_mode/big_steam_ov.png); } | ||
674 | +QPushButton:checked { background-image: url(:/images/cook_mode/big_steam.png); }</string> | ||
675 | + </property> | ||
676 | + <property name="text"> | ||
677 | + <string>스팀</string> | ||
678 | + </property> | ||
679 | + <property name="checkable"> | ||
680 | + <bool>true</bool> | ||
681 | + </property> | ||
682 | + <property name="autoExclusive"> | ||
683 | + <bool>true</bool> | ||
684 | + </property> | ||
685 | + <property name="style" stdset="0"> | ||
686 | + <string notr="true">mode</string> | ||
687 | + </property> | ||
688 | + </widget> | ||
689 | + <widget class="QLabel" name="tempLabel"> | ||
690 | + <property name="enabled"> | ||
691 | + <bool>true</bool> | ||
692 | + </property> | ||
693 | + <property name="geometry"> | ||
694 | + <rect> | ||
695 | + <x>690</x> | ||
696 | + <y>960</y> | ||
697 | + <width>150</width> | ||
698 | + <height>51</height> | ||
699 | + </rect> | ||
700 | + </property> | ||
701 | + <property name="palette"> | ||
702 | + <palette> | ||
703 | + <active> | ||
704 | + <colorrole role="WindowText"> | ||
705 | + <brush brushstyle="SolidPattern"> | ||
706 | + <color alpha="255"> | ||
707 | + <red>255</red> | ||
708 | + <green>255</green> | ||
709 | + <blue>255</blue> | ||
710 | + </color> | ||
711 | + </brush> | ||
712 | + </colorrole> | ||
713 | + </active> | ||
714 | + <inactive> | ||
715 | + <colorrole role="WindowText"> | ||
716 | + <brush brushstyle="SolidPattern"> | ||
717 | + <color alpha="255"> | ||
718 | + <red>255</red> | ||
719 | + <green>255</green> | ||
720 | + <blue>255</blue> | ||
721 | + </color> | ||
722 | + </brush> | ||
723 | + </colorrole> | ||
724 | + </inactive> | ||
725 | + <disabled> | ||
726 | + <colorrole role="WindowText"> | ||
727 | + <brush brushstyle="SolidPattern"> | ||
728 | + <color alpha="255"> | ||
729 | + <red>123</red> | ||
730 | + <green>123</green> | ||
731 | + <blue>123</blue> | ||
732 | + </color> | ||
733 | + </brush> | ||
734 | + </colorrole> | ||
735 | + </disabled> | ||
736 | + </palette> | ||
737 | + </property> | ||
738 | + <property name="font"> | ||
739 | + <font> | ||
740 | + <family>Roboto</family> | ||
741 | + <pointsize>16</pointsize> | ||
742 | + <weight>75</weight> | ||
743 | + <bold>true</bold> | ||
744 | + </font> | ||
745 | + </property> | ||
746 | + <property name="text"> | ||
747 | + <string>30<span style="font-size:11pt;">℃</span></string> | ||
748 | + </property> | ||
749 | + <property name="alignment"> | ||
750 | + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | ||
751 | + </property> | ||
752 | + </widget> | ||
753 | + <widget class="QLabel" name="steamLabel_2"> | ||
754 | + <property name="enabled"> | ||
755 | + <bool>true</bool> | ||
756 | + </property> | ||
757 | + <property name="geometry"> | ||
758 | + <rect> | ||
759 | + <x>160</x> | ||
760 | + <y>740</y> | ||
761 | + <width>91</width> | ||
762 | + <height>51</height> | ||
763 | + </rect> | ||
764 | + </property> | ||
765 | + <property name="palette"> | ||
766 | + <palette> | ||
767 | + <active> | ||
768 | + <colorrole role="WindowText"> | ||
769 | + <brush brushstyle="SolidPattern"> | ||
770 | + <color alpha="255"> | ||
771 | + <red>255</red> | ||
772 | + <green>255</green> | ||
773 | + <blue>255</blue> | ||
774 | + </color> | ||
775 | + </brush> | ||
776 | + </colorrole> | ||
777 | + </active> | ||
778 | + <inactive> | ||
779 | + <colorrole role="WindowText"> | ||
780 | + <brush brushstyle="SolidPattern"> | ||
781 | + <color alpha="255"> | ||
782 | + <red>255</red> | ||
783 | + <green>255</green> | ||
784 | + <blue>255</blue> | ||
785 | + </color> | ||
786 | + </brush> | ||
787 | + </colorrole> | ||
788 | + </inactive> | ||
789 | + <disabled> | ||
790 | + <colorrole role="WindowText"> | ||
791 | + <brush brushstyle="SolidPattern"> | ||
792 | + <color alpha="255"> | ||
793 | + <red>123</red> | ||
794 | + <green>123</green> | ||
795 | + <blue>123</blue> | ||
796 | + </color> | ||
797 | + </brush> | ||
798 | + </colorrole> | ||
799 | + </disabled> | ||
800 | + </palette> | ||
801 | + </property> | ||
802 | + <property name="font"> | ||
803 | + <font> | ||
804 | + <family>Malgun Gothic</family> | ||
805 | + <pointsize>9</pointsize> | ||
806 | + </font> | ||
807 | + </property> | ||
808 | + <property name="text"> | ||
809 | + <string>감소</string> | ||
810 | + </property> | ||
811 | + <property name="alignment"> | ||
812 | + <set>Qt::AlignCenter</set> | ||
813 | + </property> | ||
814 | + </widget> | ||
815 | + <widget class="QSlider" name="humiditySlider"> | ||
816 | + <property name="geometry"> | ||
817 | + <rect> | ||
818 | + <x>185</x> | ||
819 | + <y>783</y> | ||
820 | + <width>666</width> | ||
821 | + <height>33</height> | ||
822 | + </rect> | ||
823 | + </property> | ||
824 | + <property name="styleSheet"> | ||
825 | + <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/humidity.png); }</string> | ||
826 | + </property> | ||
827 | + <property name="maximum"> | ||
828 | + <number>100</number> | ||
829 | + </property> | ||
830 | + <property name="orientation"> | ||
831 | + <enum>Qt::Horizontal</enum> | ||
832 | + </property> | ||
833 | + </widget> | ||
834 | + <widget class="QPushButton" name="humidityButton"> | ||
835 | + <property name="geometry"> | ||
836 | + <rect> | ||
837 | + <x>27</x> | ||
838 | + <y>725</y> | ||
839 | + <width>140</width> | ||
840 | + <height>140</height> | ||
841 | + </rect> | ||
842 | + </property> | ||
843 | + <property name="styleSheet"> | ||
844 | + <string notr="true">QPushButton { image: url(:/images/slider_icon/humidity.png); } | ||
845 | +QPushButton:pressed { image: url(:/images/slider_icon/humidity_ov.png); }</string> | ||
846 | + </property> | ||
847 | + <property name="style" stdset="0"> | ||
848 | + <string notr="true">icon</string> | ||
849 | + </property> | ||
850 | + </widget> | ||
851 | + <widget class="QPushButton" name="interTempButton"> | ||
852 | + <property name="geometry"> | ||
853 | + <rect> | ||
854 | + <x>27</x> | ||
855 | + <y>1175</y> | ||
856 | + <width>140</width> | ||
857 | + <height>140</height> | ||
858 | + </rect> | ||
859 | + </property> | ||
860 | + <property name="styleSheet"> | ||
861 | + <string notr="true">QPushButton { image: url(:/images/slider_icon/core_temp.png); } | ||
862 | +QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }</string> | ||
863 | + </property> | ||
864 | + <property name="style" stdset="0"> | ||
865 | + <string notr="true">icon</string> | ||
866 | + </property> | ||
867 | + </widget> | ||
868 | + <widget class="QPushButton" name="combiButton"> | ||
869 | + <property name="geometry"> | ||
870 | + <rect> | ||
871 | + <x>300</x> | ||
872 | + <y>426</y> | ||
873 | + <width>300</width> | ||
874 | + <height>293</height> | ||
875 | + </rect> | ||
876 | + </property> | ||
877 | + <property name="styleSheet"> | ||
878 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_combi_hide.png); } | ||
879 | +QPushButton:pressed { background-image: url(:/images/cook_mode/big_combi_ov.png); } | ||
880 | +QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); }</string> | ||
881 | + </property> | ||
882 | + <property name="text"> | ||
883 | + <string>콤비</string> | ||
884 | + </property> | ||
885 | + <property name="checkable"> | ||
886 | + <bool>true</bool> | ||
887 | + </property> | ||
888 | + <property name="autoExclusive"> | ||
889 | + <bool>true</bool> | ||
890 | + </property> | ||
891 | + <property name="style" stdset="0"> | ||
892 | + <string notr="true">mode</string> | ||
893 | + </property> | ||
894 | + </widget> | ||
895 | + <widget class="QLabel" name="timeLabel"> | ||
896 | + <property name="enabled"> | ||
897 | + <bool>true</bool> | ||
898 | + </property> | ||
899 | + <property name="geometry"> | ||
900 | + <rect> | ||
901 | + <x>539</x> | ||
902 | + <y>1110</y> | ||
903 | + <width>301</width> | ||
904 | + <height>51</height> | ||
905 | + </rect> | ||
906 | + </property> | ||
907 | + <property name="palette"> | ||
908 | + <palette> | ||
909 | + <active> | ||
910 | + <colorrole role="WindowText"> | ||
911 | + <brush brushstyle="SolidPattern"> | ||
912 | + <color alpha="255"> | ||
913 | + <red>255</red> | ||
914 | + <green>255</green> | ||
915 | + <blue>255</blue> | ||
916 | + </color> | ||
917 | + </brush> | ||
918 | + </colorrole> | ||
919 | + </active> | ||
920 | + <inactive> | ||
921 | + <colorrole role="WindowText"> | ||
922 | + <brush brushstyle="SolidPattern"> | ||
923 | + <color alpha="255"> | ||
924 | + <red>255</red> | ||
925 | + <green>255</green> | ||
926 | + <blue>255</blue> | ||
927 | + </color> | ||
928 | + </brush> | ||
929 | + </colorrole> | ||
930 | + </inactive> | ||
931 | + <disabled> | ||
932 | + <colorrole role="WindowText"> | ||
933 | + <brush brushstyle="SolidPattern"> | ||
934 | + <color alpha="255"> | ||
935 | + <red>123</red> | ||
936 | + <green>123</green> | ||
937 | + <blue>123</blue> | ||
938 | + </color> | ||
939 | + </brush> | ||
940 | + </colorrole> | ||
941 | + </disabled> | ||
942 | + </palette> | ||
943 | + </property> | ||
944 | + <property name="font"> | ||
945 | + <font> | ||
946 | + <family>Roboto</family> | ||
947 | + <pointsize>16</pointsize> | ||
948 | + <weight>75</weight> | ||
949 | + <bold>true</bold> | ||
950 | + </font> | ||
951 | + </property> | ||
952 | + <property name="text"> | ||
953 | + <string>0<span style="font-size:11pt;">초</span></string> | ||
954 | + </property> | ||
955 | + <property name="alignment"> | ||
956 | + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | ||
957 | + </property> | ||
958 | + </widget> | ||
959 | + <widget class="QPushButton" name="fanButton"> | ||
960 | + <property name="geometry"> | ||
961 | + <rect> | ||
962 | + <x>449</x> | ||
963 | + <y>1319</y> | ||
964 | + <width>112</width> | ||
965 | + <height>131</height> | ||
966 | + </rect> | ||
967 | + </property> | ||
968 | + <property name="styleSheet"> | ||
969 | + <string notr="true">QPushButton { background-image: url(:/images/manual_button/fan_4.png); }</string> | ||
970 | + </property> | ||
971 | + </widget> | ||
972 | + </widget> | ||
21 | </widget> | 973 | </widget> |
22 | - <pixmapfunction/> | 974 | + <customwidgets> |
975 | + <customwidget> | ||
976 | + <class>Clock</class> | ||
977 | + <extends>QWidget</extends> | ||
978 | + <header>clock.h</header> | ||
979 | + <container>1</container> | ||
980 | + </customwidget> | ||
981 | + <customwidget> | ||
982 | + <class>WashWarnIcon</class> | ||
983 | + <extends>QLabel</extends> | ||
984 | + <header>washwarnicon.h</header> | ||
985 | + </customwidget> | ||
986 | + <customwidget> | ||
987 | + <class>AnimatedImageBox</class> | ||
988 | + <extends>QLabel</extends> | ||
989 | + <header>animatedimagebox.h</header> | ||
990 | + </customwidget> | ||
991 | + </customwidgets> | ||
992 | + <resources> | ||
993 | + <include location="resources.qrc"/> | ||
994 | + </resources> | ||
23 | <connections/> | 995 | <connections/> |
24 | </ui> | 996 | </ui> |
app/gui/oven_control/programmingselectionwindow.cpp
1 | #include "programmingselectionwindow.h" | 1 | #include "programmingselectionwindow.h" |
2 | #include "ui_programmingselectionwindow.h" | 2 | #include "ui_programmingselectionwindow.h" |
3 | 3 | ||
4 | +#include "programmingmanualwindow.h" | ||
5 | + | ||
4 | ProgrammingSelectionWindow::ProgrammingSelectionWindow(QWidget *parent) : | 6 | ProgrammingSelectionWindow::ProgrammingSelectionWindow(QWidget *parent) : |
5 | QMainWindow(parent), | 7 | QMainWindow(parent), |
6 | ui(new Ui::ProgrammingSelectionWindow) | 8 | ui(new Ui::ProgrammingSelectionWindow) |
7 | { | 9 | { |
8 | ui->setupUi(this); | 10 | ui->setupUi(this); |
11 | + | ||
12 | +// ui->clockContainer->setParent(ui->upperStack); | ||
13 | + setAttribute(Qt::WA_DeleteOnClose); | ||
14 | + | ||
15 | + setFocus(); | ||
9 | } | 16 | } |
10 | 17 | ||
11 | ProgrammingSelectionWindow::~ProgrammingSelectionWindow() | 18 | ProgrammingSelectionWindow::~ProgrammingSelectionWindow() |
12 | { | 19 | { |
13 | delete ui; | 20 | delete ui; |
14 | } | 21 | } |
22 | + | ||
23 | +void ProgrammingSelectionWindow::setModeEnabled(bool enabled) | ||
24 | +{ | ||
25 | + ui->steamButton->setEnabled(enabled); | ||
26 | + ui->combiButton->setEnabled(enabled); | ||
27 | + ui->dryheatButton->setEnabled(enabled); | ||
28 | +} | ||
29 | + | ||
30 | +void ProgrammingSelectionWindow::setCookTypeEnabled(bool enabled) | ||
31 | +{ | ||
32 | + ui->poultryButton->setEnabled(enabled); | ||
33 | + ui->meatButton->setEnabled(enabled); | ||
34 | + ui->fishButton->setEnabled(enabled); | ||
35 | + ui->dessertButton->setEnabled(enabled); | ||
36 | + ui->grainButton->setEnabled(enabled); | ||
37 | + ui->breadButton->setEnabled(enabled); | ||
38 | + ui->etcButton->setEnabled(enabled); | ||
39 | +} | ||
40 | + | ||
41 | +void ProgrammingSelectionWindow::onModeClicked(Define::Mode mode) | ||
42 | +{ | ||
43 | + ProgrammingManualWindow *w = new ProgrammingManualWindow(this, mode); | ||
44 | + connect(w, SIGNAL(added()), SIGNAL(added())); | ||
45 | + connect(w, SIGNAL(destroyed(QObject*)), SLOT(deleteLater())); | ||
46 | + w->setWindowModality(Qt::WindowModal); | ||
47 | + w->showFullScreen(); | ||
48 | + w->raise(); | ||
49 | + | ||
50 | + hide(); | ||
51 | +} | ||
52 | + | ||
53 | +void ProgrammingSelectionWindow::onCookTypeClicked(Define::CookType type) | ||
54 | +{ | ||
55 | + emit cookTypeSelected(type); | ||
56 | + close(); | ||
57 | +} | ||
58 | + | ||
59 | +void ProgrammingSelectionWindow::on_steamButton_clicked() | ||
60 | +{ | ||
61 | + onModeClicked(Define::SteamMode); | ||
62 | +} | ||
63 | + | ||
64 | +void ProgrammingSelectionWindow::on_combiButton_clicked() | ||
65 | +{ | ||
66 | + onModeClicked(Define::CombiMode); | ||
67 | +} | ||
68 | + | ||
69 | +void ProgrammingSelectionWindow::on_dryheatButton_clicked() | ||
70 | +{ | ||
71 | + onModeClicked(Define::DryMode); | ||
72 | +} | ||
73 | + | ||
74 | +void ProgrammingSelectionWindow::on_poultryButton_clicked() | ||
75 | +{ | ||
76 | + onCookTypeClicked(Define::Poultry); | ||
77 | +} | ||
78 | + | ||
79 | +void ProgrammingSelectionWindow::on_meatButton_clicked() | ||
80 | +{ | ||
81 | + onCookTypeClicked(Define::Meat); | ||
82 | +} | ||
83 | + | ||
84 | +void ProgrammingSelectionWindow::on_fishButton_clicked() | ||
85 | +{ | ||
86 | + onCookTypeClicked(Define::Fish); | ||
87 | +} | ||
88 | + | ||
89 | +void ProgrammingSelectionWindow::on_dessertButton_clicked() | ||
90 | +{ | ||
91 | + onCookTypeClicked(Define::Desert); | ||
92 | +} | ||
93 | + | ||
94 | +void ProgrammingSelectionWindow::on_grainButton_clicked() | ||
95 | +{ | ||
96 | + onCookTypeClicked(Define::Vegetable); | ||
97 | +} | ||
98 | + | ||
99 | +void ProgrammingSelectionWindow::on_breadButton_clicked() | ||
100 | +{ | ||
101 | + onCookTypeClicked(Define::Bread); | ||
102 | +} | ||
103 | + | ||
104 | +void ProgrammingSelectionWindow::on_etcButton_clicked() | ||
105 | +{ | ||
106 | + onCookTypeClicked(Define::Etc); | ||
107 | +} |
app/gui/oven_control/programmingselectionwindow.h
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | 3 | ||
4 | #include <QMainWindow> | 4 | #include <QMainWindow> |
5 | 5 | ||
6 | +#include "define.h" | ||
7 | + | ||
6 | namespace Ui { | 8 | namespace Ui { |
7 | class ProgrammingSelectionWindow; | 9 | class ProgrammingSelectionWindow; |
8 | } | 10 | } |
@@ -15,8 +17,31 @@ public: | @@ -15,8 +17,31 @@ public: | ||
15 | explicit ProgrammingSelectionWindow(QWidget *parent = 0); | 17 | explicit ProgrammingSelectionWindow(QWidget *parent = 0); |
16 | ~ProgrammingSelectionWindow(); | 18 | ~ProgrammingSelectionWindow(); |
17 | 19 | ||
20 | + void setModeEnabled(bool enabled); | ||
21 | + void setCookTypeEnabled(bool enabled); | ||
22 | + | ||
18 | private: | 23 | private: |
19 | Ui::ProgrammingSelectionWindow *ui; | 24 | Ui::ProgrammingSelectionWindow *ui; |
25 | + | ||
26 | +signals: | ||
27 | + void added(); | ||
28 | + void modeSelected(Define::Mode); | ||
29 | + void cookTypeSelected(Define::CookType); | ||
30 | + | ||
31 | +private slots: | ||
32 | + void onModeClicked(Define::Mode mode); | ||
33 | + void onCookTypeClicked(Define::CookType type); | ||
34 | + | ||
35 | + void on_steamButton_clicked(); | ||
36 | + void on_combiButton_clicked(); | ||
37 | + void on_dryheatButton_clicked(); | ||
38 | + void on_poultryButton_clicked(); | ||
39 | + void on_meatButton_clicked(); | ||
40 | + void on_fishButton_clicked(); | ||
41 | + void on_dessertButton_clicked(); | ||
42 | + void on_grainButton_clicked(); | ||
43 | + void on_breadButton_clicked(); | ||
44 | + void on_etcButton_clicked(); | ||
20 | }; | 45 | }; |
21 | 46 | ||
22 | #endif // PROGRAMMINGSELECTIONWINDOW_H | 47 | #endif // PROGRAMMINGSELECTIONWINDOW_H |
app/gui/oven_control/programmingselectionwindow.ui
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
1 | <ui version="4.0"> | 2 | <ui version="4.0"> |
2 | - <author/> | ||
3 | - <comment/> | ||
4 | - <exportmacro/> | ||
5 | <class>ProgrammingSelectionWindow</class> | 3 | <class>ProgrammingSelectionWindow</class> |
6 | <widget class="QMainWindow" name="ProgrammingSelectionWindow"> | 4 | <widget class="QMainWindow" name="ProgrammingSelectionWindow"> |
7 | <property name="geometry"> | 5 | <property name="geometry"> |
8 | <rect> | 6 | <rect> |
9 | <x>0</x> | 7 | <x>0</x> |
10 | <y>0</y> | 8 | <y>0</y> |
11 | - <width>800</width> | ||
12 | - <height>600</height> | 9 | + <width>900</width> |
10 | + <height>1600</height> | ||
13 | </rect> | 11 | </rect> |
14 | </property> | 12 | </property> |
15 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
16 | <string>MainWindow</string> | 14 | <string>MainWindow</string> |
17 | </property> | 15 | </property> |
18 | - <widget class="QMenuBar" name="menubar"/> | ||
19 | - <widget class="QWidget" name="centralwidget"/> | ||
20 | - <widget class="QStatusBar" name="statusbar"/> | 16 | + <property name="styleSheet"> |
17 | + <string notr="true">#centralwidget { background-image: url(:/images/background/main.png); } | ||
18 | +#bottomBar { background-image: url(:/images/bottom_bar/background.png); } | ||
19 | + | ||
20 | +QWidget { outline: none; } | ||
21 | + | ||
22 | +QPushButton[style="mode"] { | ||
23 | +background-repeat: no-repeat; | ||
24 | +background-position: center; | ||
25 | +background-clip: border; | ||
26 | +background-origin: border; | ||
27 | +margin-bottom: 50px; | ||
28 | + | ||
29 | +border-top: 200px; | ||
30 | +border-bottom: -50px; | ||
31 | +border-style: hidden; | ||
32 | +color: white; | ||
33 | +font-size: 40px; | ||
34 | +} | ||
35 | + | ||
36 | +QPushButton[style="type"] { | ||
37 | +background-repeat: no-repeat; | ||
38 | +background-position: center; | ||
39 | +background-clip: border; | ||
40 | +background-origin: border; | ||
41 | + | ||
42 | +border-top: 165px; | ||
43 | +border-style: hidden; | ||
44 | +color: white; | ||
45 | +font-size: 30px; | ||
46 | +} | ||
47 | + | ||
48 | +QPushButton[style="function"] { | ||
49 | +background-repeat: no-repeat; | ||
50 | +background-position: center; | ||
51 | +background-clip: border; | ||
52 | +background-origin: border; | ||
53 | + | ||
54 | +border-top: 206px; | ||
55 | +border-style: hidden; | ||
56 | +color: white; | ||
57 | +font-size: 30px; | ||
58 | +} | ||
59 | + | ||
60 | +QPushButton:disabled { color: #7B7B7B; }</string> | ||
61 | + </property> | ||
62 | + <widget class="QWidget" name="centralwidget"> | ||
63 | + <widget class="QPushButton" name="dessertButton"> | ||
64 | + <property name="enabled"> | ||
65 | + <bool>false</bool> | ||
66 | + </property> | ||
67 | + <property name="geometry"> | ||
68 | + <rect> | ||
69 | + <x>675</x> | ||
70 | + <y>720</y> | ||
71 | + <width>225</width> | ||
72 | + <height>222</height> | ||
73 | + </rect> | ||
74 | + </property> | ||
75 | + <property name="sizePolicy"> | ||
76 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
77 | + <horstretch>0</horstretch> | ||
78 | + <verstretch>0</verstretch> | ||
79 | + </sizepolicy> | ||
80 | + </property> | ||
81 | + <property name="styleSheet"> | ||
82 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/desert.png); } | ||
83 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/desert_ov.png); } | ||
84 | +QPushButton:disabled { background-image: url(:/images/cook_type/desert_hide.png); }</string> | ||
85 | + </property> | ||
86 | + <property name="text"> | ||
87 | + <string>디저트류</string> | ||
88 | + </property> | ||
89 | + <property name="style" stdset="0"> | ||
90 | + <string>type</string> | ||
91 | + </property> | ||
92 | + </widget> | ||
93 | + <widget class="QPushButton" name="fishButton"> | ||
94 | + <property name="enabled"> | ||
95 | + <bool>false</bool> | ||
96 | + </property> | ||
97 | + <property name="geometry"> | ||
98 | + <rect> | ||
99 | + <x>450</x> | ||
100 | + <y>720</y> | ||
101 | + <width>225</width> | ||
102 | + <height>222</height> | ||
103 | + </rect> | ||
104 | + </property> | ||
105 | + <property name="sizePolicy"> | ||
106 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
107 | + <horstretch>0</horstretch> | ||
108 | + <verstretch>0</verstretch> | ||
109 | + </sizepolicy> | ||
110 | + </property> | ||
111 | + <property name="styleSheet"> | ||
112 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/fish.png); } | ||
113 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/fish_ov.png); } | ||
114 | +QPushButton:disabled { background-image: url(:/images/cook_type/fish_hide.png); }</string> | ||
115 | + </property> | ||
116 | + <property name="text"> | ||
117 | + <string>생선류</string> | ||
118 | + </property> | ||
119 | + <property name="style" stdset="0"> | ||
120 | + <string>type</string> | ||
121 | + </property> | ||
122 | + </widget> | ||
123 | + <widget class="Line" name="line_6"> | ||
124 | + <property name="geometry"> | ||
125 | + <rect> | ||
126 | + <x>675</x> | ||
127 | + <y>993</y> | ||
128 | + <width>1</width> | ||
129 | + <height>120</height> | ||
130 | + </rect> | ||
131 | + </property> | ||
132 | + <property name="orientation"> | ||
133 | + <enum>Qt::Vertical</enum> | ||
134 | + </property> | ||
135 | + </widget> | ||
136 | + <widget class="Line" name="line_4"> | ||
137 | + <property name="geometry"> | ||
138 | + <rect> | ||
139 | + <x>225</x> | ||
140 | + <y>993</y> | ||
141 | + <width>1</width> | ||
142 | + <height>120</height> | ||
143 | + </rect> | ||
144 | + </property> | ||
145 | + <property name="orientation"> | ||
146 | + <enum>Qt::Vertical</enum> | ||
147 | + </property> | ||
148 | + </widget> | ||
149 | + <widget class="QPushButton" name="multiButton"> | ||
150 | + <property name="enabled"> | ||
151 | + <bool>false</bool> | ||
152 | + </property> | ||
153 | + <property name="geometry"> | ||
154 | + <rect> | ||
155 | + <x>0</x> | ||
156 | + <y>1164</y> | ||
157 | + <width>300</width> | ||
158 | + <height>286</height> | ||
159 | + </rect> | ||
160 | + </property> | ||
161 | + <property name="sizePolicy"> | ||
162 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
163 | + <horstretch>0</horstretch> | ||
164 | + <verstretch>0</verstretch> | ||
165 | + </sizepolicy> | ||
166 | + </property> | ||
167 | + <property name="styleSheet"> | ||
168 | + <string notr="true">QPushButton { background-image: url(:/images/main_button/multi.png); } | ||
169 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/multi_ov.png); } | ||
170 | +QPushButton:disabled { background-image: url(:/images/main_button/multi_hide.png); }</string> | ||
171 | + </property> | ||
172 | + <property name="text"> | ||
173 | + <string>다중요리</string> | ||
174 | + </property> | ||
175 | + <property name="style" stdset="0"> | ||
176 | + <string>function</string> | ||
177 | + </property> | ||
178 | + </widget> | ||
179 | + <widget class="QPushButton" name="grainButton"> | ||
180 | + <property name="enabled"> | ||
181 | + <bool>false</bool> | ||
182 | + </property> | ||
183 | + <property name="geometry"> | ||
184 | + <rect> | ||
185 | + <x>0</x> | ||
186 | + <y>942</y> | ||
187 | + <width>225</width> | ||
188 | + <height>222</height> | ||
189 | + </rect> | ||
190 | + </property> | ||
191 | + <property name="sizePolicy"> | ||
192 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
193 | + <horstretch>0</horstretch> | ||
194 | + <verstretch>0</verstretch> | ||
195 | + </sizepolicy> | ||
196 | + </property> | ||
197 | + <property name="styleSheet"> | ||
198 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/vegetable.png); } | ||
199 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/vegetable_ov.png); } | ||
200 | +QPushButton:disabled { background-image: url(:/images/cook_type/vegetable_hide.png); }</string> | ||
201 | + </property> | ||
202 | + <property name="text"> | ||
203 | + <string>채소및곡류</string> | ||
204 | + </property> | ||
205 | + <property name="style" stdset="0"> | ||
206 | + <string>type</string> | ||
207 | + </property> | ||
208 | + </widget> | ||
209 | + <widget class="QPushButton" name="meatButton"> | ||
210 | + <property name="enabled"> | ||
211 | + <bool>false</bool> | ||
212 | + </property> | ||
213 | + <property name="geometry"> | ||
214 | + <rect> | ||
215 | + <x>225</x> | ||
216 | + <y>720</y> | ||
217 | + <width>225</width> | ||
218 | + <height>222</height> | ||
219 | + </rect> | ||
220 | + </property> | ||
221 | + <property name="sizePolicy"> | ||
222 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
223 | + <horstretch>0</horstretch> | ||
224 | + <verstretch>0</verstretch> | ||
225 | + </sizepolicy> | ||
226 | + </property> | ||
227 | + <property name="styleSheet"> | ||
228 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/meat.png); } | ||
229 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/meat_ov.png); } | ||
230 | +QPushButton:disabled { background-image: url(:/images/cook_type/meat_hide.png); }</string> | ||
231 | + </property> | ||
232 | + <property name="text"> | ||
233 | + <string>육류</string> | ||
234 | + </property> | ||
235 | + <property name="style" stdset="0"> | ||
236 | + <string>type</string> | ||
237 | + </property> | ||
238 | + </widget> | ||
239 | + <widget class="QWidget" name="bottomBar" native="true"> | ||
240 | + <property name="geometry"> | ||
241 | + <rect> | ||
242 | + <x>0</x> | ||
243 | + <y>1450</y> | ||
244 | + <width>900</width> | ||
245 | + <height>150</height> | ||
246 | + </rect> | ||
247 | + </property> | ||
248 | + <property name="minimumSize"> | ||
249 | + <size> | ||
250 | + <width>900</width> | ||
251 | + <height>150</height> | ||
252 | + </size> | ||
253 | + </property> | ||
254 | + <property name="maximumSize"> | ||
255 | + <size> | ||
256 | + <width>900</width> | ||
257 | + <height>150</height> | ||
258 | + </size> | ||
259 | + </property> | ||
260 | + <widget class="QPushButton" name="configButton"> | ||
261 | + <property name="geometry"> | ||
262 | + <rect> | ||
263 | + <x>345</x> | ||
264 | + <y>26</y> | ||
265 | + <width>97</width> | ||
266 | + <height>97</height> | ||
267 | + </rect> | ||
268 | + </property> | ||
269 | + <property name="sizePolicy"> | ||
270 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
271 | + <horstretch>0</horstretch> | ||
272 | + <verstretch>0</verstretch> | ||
273 | + </sizepolicy> | ||
274 | + </property> | ||
275 | + <property name="minimumSize"> | ||
276 | + <size> | ||
277 | + <width>62</width> | ||
278 | + <height>71</height> | ||
279 | + </size> | ||
280 | + </property> | ||
281 | + <property name="styleSheet"> | ||
282 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/config.png); } | ||
283 | +QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/config_ov.png); }</string> | ||
284 | + </property> | ||
285 | + <property name="text"> | ||
286 | + <string/> | ||
287 | + </property> | ||
288 | + </widget> | ||
289 | + <widget class="QPushButton" name="helpButton"> | ||
290 | + <property name="geometry"> | ||
291 | + <rect> | ||
292 | + <x>458</x> | ||
293 | + <y>26</y> | ||
294 | + <width>97</width> | ||
295 | + <height>97</height> | ||
296 | + </rect> | ||
297 | + </property> | ||
298 | + <property name="sizePolicy"> | ||
299 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
300 | + <horstretch>0</horstretch> | ||
301 | + <verstretch>0</verstretch> | ||
302 | + </sizepolicy> | ||
303 | + </property> | ||
304 | + <property name="minimumSize"> | ||
305 | + <size> | ||
306 | + <width>62</width> | ||
307 | + <height>71</height> | ||
308 | + </size> | ||
309 | + </property> | ||
310 | + <property name="styleSheet"> | ||
311 | + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/help.png); } | ||
312 | +QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/help_ov.png); }</string> | ||
313 | + </property> | ||
314 | + <property name="text"> | ||
315 | + <string/> | ||
316 | + </property> | ||
317 | + </widget> | ||
318 | + </widget> | ||
319 | + <widget class="Line" name="line_3"> | ||
320 | + <property name="geometry"> | ||
321 | + <rect> | ||
322 | + <x>675</x> | ||
323 | + <y>771</y> | ||
324 | + <width>1</width> | ||
325 | + <height>120</height> | ||
326 | + </rect> | ||
327 | + </property> | ||
328 | + <property name="orientation"> | ||
329 | + <enum>Qt::Vertical</enum> | ||
330 | + </property> | ||
331 | + </widget> | ||
332 | + <widget class="QPushButton" name="dryheatButton"> | ||
333 | + <property name="enabled"> | ||
334 | + <bool>false</bool> | ||
335 | + </property> | ||
336 | + <property name="geometry"> | ||
337 | + <rect> | ||
338 | + <x>600</x> | ||
339 | + <y>426</y> | ||
340 | + <width>300</width> | ||
341 | + <height>293</height> | ||
342 | + </rect> | ||
343 | + </property> | ||
344 | + <property name="styleSheet"> | ||
345 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_dryheat.png); } | ||
346 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_mode/big_dryheat_ov.png); } | ||
347 | +QPushButton:disabled { background-image: url(:/images/cook_mode/big_dryheat_hide.png); }</string> | ||
348 | + </property> | ||
349 | + <property name="text"> | ||
350 | + <string>건열</string> | ||
351 | + </property> | ||
352 | + <property name="style" stdset="0"> | ||
353 | + <string>mode</string> | ||
354 | + </property> | ||
355 | + </widget> | ||
356 | + <widget class="QPushButton" name="etcButton"> | ||
357 | + <property name="enabled"> | ||
358 | + <bool>false</bool> | ||
359 | + </property> | ||
360 | + <property name="geometry"> | ||
361 | + <rect> | ||
362 | + <x>450</x> | ||
363 | + <y>942</y> | ||
364 | + <width>225</width> | ||
365 | + <height>222</height> | ||
366 | + </rect> | ||
367 | + </property> | ||
368 | + <property name="sizePolicy"> | ||
369 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
370 | + <horstretch>0</horstretch> | ||
371 | + <verstretch>0</verstretch> | ||
372 | + </sizepolicy> | ||
373 | + </property> | ||
374 | + <property name="styleSheet"> | ||
375 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/etc.png); } | ||
376 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/etc_ov.png); } | ||
377 | +QPushButton:disabled { background-image: url(:/images/cook_type/etc_hide.png); }</string> | ||
378 | + </property> | ||
379 | + <property name="text"> | ||
380 | + <string>기타요리</string> | ||
381 | + </property> | ||
382 | + <property name="style" stdset="0"> | ||
383 | + <string>type</string> | ||
384 | + </property> | ||
385 | + </widget> | ||
386 | + <widget class="Line" name="line_7"> | ||
387 | + <property name="geometry"> | ||
388 | + <rect> | ||
389 | + <x>18</x> | ||
390 | + <y>942</y> | ||
391 | + <width>863</width> | ||
392 | + <height>1</height> | ||
393 | + </rect> | ||
394 | + </property> | ||
395 | + <property name="orientation"> | ||
396 | + <enum>Qt::Horizontal</enum> | ||
397 | + </property> | ||
398 | + </widget> | ||
399 | + <widget class="QPushButton" name="washButton"> | ||
400 | + <property name="enabled"> | ||
401 | + <bool>false</bool> | ||
402 | + </property> | ||
403 | + <property name="geometry"> | ||
404 | + <rect> | ||
405 | + <x>600</x> | ||
406 | + <y>1164</y> | ||
407 | + <width>300</width> | ||
408 | + <height>286</height> | ||
409 | + </rect> | ||
410 | + </property> | ||
411 | + <property name="sizePolicy"> | ||
412 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
413 | + <horstretch>0</horstretch> | ||
414 | + <verstretch>0</verstretch> | ||
415 | + </sizepolicy> | ||
416 | + </property> | ||
417 | + <property name="styleSheet"> | ||
418 | + <string notr="true">QPushButton { background-image: url(:/images/main_button/wash.png); } | ||
419 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/wash_ov.png); } | ||
420 | +QPushButton:disabled { background-image: url(:/images/main_button/wash_hide.png); }</string> | ||
421 | + </property> | ||
422 | + <property name="text"> | ||
423 | + <string>세척모드</string> | ||
424 | + </property> | ||
425 | + <property name="style" stdset="0"> | ||
426 | + <string>function</string> | ||
427 | + </property> | ||
428 | + </widget> | ||
429 | + <widget class="QPushButton" name="programmingButton"> | ||
430 | + <property name="enabled"> | ||
431 | + <bool>false</bool> | ||
432 | + </property> | ||
433 | + <property name="geometry"> | ||
434 | + <rect> | ||
435 | + <x>300</x> | ||
436 | + <y>1164</y> | ||
437 | + <width>300</width> | ||
438 | + <height>286</height> | ||
439 | + </rect> | ||
440 | + </property> | ||
441 | + <property name="sizePolicy"> | ||
442 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
443 | + <horstretch>0</horstretch> | ||
444 | + <verstretch>0</verstretch> | ||
445 | + </sizepolicy> | ||
446 | + </property> | ||
447 | + <property name="styleSheet"> | ||
448 | + <string notr="true">QPushButton { background-image: url(:/images/main_button/custom.png); } | ||
449 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/custom_ov.png); } | ||
450 | +QPushButton:disabled { background-image: url(:/images/main_button/custom_hide.png); }</string> | ||
451 | + </property> | ||
452 | + <property name="text"> | ||
453 | + <string>프로그래밍모드</string> | ||
454 | + </property> | ||
455 | + <property name="style" stdset="0"> | ||
456 | + <string>function</string> | ||
457 | + </property> | ||
458 | + </widget> | ||
459 | + <widget class="QPushButton" name="steamButton"> | ||
460 | + <property name="enabled"> | ||
461 | + <bool>false</bool> | ||
462 | + </property> | ||
463 | + <property name="geometry"> | ||
464 | + <rect> | ||
465 | + <x>0</x> | ||
466 | + <y>426</y> | ||
467 | + <width>300</width> | ||
468 | + <height>293</height> | ||
469 | + </rect> | ||
470 | + </property> | ||
471 | + <property name="styleSheet"> | ||
472 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_steam.png); } | ||
473 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_mode/big_steam_ov.png); } | ||
474 | +QPushButton:disabled { background-image: url(:/images/cook_mode/big_steam_hide.png); }</string> | ||
475 | + </property> | ||
476 | + <property name="text"> | ||
477 | + <string>스팀</string> | ||
478 | + </property> | ||
479 | + <property name="style" stdset="0"> | ||
480 | + <string>mode</string> | ||
481 | + </property> | ||
482 | + </widget> | ||
483 | + <widget class="Line" name="line"> | ||
484 | + <property name="geometry"> | ||
485 | + <rect> | ||
486 | + <x>225</x> | ||
487 | + <y>771</y> | ||
488 | + <width>1</width> | ||
489 | + <height>120</height> | ||
490 | + </rect> | ||
491 | + </property> | ||
492 | + <property name="orientation"> | ||
493 | + <enum>Qt::Vertical</enum> | ||
494 | + </property> | ||
495 | + </widget> | ||
496 | + <widget class="Line" name="line_5"> | ||
497 | + <property name="geometry"> | ||
498 | + <rect> | ||
499 | + <x>450</x> | ||
500 | + <y>993</y> | ||
501 | + <width>1</width> | ||
502 | + <height>120</height> | ||
503 | + </rect> | ||
504 | + </property> | ||
505 | + <property name="orientation"> | ||
506 | + <enum>Qt::Vertical</enum> | ||
507 | + </property> | ||
508 | + </widget> | ||
509 | + <widget class="Line" name="line_2"> | ||
510 | + <property name="geometry"> | ||
511 | + <rect> | ||
512 | + <x>450</x> | ||
513 | + <y>771</y> | ||
514 | + <width>1</width> | ||
515 | + <height>120</height> | ||
516 | + </rect> | ||
517 | + </property> | ||
518 | + <property name="orientation"> | ||
519 | + <enum>Qt::Vertical</enum> | ||
520 | + </property> | ||
521 | + </widget> | ||
522 | + <widget class="QPushButton" name="poultryButton"> | ||
523 | + <property name="enabled"> | ||
524 | + <bool>false</bool> | ||
525 | + </property> | ||
526 | + <property name="geometry"> | ||
527 | + <rect> | ||
528 | + <x>0</x> | ||
529 | + <y>720</y> | ||
530 | + <width>225</width> | ||
531 | + <height>222</height> | ||
532 | + </rect> | ||
533 | + </property> | ||
534 | + <property name="sizePolicy"> | ||
535 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
536 | + <horstretch>0</horstretch> | ||
537 | + <verstretch>0</verstretch> | ||
538 | + </sizepolicy> | ||
539 | + </property> | ||
540 | + <property name="styleSheet"> | ||
541 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/poultry.png); } | ||
542 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/poultry_ov.png); } | ||
543 | +QPushButton:disabled { background-image: url(:/images/cook_type/poultry_hide.png); }</string> | ||
544 | + </property> | ||
545 | + <property name="text"> | ||
546 | + <string>가금류</string> | ||
547 | + </property> | ||
548 | + <property name="style" stdset="0"> | ||
549 | + <string>type</string> | ||
550 | + </property> | ||
551 | + </widget> | ||
552 | + <widget class="QPushButton" name="combiButton"> | ||
553 | + <property name="enabled"> | ||
554 | + <bool>false</bool> | ||
555 | + </property> | ||
556 | + <property name="geometry"> | ||
557 | + <rect> | ||
558 | + <x>300</x> | ||
559 | + <y>426</y> | ||
560 | + <width>300</width> | ||
561 | + <height>293</height> | ||
562 | + </rect> | ||
563 | + </property> | ||
564 | + <property name="styleSheet"> | ||
565 | + <string notr="true">QPushButton { background-image: url(:/images/cook_mode/big_combi.png); } | ||
566 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_mode/big_combi_ov.png); } | ||
567 | +QPushButton:disabled { background-image: url(:/images/cook_mode/big_combi_hide.png); }</string> | ||
568 | + </property> | ||
569 | + <property name="text"> | ||
570 | + <string>콤비</string> | ||
571 | + </property> | ||
572 | + <property name="style" stdset="0"> | ||
573 | + <string>mode</string> | ||
574 | + </property> | ||
575 | + </widget> | ||
576 | + <widget class="QPushButton" name="primeButton"> | ||
577 | + <property name="enabled"> | ||
578 | + <bool>false</bool> | ||
579 | + </property> | ||
580 | + <property name="geometry"> | ||
581 | + <rect> | ||
582 | + <x>675</x> | ||
583 | + <y>942</y> | ||
584 | + <width>225</width> | ||
585 | + <height>222</height> | ||
586 | + </rect> | ||
587 | + </property> | ||
588 | + <property name="sizePolicy"> | ||
589 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
590 | + <horstretch>0</horstretch> | ||
591 | + <verstretch>0</verstretch> | ||
592 | + </sizepolicy> | ||
593 | + </property> | ||
594 | + <property name="styleSheet"> | ||
595 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/additional.png); } | ||
596 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/additional_ov.png); } | ||
597 | +QPushButton:disabled { background-image: url(:/images/cook_type/additional_hide.png); }</string> | ||
598 | + </property> | ||
599 | + <property name="text"> | ||
600 | + <string>부가기능</string> | ||
601 | + </property> | ||
602 | + <property name="style" stdset="0"> | ||
603 | + <string>type</string> | ||
604 | + </property> | ||
605 | + </widget> | ||
606 | + <widget class="QWidget" name="clockContainer" native="true"> | ||
607 | + <property name="geometry"> | ||
608 | + <rect> | ||
609 | + <x>0</x> | ||
610 | + <y>0</y> | ||
611 | + <width>900</width> | ||
612 | + <height>426</height> | ||
613 | + </rect> | ||
614 | + </property> | ||
615 | + <property name="styleSheet"> | ||
616 | + <string notr="true">#clockContainer { background-image: url(:/images/clock/background.png); }</string> | ||
617 | + </property> | ||
618 | + <widget class="Clock" name="clock" native="true"> | ||
619 | + <property name="geometry"> | ||
620 | + <rect> | ||
621 | + <x>272</x> | ||
622 | + <y>36</y> | ||
623 | + <width>356</width> | ||
624 | + <height>355</height> | ||
625 | + </rect> | ||
626 | + </property> | ||
627 | + </widget> | ||
628 | + <widget class="WashWarnIcon" name="label"> | ||
629 | + <property name="geometry"> | ||
630 | + <rect> | ||
631 | + <x>800</x> | ||
632 | + <y>320</y> | ||
633 | + <width>80</width> | ||
634 | + <height>84</height> | ||
635 | + </rect> | ||
636 | + </property> | ||
637 | + </widget> | ||
638 | + </widget> | ||
639 | + <widget class="QPushButton" name="breadButton"> | ||
640 | + <property name="enabled"> | ||
641 | + <bool>false</bool> | ||
642 | + </property> | ||
643 | + <property name="geometry"> | ||
644 | + <rect> | ||
645 | + <x>225</x> | ||
646 | + <y>942</y> | ||
647 | + <width>225</width> | ||
648 | + <height>222</height> | ||
649 | + </rect> | ||
650 | + </property> | ||
651 | + <property name="sizePolicy"> | ||
652 | + <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> | ||
653 | + <horstretch>0</horstretch> | ||
654 | + <verstretch>0</verstretch> | ||
655 | + </sizepolicy> | ||
656 | + </property> | ||
657 | + <property name="styleSheet"> | ||
658 | + <string notr="true">QPushButton { background-image: url(:/images/cook_type/bread.png); } | ||
659 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/cook_type/bread_ov.png); } | ||
660 | +QPushButton:disabled { background-image: url(:/images/cook_type/bread_hide.png); }</string> | ||
661 | + </property> | ||
662 | + <property name="text"> | ||
663 | + <string>제과제빵류</string> | ||
664 | + </property> | ||
665 | + <property name="style" stdset="0"> | ||
666 | + <string>type</string> | ||
667 | + </property> | ||
668 | + </widget> | ||
669 | + </widget> | ||
21 | </widget> | 670 | </widget> |
22 | - <pixmapfunction/> | 671 | + <customwidgets> |
672 | + <customwidget> | ||
673 | + <class>Clock</class> | ||
674 | + <extends>QWidget</extends> | ||
675 | + <header>clock.h</header> | ||
676 | + <container>1</container> | ||
677 | + </customwidget> | ||
678 | + <customwidget> | ||
679 | + <class>WashWarnIcon</class> | ||
680 | + <extends>QLabel</extends> | ||
681 | + <header>washwarnicon.h</header> | ||
682 | + </customwidget> | ||
683 | + </customwidgets> | ||
684 | + <tabstops> | ||
685 | + <tabstop>steamButton</tabstop> | ||
686 | + <tabstop>combiButton</tabstop> | ||
687 | + <tabstop>dryheatButton</tabstop> | ||
688 | + <tabstop>poultryButton</tabstop> | ||
689 | + <tabstop>meatButton</tabstop> | ||
690 | + <tabstop>fishButton</tabstop> | ||
691 | + <tabstop>dessertButton</tabstop> | ||
692 | + <tabstop>grainButton</tabstop> | ||
693 | + <tabstop>breadButton</tabstop> | ||
694 | + <tabstop>etcButton</tabstop> | ||
695 | + <tabstop>primeButton</tabstop> | ||
696 | + <tabstop>multiButton</tabstop> | ||
697 | + <tabstop>programmingButton</tabstop> | ||
698 | + <tabstop>washButton</tabstop> | ||
699 | + <tabstop>configButton</tabstop> | ||
700 | + <tabstop>helpButton</tabstop> | ||
701 | + </tabstops> | ||
702 | + <resources/> | ||
23 | <connections/> | 703 | <connections/> |
24 | </ui> | 704 | </ui> |
app/gui/oven_control/programmingwindow.cpp
1 | #include "programmingwindow.h" | 1 | #include "programmingwindow.h" |
2 | #include "ui_programmingwindow.h" | 2 | #include "ui_programmingwindow.h" |
3 | 3 | ||
4 | +#include <QPainter> | ||
5 | +#include <QtDebug> | ||
6 | + | ||
7 | +#include "programmingmanualwindow.h" | ||
8 | +#include "programmingselectionwindow.h" | ||
9 | +#include "cookprogram.h" | ||
10 | + | ||
4 | ProgrammingWindow::ProgrammingWindow(QWidget *parent) : | 11 | ProgrammingWindow::ProgrammingWindow(QWidget *parent) : |
5 | QMainWindow(parent), | 12 | QMainWindow(parent), |
6 | ui(new Ui::ProgrammingWindow) | 13 | ui(new Ui::ProgrammingWindow) |
@@ -9,6 +16,8 @@ ProgrammingWindow::ProgrammingWindow(QWidget *parent) : | @@ -9,6 +16,8 @@ ProgrammingWindow::ProgrammingWindow(QWidget *parent) : | ||
9 | 16 | ||
10 | ui->clockContainer->setParent(ui->upperStack); | 17 | ui->clockContainer->setParent(ui->upperStack); |
11 | setAttribute(Qt::WA_DeleteOnClose); | 18 | setAttribute(Qt::WA_DeleteOnClose); |
19 | + | ||
20 | + setupUi(); | ||
12 | } | 21 | } |
13 | 22 | ||
14 | ProgrammingWindow::~ProgrammingWindow() | 23 | ProgrammingWindow::~ProgrammingWindow() |
@@ -16,7 +25,186 @@ ProgrammingWindow::~ProgrammingWindow() | @@ -16,7 +25,186 @@ ProgrammingWindow::~ProgrammingWindow() | ||
16 | delete ui; | 25 | delete ui; |
17 | } | 26 | } |
18 | 27 | ||
28 | +void ProgrammingWindow::listAuto() | ||
29 | +{ | ||
30 | + if (!ui->autoButton->isChecked()) | ||
31 | + { | ||
32 | + ui->autoButton->blockSignals(true); | ||
33 | + ui->autoButton->setChecked(true); | ||
34 | + ui->autoButton->blockSignals(false); | ||
35 | + } | ||
36 | + | ||
37 | + listButtons(CookProgram::listAuto()); | ||
38 | +} | ||
39 | + | ||
40 | +void ProgrammingWindow::listManual() | ||
41 | +{ | ||
42 | + if (!ui->manualButton->isChecked()) | ||
43 | + { | ||
44 | + ui->manualButton->blockSignals(true); | ||
45 | + ui->manualButton->setChecked(true); | ||
46 | + ui->manualButton->blockSignals(false); | ||
47 | + } | ||
48 | + | ||
49 | + listButtons(CookProgram::listManual()); | ||
50 | +} | ||
51 | + | ||
52 | +void ProgrammingWindow::setupUi() | ||
53 | +{ | ||
54 | + ui->verticalScrollLayout->setAlignment(Qt::AlignTop); | ||
55 | + | ||
56 | + QFont font = ui->addButton->font(); | ||
57 | + font.setPixelSize(30); | ||
58 | + | ||
59 | + int textWidth = QFontMetrics(font).width(tr("추가하기")); | ||
60 | + | ||
61 | + QPixmap iconPix(":/images/etc/bar_icon_03.png"); | ||
62 | + | ||
63 | + QPixmap pixmap(QSize(iconPix.width() + 20 + textWidth, ui->addButton->height())); | ||
64 | + pixmap.fill(Qt::transparent); | ||
65 | + | ||
66 | + QRect textRect(iconPix.width() + 20, 0, textWidth, pixmap.height()); | ||
67 | + | ||
68 | + QPainter painter(&pixmap); | ||
69 | + painter.setFont(font); | ||
70 | + painter.setPen(Qt::white); | ||
71 | + painter.drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, tr("추가하기")); | ||
72 | + painter.drawPixmap(0, (pixmap.height() - iconPix.height()) / 2, iconPix); | ||
73 | + | ||
74 | + QIcon icon(pixmap); | ||
75 | + ui->addButton->setIcon(icon); | ||
76 | + ui->addButton->setIconSize(pixmap.size()); | ||
77 | + ui->addButton->hide(); | ||
78 | +} | ||
79 | + | ||
80 | +void ProgrammingWindow::updateView() | ||
81 | +{ | ||
82 | + if (ui->autoButton->isChecked()) | ||
83 | + listAuto(); | ||
84 | + else if (ui->manualButton->isChecked()) | ||
85 | + listManual(); | ||
86 | +} | ||
87 | + | ||
88 | +void ProgrammingWindow::listButtons(QList<CookRecord> record) | ||
89 | +{ | ||
90 | + clear(); | ||
91 | + | ||
92 | + ui->addButton->show(); | ||
93 | + | ||
94 | + foreach (CookRecord r, record) | ||
95 | + newButton(r); | ||
96 | + | ||
97 | + ui->scrollAreaWidgetContents->adjustSize(); | ||
98 | +} | ||
99 | + | ||
100 | +void ProgrammingWindow::clear() | ||
101 | +{ | ||
102 | + lastInfoDisplayed = NULL; | ||
103 | + while (!list.isEmpty()) | ||
104 | + list.takeFirst()->deleteLater(); | ||
105 | +} | ||
106 | + | ||
107 | +CookPanelButton *ProgrammingWindow::newButton(CookRecord record) | ||
108 | +{ | ||
109 | + CookPanelButton *button = new CookPanelButton(record, this); | ||
110 | + connect(button, SIGNAL(infoClicked(CookPanelButton*)), SLOT(onInfoButtonClicked(CookPanelButton*))); | ||
111 | + connect(button, SIGNAL(deleteClicked(CookPanelButton*)), SLOT(onDeleteButtonClicked(CookPanelButton*))); | ||
112 | + | ||
113 | + ui->verticalScrollLayout->addWidget(button); | ||
114 | + list.append(button); | ||
115 | + | ||
116 | + return button; | ||
117 | +} | ||
118 | + | ||
119 | +void ProgrammingWindow::onInfoButtonClicked(CookPanelButton *panelButton) | ||
120 | +{ | ||
121 | + if (lastInfoDisplayed) | ||
122 | + { | ||
123 | + if (panelButton == lastInfoDisplayed) | ||
124 | + { | ||
125 | + lastInfoDisplayed->hideInfo(); | ||
126 | + lastInfoDisplayed = NULL; | ||
127 | + | ||
128 | + ui->scrollAreaWidgetContents->adjustSize(); | ||
129 | + } | ||
130 | + else | ||
131 | + { | ||
132 | + lastInfoDisplayed->hideInfo(); | ||
133 | + lastInfoDisplayed = panelButton; | ||
134 | + lastInfoDisplayed->showInfo(); | ||
135 | + | ||
136 | + ui->scrollAreaWidgetContents->adjustSize(); | ||
137 | + ui->scrollArea->ensureWidgetVisible(lastInfoDisplayed); | ||
138 | + } | ||
139 | + } | ||
140 | + else | ||
141 | + { | ||
142 | + lastInfoDisplayed = panelButton; | ||
143 | + lastInfoDisplayed->showInfo(); | ||
144 | + | ||
145 | + ui->scrollAreaWidgetContents->adjustSize(); | ||
146 | + ui->scrollArea->ensureWidgetVisible(lastInfoDisplayed); | ||
147 | + } | ||
148 | +} | ||
149 | + | ||
150 | +void ProgrammingWindow::onDeleteButtonClicked(CookPanelButton *panelButton) | ||
151 | +{ | ||
152 | + if (panelButton == lastInfoDisplayed) | ||
153 | + lastInfoDisplayed = NULL; | ||
154 | + | ||
155 | + CookProgram::remove(panelButton->record); | ||
156 | + | ||
157 | + list.removeAll(panelButton); | ||
158 | + panelButton->deleteLater(); | ||
159 | +} | ||
160 | + | ||
161 | +void ProgrammingWindow::on_addButton_clicked() | ||
162 | +{ | ||
163 | + ProgrammingSelectionWindow *w = new ProgrammingSelectionWindow(this); | ||
164 | + | ||
165 | + if (ui->autoButton->isChecked()) | ||
166 | + w->setCookTypeEnabled(true); | ||
167 | + else if (ui->manualButton->isChecked()) | ||
168 | + w->setModeEnabled(true); | ||
169 | + | ||
170 | + w->setWindowModality(Qt::WindowModal); | ||
171 | + w->showFullScreen(); | ||
172 | + w->raise(); | ||
173 | + | ||
174 | + connect(w, SIGNAL(added()), SLOT(updateView())); | ||
175 | +} | ||
176 | + | ||
177 | +void ProgrammingWindow::on_autoButton_toggled(bool checked) | ||
178 | +{ | ||
179 | + if (!checked) | ||
180 | + return; | ||
181 | + | ||
182 | + listAuto(); | ||
183 | +} | ||
184 | + | ||
185 | +void ProgrammingWindow::on_manualButton_toggled(bool checked) | ||
186 | +{ | ||
187 | + if (!checked) | ||
188 | + return; | ||
189 | + | ||
190 | + listManual(); | ||
191 | +} | ||
192 | + | ||
19 | void ProgrammingWindow::on_backButton_clicked() | 193 | void ProgrammingWindow::on_backButton_clicked() |
20 | { | 194 | { |
195 | + CookProgram::discard(); | ||
196 | + | ||
197 | + close(); | ||
198 | +} | ||
199 | + | ||
200 | +void ProgrammingWindow::on_saveButton_clicked() | ||
201 | +{ | ||
202 | + CookProgram::save(); | ||
203 | + | ||
21 | close(); | 204 | close(); |
22 | } | 205 | } |
206 | + | ||
207 | +void ProgrammingWindow::on_helpButton_clicked() | ||
208 | +{ | ||
209 | + | ||
210 | +} |
app/gui/oven_control/programmingwindow.h
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | 3 | ||
4 | #include <QMainWindow> | 4 | #include <QMainWindow> |
5 | 5 | ||
6 | +#include "cookpanelbutton.h" | ||
7 | + | ||
6 | namespace Ui { | 8 | namespace Ui { |
7 | class ProgrammingWindow; | 9 | class ProgrammingWindow; |
8 | } | 10 | } |
@@ -15,11 +17,34 @@ public: | @@ -15,11 +17,34 @@ public: | ||
15 | explicit ProgrammingWindow(QWidget *parent = 0); | 17 | explicit ProgrammingWindow(QWidget *parent = 0); |
16 | ~ProgrammingWindow(); | 18 | ~ProgrammingWindow(); |
17 | 19 | ||
20 | + void listAuto(); | ||
21 | + void listManual(); | ||
22 | + | ||
18 | private slots: | 23 | private slots: |
24 | + void setupUi(); | ||
25 | + void updateView(); | ||
26 | + | ||
27 | + void listButtons(QList<CookRecord> record); | ||
28 | + void clear(); | ||
29 | + CookPanelButton *newButton(CookRecord record); | ||
30 | + | ||
31 | + void onInfoButtonClicked(CookPanelButton *panelButton); | ||
32 | + void onDeleteButtonClicked(CookPanelButton *panelButton); | ||
33 | + | ||
34 | + void on_addButton_clicked(); | ||
35 | + | ||
36 | + void on_autoButton_toggled(bool checked); | ||
37 | + void on_manualButton_toggled(bool checked); | ||
38 | + | ||
19 | void on_backButton_clicked(); | 39 | void on_backButton_clicked(); |
40 | + void on_saveButton_clicked(); | ||
41 | + void on_helpButton_clicked(); | ||
20 | 42 | ||
21 | private: | 43 | private: |
22 | Ui::ProgrammingWindow *ui; | 44 | Ui::ProgrammingWindow *ui; |
45 | + | ||
46 | + QList<CookPanelButton *> list; | ||
47 | + CookPanelButton *lastInfoDisplayed; | ||
23 | }; | 48 | }; |
24 | 49 | ||
25 | #endif // PROGRAMMINGWINDOW_H | 50 | #endif // PROGRAMMINGWINDOW_H |
app/gui/oven_control/programmingwindow.ui
@@ -16,11 +16,16 @@ | @@ -16,11 +16,16 @@ | ||
16 | <property name="styleSheet"> | 16 | <property name="styleSheet"> |
17 | <string notr="true">#centralwidget { background-image: url(:/images/background/etc.png); } | 17 | <string notr="true">#centralwidget { background-image: url(:/images/background/etc.png); } |
18 | #bottomBar { background-image: url(:/images/bottom_bar/background.png); } | 18 | #bottomBar { background-image: url(:/images/bottom_bar/background.png); } |
19 | +QScrollArea { background: transparent; } | ||
20 | +QScrollArea > QWidget > QWidget { background: transparent; } | ||
19 | 21 | ||
20 | - | ||
21 | -QPushButton[style="mode"] { | 22 | +QPushButton { |
22 | background-repeat: no-repeat; | 23 | background-repeat: no-repeat; |
23 | background-position: center; | 24 | background-position: center; |
25 | +border: none; | ||
26 | +color: white; | ||
27 | +} | ||
28 | +QPushButton[style="mode"] { | ||
24 | background-clip: border; | 29 | background-clip: border; |
25 | background-origin: border; | 30 | background-origin: border; |
26 | margin-bottom: 50px; | 31 | margin-bottom: 50px; |
@@ -28,13 +33,35 @@ margin-bottom: 50px; | @@ -28,13 +33,35 @@ margin-bottom: 50px; | ||
28 | border-top: 130px; | 33 | border-top: 130px; |
29 | border-bottom: -50px; | 34 | border-bottom: -50px; |
30 | border-style: hidden; | 35 | border-style: hidden; |
31 | -color: white; | ||
32 | font-size: 30px; | 36 | font-size: 30px; |
33 | } | 37 | } |
34 | 38 | ||
35 | QPushButton[style="mode"]:checked { | 39 | QPushButton[style="mode"]:checked { |
36 | image: url(:/images/cook_mode/indicator.png); | 40 | image: url(:/images/cook_mode/indicator.png); |
37 | image-position: bottom; | 41 | image-position: bottom; |
42 | +} | ||
43 | + | ||
44 | +QScrollBar:vertical { | ||
45 | +border: none; | ||
46 | +background: transparent; | ||
47 | +width: 35px; | ||
48 | +margin: 30px 15px 30px 0px; | ||
49 | +} | ||
50 | +QScrollBar::handle:vertical { | ||
51 | +background: #B7B7B7; | ||
52 | +border-radius: 10px; | ||
53 | +min-height: 100px; | ||
54 | +} | ||
55 | +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { | ||
56 | +border: none; | ||
57 | +background: none; | ||
58 | +height: 0px; | ||
59 | +} | ||
60 | +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { | ||
61 | +border: none; | ||
62 | +} | ||
63 | +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { | ||
64 | +background: none; | ||
38 | }</string> | 65 | }</string> |
39 | </property> | 66 | </property> |
40 | <widget class="QWidget" name="centralwidget"> | 67 | <widget class="QWidget" name="centralwidget"> |
@@ -100,7 +127,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</str | @@ -100,7 +127,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</str | ||
100 | <string/> | 127 | <string/> |
101 | </property> | 128 | </property> |
102 | </widget> | 129 | </widget> |
103 | - <widget class="QPushButton" name="washButton"> | 130 | + <widget class="QPushButton" name="saveButton"> |
104 | <property name="geometry"> | 131 | <property name="geometry"> |
105 | <rect> | 132 | <rect> |
106 | <x>402</x> | 133 | <x>402</x> |
@@ -146,7 +173,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</str | @@ -146,7 +173,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</str | ||
146 | </property> | 173 | </property> |
147 | <layout class="QHBoxLayout" name="horizontalLayout"> | 174 | <layout class="QHBoxLayout" name="horizontalLayout"> |
148 | <item> | 175 | <item> |
149 | - <widget class="QPushButton" name="steamButton"> | 176 | + <widget class="QPushButton" name="autoButton"> |
150 | <property name="sizePolicy"> | 177 | <property name="sizePolicy"> |
151 | <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> | 178 | <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> |
152 | <horstretch>0</horstretch> | 179 | <horstretch>0</horstretch> |
@@ -172,7 +199,7 @@ QPushButton:pressed { background-image: url(:/images/etc/main_btn_01_ov.png); }< | @@ -172,7 +199,7 @@ QPushButton:pressed { background-image: url(:/images/etc/main_btn_01_ov.png); }< | ||
172 | </widget> | 199 | </widget> |
173 | </item> | 200 | </item> |
174 | <item> | 201 | <item> |
175 | - <widget class="QPushButton" name="steamButton_2"> | 202 | + <widget class="QPushButton" name="manualButton"> |
176 | <property name="sizePolicy"> | 203 | <property name="sizePolicy"> |
177 | <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> | 204 | <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> |
178 | <horstretch>0</horstretch> | 205 | <horstretch>0</horstretch> |
@@ -199,6 +226,63 @@ QPushButton:pressed { background-image: url(:/images/etc/main_btn_02_ov.png); }< | @@ -199,6 +226,63 @@ QPushButton:pressed { background-image: url(:/images/etc/main_btn_02_ov.png); }< | ||
199 | </item> | 226 | </item> |
200 | </layout> | 227 | </layout> |
201 | </widget> | 228 | </widget> |
229 | + <widget class="QScrollArea" name="scrollArea"> | ||
230 | + <property name="geometry"> | ||
231 | + <rect> | ||
232 | + <x>0</x> | ||
233 | + <y>647</y> | ||
234 | + <width>900</width> | ||
235 | + <height>803</height> | ||
236 | + </rect> | ||
237 | + </property> | ||
238 | + <property name="widgetResizable"> | ||
239 | + <bool>true</bool> | ||
240 | + </property> | ||
241 | + <widget class="QWidget" name="scrollAreaWidgetContents"> | ||
242 | + <property name="geometry"> | ||
243 | + <rect> | ||
244 | + <x>0</x> | ||
245 | + <y>0</y> | ||
246 | + <width>898</width> | ||
247 | + <height>801</height> | ||
248 | + </rect> | ||
249 | + </property> | ||
250 | + <layout class="QVBoxLayout" name="verticalScrollLayout"> | ||
251 | + <property name="spacing"> | ||
252 | + <number>10</number> | ||
253 | + </property> | ||
254 | + <property name="leftMargin"> | ||
255 | + <number>20</number> | ||
256 | + </property> | ||
257 | + <property name="topMargin"> | ||
258 | + <number>28</number> | ||
259 | + </property> | ||
260 | + <property name="bottomMargin"> | ||
261 | + <number>28</number> | ||
262 | + </property> | ||
263 | + <item> | ||
264 | + <widget class="QPushButton" name="addButton"> | ||
265 | + <property name="sizePolicy"> | ||
266 | + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> | ||
267 | + <horstretch>0</horstretch> | ||
268 | + <verstretch>0</verstretch> | ||
269 | + </sizepolicy> | ||
270 | + </property> | ||
271 | + <property name="minimumSize"> | ||
272 | + <size> | ||
273 | + <width>821</width> | ||
274 | + <height>65</height> | ||
275 | + </size> | ||
276 | + </property> | ||
277 | + <property name="styleSheet"> | ||
278 | + <string notr="true">QPushButton { background-image: url(:/images/etc/bar_01.png); } | ||
279 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/etc/bar_02.png); }</string> | ||
280 | + </property> | ||
281 | + </widget> | ||
282 | + </item> | ||
283 | + </layout> | ||
284 | + </widget> | ||
285 | + </widget> | ||
202 | </widget> | 286 | </widget> |
203 | </widget> | 287 | </widget> |
204 | <customwidgets> | 288 | <customwidgets> |