Commit a2de3cbfc9877b689d067ec74c67d58e1895294a
1 parent
39aeb7f29f
Exists in
master
and in
2 other branches
수동 요리에 새 슬라이더 적용
Showing
10 changed files
with
250 additions
and
193 deletions
Show diff stats
app/gui/oven_control/cooldownpopup.cpp
@@ -28,6 +28,9 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : | @@ -28,6 +28,9 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : | ||
28 | ui->openDoorAnimation->load(":/images/animation/door_big_09.png"); | 28 | ui->openDoorAnimation->load(":/images/animation/door_big_09.png"); |
29 | ui->openDoorAnimation->start(300); | 29 | ui->openDoorAnimation->start(300); |
30 | 30 | ||
31 | + ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png"); | ||
32 | + ui->tempSlider->setRange(30, 300); | ||
33 | + | ||
31 | cookingFanLevel = oven->fan(); | 34 | cookingFanLevel = oven->fan(); |
32 | expectingFanLevel = oven->maxFan(); | 35 | expectingFanLevel = oven->maxFan(); |
33 | started = false; | 36 | started = false; |
@@ -46,7 +49,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : | @@ -46,7 +49,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : | ||
46 | checkOvenTimer.setInterval(100); | 49 | checkOvenTimer.setInterval(100); |
47 | connect(&checkOvenTimer, SIGNAL(timeout()), SLOT(checkOven())); | 50 | connect(&checkOvenTimer, SIGNAL(timeout()), SLOT(checkOven())); |
48 | 51 | ||
49 | - connect(ui->tempSlider, SIGNAL(valueChanged(int)), SLOT(updateView())); | 52 | + connect(ui->tempSlider, SIGNAL(sliderMoved(int)), SLOT(updateView())); |
50 | 53 | ||
51 | updateView(); | 54 | updateView(); |
52 | 55 | ||
@@ -92,6 +95,8 @@ void CooldownPopup::updateView() | @@ -92,6 +95,8 @@ void CooldownPopup::updateView() | ||
92 | int temp; | 95 | int temp; |
93 | if (showingCurrentTemp) | 96 | if (showingCurrentTemp) |
94 | temp = oven->currentTemp(); | 97 | temp = oven->currentTemp(); |
98 | + else if (ui->tempSlider->isSliderDown()) | ||
99 | + temp = ui->tempSlider->sliderPosition(); | ||
95 | else | 100 | else |
96 | temp = ui->tempSlider->value(); | 101 | temp = ui->tempSlider->value(); |
97 | 102 |
app/gui/oven_control/cooldownpopup.ui
@@ -279,34 +279,6 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | @@ -279,34 +279,6 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | ||
279 | <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> | 279 | <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> |
280 | </property> | 280 | </property> |
281 | </widget> | 281 | </widget> |
282 | - <widget class="QSlider" name="tempSlider"> | ||
283 | - <property name="geometry"> | ||
284 | - <rect> | ||
285 | - <x>196</x> | ||
286 | - <y>103</y> | ||
287 | - <width>666</width> | ||
288 | - <height>33</height> | ||
289 | - </rect> | ||
290 | - </property> | ||
291 | - <property name="minimum"> | ||
292 | - <number>30</number> | ||
293 | - </property> | ||
294 | - <property name="maximum"> | ||
295 | - <number>300</number> | ||
296 | - </property> | ||
297 | - <property name="pageStep"> | ||
298 | - <number>10</number> | ||
299 | - </property> | ||
300 | - <property name="tracking"> | ||
301 | - <bool>true</bool> | ||
302 | - </property> | ||
303 | - <property name="orientation"> | ||
304 | - <enum>Qt::Horizontal</enum> | ||
305 | - </property> | ||
306 | - <property name="sliderColor" stdset="0"> | ||
307 | - <string>red</string> | ||
308 | - </property> | ||
309 | - </widget> | ||
310 | <widget class="QLabel" name="tempCurrentLabel"> | 282 | <widget class="QLabel" name="tempCurrentLabel"> |
311 | <property name="enabled"> | 283 | <property name="enabled"> |
312 | <bool>true</bool> | 284 | <bool>true</bool> |
@@ -371,6 +343,16 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | @@ -371,6 +343,16 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | ||
371 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | 343 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
372 | </property> | 344 | </property> |
373 | </widget> | 345 | </widget> |
346 | + <widget class="Slider" name="tempSlider" native="true"> | ||
347 | + <property name="geometry"> | ||
348 | + <rect> | ||
349 | + <x>196</x> | ||
350 | + <y>50</y> | ||
351 | + <width>666</width> | ||
352 | + <height>140</height> | ||
353 | + </rect> | ||
354 | + </property> | ||
355 | + </widget> | ||
374 | </widget> | 356 | </widget> |
375 | <widget class="QPushButton" name="closeButton"> | 357 | <widget class="QPushButton" name="closeButton"> |
376 | <property name="geometry"> | 358 | <property name="geometry"> |
@@ -434,6 +416,12 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | @@ -434,6 +416,12 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png | ||
434 | <extends>QLabel</extends> | 416 | <extends>QLabel</extends> |
435 | <header>animatedimagebox.h</header> | 417 | <header>animatedimagebox.h</header> |
436 | </customwidget> | 418 | </customwidget> |
419 | + <customwidget> | ||
420 | + <class>Slider</class> | ||
421 | + <extends>QWidget</extends> | ||
422 | + <header>slider.h</header> | ||
423 | + <container>1</container> | ||
424 | + </customwidget> | ||
437 | </customwidgets> | 425 | </customwidgets> |
438 | <resources> | 426 | <resources> |
439 | <include location="resources.qrc"/> | 427 | <include location="resources.qrc"/> |
app/gui/oven_control/coretempsettingpopup.cpp
@@ -39,7 +39,20 @@ CoreTempSettingPopup::CoreTempSettingPopup(QWidget *parent) : | @@ -39,7 +39,20 @@ CoreTempSettingPopup::CoreTempSettingPopup(QWidget *parent) : | ||
39 | oven = Oven::getInstance(); | 39 | oven = Oven::getInstance(); |
40 | connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView())); | 40 | connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView())); |
41 | 41 | ||
42 | + ui->coreTempSlider->setSubPixmap(":/images/slider/core.png"); | ||
42 | ui->coreTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); | 43 | ui->coreTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); |
44 | + | ||
45 | + QList<int> &bigTicks = ui->coreTempSlider->bigTicks; | ||
46 | + bigTicks.append(oven->minInterTemp()); | ||
47 | + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2); | ||
48 | + bigTicks.append(oven->maxInterTemp()); | ||
49 | + | ||
50 | + QList<int> &ticks = ui->coreTempSlider->ticks; | ||
51 | + for (int i = 1; i < 3; i++) | ||
52 | + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3); | ||
53 | + for (int i = 1; i < 3; i++) | ||
54 | + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3); | ||
55 | + | ||
43 | ui->coreTempSlider->setValue(oven->interTemp()); | 56 | ui->coreTempSlider->setValue(oven->interTemp()); |
44 | 57 | ||
45 | connect(ui->coreTempSlider, SIGNAL(sliderMoved(int)), SLOT(updateView())); | 58 | connect(ui->coreTempSlider, SIGNAL(sliderMoved(int)), SLOT(updateView())); |
app/gui/oven_control/coretempsettingpopup.ui
@@ -507,31 +507,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }</stri | @@ -507,31 +507,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }</stri | ||
507 | <set>Qt::AlignCenter</set> | 507 | <set>Qt::AlignCenter</set> |
508 | </property> | 508 | </property> |
509 | </widget> | 509 | </widget> |
510 | - <widget class="QSlider" name="coreTempSlider"> | ||
511 | - <property name="geometry"> | ||
512 | - <rect> | ||
513 | - <x>185</x> | ||
514 | - <y>1012</y> | ||
515 | - <width>666</width> | ||
516 | - <height>33</height> | ||
517 | - </rect> | ||
518 | - </property> | ||
519 | - <property name="styleSheet"> | ||
520 | - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); }</string> | ||
521 | - </property> | ||
522 | - <property name="maximum"> | ||
523 | - <number>6</number> | ||
524 | - </property> | ||
525 | - <property name="value"> | ||
526 | - <number>0</number> | ||
527 | - </property> | ||
528 | - <property name="tracking"> | ||
529 | - <bool>true</bool> | ||
530 | - </property> | ||
531 | - <property name="orientation"> | ||
532 | - <enum>Qt::Horizontal</enum> | ||
533 | - </property> | ||
534 | - </widget> | ||
535 | <widget class="QLabel" name="curCoreTempLabel"> | 510 | <widget class="QLabel" name="curCoreTempLabel"> |
536 | <property name="enabled"> | 511 | <property name="enabled"> |
537 | <bool>true</bool> | 512 | <bool>true</bool> |
@@ -1020,7 +995,25 @@ QPushButton:pressed { background-image: url(:/images/manual_button/back_ov.png); | @@ -1020,7 +995,25 @@ QPushButton:pressed { background-image: url(:/images/manual_button/back_ov.png); | ||
1020 | <set>Qt::AlignBottom|Qt::AlignHCenter</set> | 995 | <set>Qt::AlignBottom|Qt::AlignHCenter</set> |
1021 | </property> | 996 | </property> |
1022 | </widget> | 997 | </widget> |
998 | + <widget class="Slider" name="coreTempSlider" native="true"> | ||
999 | + <property name="geometry"> | ||
1000 | + <rect> | ||
1001 | + <x>185</x> | ||
1002 | + <y>954</y> | ||
1003 | + <width>666</width> | ||
1004 | + <height>140</height> | ||
1005 | + </rect> | ||
1006 | + </property> | ||
1007 | + </widget> | ||
1023 | </widget> | 1008 | </widget> |
1009 | + <customwidgets> | ||
1010 | + <customwidget> | ||
1011 | + <class>Slider</class> | ||
1012 | + <extends>QWidget</extends> | ||
1013 | + <header>slider.h</header> | ||
1014 | + <container>1</container> | ||
1015 | + </customwidget> | ||
1016 | + </customwidgets> | ||
1024 | <resources> | 1017 | <resources> |
1025 | <include location="resources.qrc"/> | 1018 | <include location="resources.qrc"/> |
1026 | </resources> | 1019 | </resources> |
app/gui/oven_control/main.cpp
@@ -22,6 +22,8 @@ int main(int argc, char *argv[]) | @@ -22,6 +22,8 @@ int main(int argc, char *argv[]) | ||
22 | OvenStatistics::getInstance(oven); | 22 | OvenStatistics::getInstance(oven); |
23 | Config::getInstance(oven); | 23 | Config::getInstance(oven); |
24 | 24 | ||
25 | + oven->setDefault(Define::CombiMode); | ||
26 | + | ||
25 | // QTranslator* trans = new QTranslator(); | 27 | // QTranslator* trans = new QTranslator(); |
26 | // qDebug() << trans->load(":/lang_en.qm"); | 28 | // qDebug() << trans->load(":/lang_en.qm"); |
27 | // QApplication::installTranslator(trans); | 29 | // QApplication::installTranslator(trans); |
app/gui/oven_control/manualcookwindow.cpp
@@ -35,9 +35,44 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | @@ -35,9 +35,44 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | ||
35 | ui->closeDoorWidget->setParent(ui->upperStack); | 35 | ui->closeDoorWidget->setParent(ui->upperStack); |
36 | setAttribute(Qt::WA_DeleteOnClose); | 36 | setAttribute(Qt::WA_DeleteOnClose); |
37 | 37 | ||
38 | - | ||
39 | oven = Oven::getInstance(); | 38 | oven = Oven::getInstance(); |
40 | 39 | ||
40 | + ui->humiditySlider->setSubPixmap(":/images/slider/humidity.png"); | ||
41 | + ui->humiditySlider->setRange(0, 100); | ||
42 | + ui->humiditySlider->bigTickInterval = 50; | ||
43 | + ui->humiditySlider->tickInterval = 10; | ||
44 | + | ||
45 | + ui->tempSlider->setSubPixmap(":/images/slider/temp.png"); | ||
46 | + ui->tempSlider->bigTickInterval = 50; | ||
47 | + ui->tempSlider->tickInterval = 10; | ||
48 | + | ||
49 | + ui->timeSlider->setSubPixmap(":/images/slider/time.png"); | ||
50 | + ui->timeSlider->setRange(0, 342); | ||
51 | + ui->timeSlider->bigTicks.append(0); | ||
52 | + ui->timeSlider->bigTicks.append(180); | ||
53 | + ui->timeSlider->bigTicks.append(270); | ||
54 | + ui->timeSlider->bigTicks.append(342); | ||
55 | + ui->timeSlider->ticks.append(60); | ||
56 | + ui->timeSlider->ticks.append(120); | ||
57 | + ui->timeSlider->ticks.append(180 + 30); | ||
58 | + ui->timeSlider->ticks.append(180 + 60); | ||
59 | + ui->timeSlider->ticks.append(270 + 4 * 6); | ||
60 | + ui->timeSlider->ticks.append(270 + 4 * 12); | ||
61 | + | ||
62 | + ui->interTempSlider->setSubPixmap(":/images/slider/core.png"); | ||
63 | + | ||
64 | + QList<int> &bigTicks = ui->interTempSlider->bigTicks; | ||
65 | + bigTicks.append(oven->minInterTemp()); | ||
66 | + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2); | ||
67 | + bigTicks.append(oven->maxInterTemp()); | ||
68 | + | ||
69 | + QList<int> &ticks = ui->interTempSlider->ticks; | ||
70 | + for (int i = 1; i < 3; i++) | ||
71 | + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3); | ||
72 | + for (int i = 1; i < 3; i++) | ||
73 | + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3); | ||
74 | + | ||
75 | + | ||
41 | lastViewHumidity = -1; | 76 | lastViewHumidity = -1; |
42 | lastViewTemp = -1; | 77 | lastViewTemp = -1; |
43 | lastViewTime = -1; | 78 | lastViewTime = -1; |
@@ -67,11 +102,8 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | @@ -67,11 +102,8 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | ||
67 | else | 102 | else |
68 | monitorLevel = 0; | 103 | monitorLevel = 0; |
69 | 104 | ||
70 | - connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*))); | ||
71 | - | ||
72 | connect(ui->humiditySlider, SIGNAL(valueChanged(int)), oven, SLOT(setHumidity(int))); | 105 | connect(ui->humiditySlider, SIGNAL(valueChanged(int)), oven, SLOT(setHumidity(int))); |
73 | connect(ui->tempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTemp(int))); | 106 | connect(ui->tempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTemp(int))); |
74 | - connect(ui->timeSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTime(int))); | ||
75 | connect(ui->timeSlider, SIGNAL(valueChanged(int)), &startCookingTimer, SLOT(start())); | 107 | connect(ui->timeSlider, SIGNAL(valueChanged(int)), &startCookingTimer, SLOT(start())); |
76 | connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateView())); | 108 | connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateView())); |
77 | connect(ui->interTempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setInterTemp(int))); | 109 | connect(ui->interTempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setInterTemp(int))); |
@@ -93,6 +125,7 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | @@ -93,6 +125,7 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : | ||
93 | showCurrentTempTimer.setInterval(2000); | 125 | showCurrentTempTimer.setInterval(2000); |
94 | connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); | 126 | connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); |
95 | 127 | ||
128 | + connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*))); | ||
96 | oven->setDefault(mode); | 129 | oven->setDefault(mode); |
97 | 130 | ||
98 | connect(&updateViewTimer, SIGNAL(timeout()), SLOT(updateView())); | 131 | connect(&updateViewTimer, SIGNAL(timeout()), SLOT(updateView())); |
@@ -193,18 +226,18 @@ void ManualCookWindow::updateView() | @@ -193,18 +226,18 @@ void ManualCookWindow::updateView() | ||
193 | { | 226 | { |
194 | lastViewTemp = temp; | 227 | lastViewTemp = temp; |
195 | 228 | ||
196 | - bool old = ui->tempSlider->blockSignals(true); | ||
197 | - ui->tempSlider->setRange(oven->minTemp(), oven->maxTemp()); | ||
198 | - if (ui->tempSlider->sliderPosition() != temp) | ||
199 | - ui->tempSlider->setValue(temp); | ||
200 | - ui->tempSlider->blockSignals(old); | ||
201 | - | ||
202 | ui->tempLabel->setText(Stringer::temperature(temp, Stringer::fontSize14)); | 229 | ui->tempLabel->setText(Stringer::temperature(temp, Stringer::fontSize14)); |
203 | } | 230 | } |
204 | 231 | ||
232 | + bool old = ui->tempSlider->blockSignals(true); | ||
233 | + ui->tempSlider->setRange(oven->minTemp(), oven->maxTemp()); | ||
234 | + if (ui->tempSlider->sliderPosition() != temp) | ||
235 | + ui->tempSlider->setValue(temp); | ||
236 | + ui->tempSlider->blockSignals(old); | ||
237 | + | ||
205 | int msecs; | 238 | int msecs; |
206 | if (ui->timeSlider->isSliderDown()) | 239 | if (ui->timeSlider->isSliderDown()) |
207 | - msecs = ui->timeSlider->sliderPosition() * 1000; | 240 | + msecs = sliderToTime(ui->timeSlider->sliderPosition()) * 1000; |
208 | else | 241 | else |
209 | msecs = oven->msecs(); | 242 | msecs = oven->msecs(); |
210 | 243 | ||
@@ -213,7 +246,7 @@ void ManualCookWindow::updateView() | @@ -213,7 +246,7 @@ void ManualCookWindow::updateView() | ||
213 | lastViewTime = msecs; | 246 | lastViewTime = msecs; |
214 | 247 | ||
215 | bool old = ui->timeSlider->blockSignals(true); | 248 | bool old = ui->timeSlider->blockSignals(true); |
216 | - ui->timeSlider->setSliderPosition(msecs / 1000); | 249 | + ui->timeSlider->setSliderPosition(timeToSlider(msecs / 1000)); |
217 | ui->timeSlider->blockSignals(old); | 250 | ui->timeSlider->blockSignals(old); |
218 | 251 | ||
219 | ui->timeLabel->setText(Stringer::remainingTime(msecs, Stringer::fontSize14)); | 252 | ui->timeLabel->setText(Stringer::remainingTime(msecs, Stringer::fontSize14)); |
@@ -254,8 +287,10 @@ QPushButton:pressed {\ | @@ -254,8 +287,10 @@ QPushButton:pressed {\ | ||
254 | 287 | ||
255 | bool old = ui->interTempSlider->blockSignals(true); | 288 | bool old = ui->interTempSlider->blockSignals(true); |
256 | ui->interTempSlider->setEnabled(interTempEnabled); | 289 | ui->interTempSlider->setEnabled(interTempEnabled); |
290 | + ui->interTempSlider->setSubVisible(interTempEnabled); | ||
257 | ui->interTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); | 291 | ui->interTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); |
258 | - ui->interTempSlider->setValue(interTemp); | 292 | + if (ui->interTempSlider->sliderPosition() != interTemp) |
293 | + ui->interTempSlider->setValue(interTemp); | ||
259 | ui->interTempSlider->blockSignals(old); | 294 | ui->interTempSlider->blockSignals(old); |
260 | 295 | ||
261 | if (interTempEnabled) | 296 | if (interTempEnabled) |
@@ -791,3 +826,26 @@ void ManualCookWindow::on_helpButton_clicked() | @@ -791,3 +826,26 @@ void ManualCookWindow::on_helpButton_clicked() | ||
791 | { | 826 | { |
792 | 827 | ||
793 | } | 828 | } |
829 | + | ||
830 | +void ManualCookWindow::on_timeSlider_valueChanged() | ||
831 | +{ | ||
832 | + oven->setTime(sliderToTime(ui->timeSlider->value())); | ||
833 | +} | ||
834 | + | ||
835 | +int ManualCookWindow::sliderToTime(int value) | ||
836 | +{ | ||
837 | + if (value <= 180) | ||
838 | + return value * 60; | ||
839 | + if (value <= 270) | ||
840 | + return 180 * 60 + (value - 180) * 2 * 60; | ||
841 | + return 360 * 60 + (value - 270) * 15 * 60; | ||
842 | +} | ||
843 | + | ||
844 | +int ManualCookWindow::timeToSlider(int secs) | ||
845 | +{ | ||
846 | + if (secs <= 180 * 60) | ||
847 | + return secs / 60; | ||
848 | + if (secs <= 360 * 60) | ||
849 | + return 180 + (secs - 180 * 60) / 2 / 60; | ||
850 | + return 270 + (secs - 360 * 60) / 15 / 60; | ||
851 | +} |
app/gui/oven_control/manualcookwindow.h
@@ -75,6 +75,8 @@ private slots: | @@ -75,6 +75,8 @@ private slots: | ||
75 | void on_washButton_clicked(); | 75 | void on_washButton_clicked(); |
76 | void on_helpButton_clicked(); | 76 | void on_helpButton_clicked(); |
77 | 77 | ||
78 | + void on_timeSlider_valueChanged(); | ||
79 | + | ||
78 | private: | 80 | private: |
79 | Ui::ManualCookWindow *ui; | 81 | Ui::ManualCookWindow *ui; |
80 | Oven *oven; | 82 | Oven *oven; |
@@ -112,6 +114,9 @@ private: | @@ -112,6 +114,9 @@ private: | ||
112 | 114 | ||
113 | ManualCookSetting repeatSetting; | 115 | ManualCookSetting repeatSetting; |
114 | bool repeat; | 116 | bool repeat; |
117 | + | ||
118 | + int sliderToTime(int value); | ||
119 | + int timeToSlider(int secs); | ||
115 | }; | 120 | }; |
116 | 121 | ||
117 | #endif // MANUALCOOKWINDOW_H | 122 | #endif // MANUALCOOKWINDOW_H |
app/gui/oven_control/manualcookwindow.ui
@@ -360,28 +360,6 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</str | @@ -360,28 +360,6 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</str | ||
360 | <set>Qt::AlignCenter</set> | 360 | <set>Qt::AlignCenter</set> |
361 | </property> | 361 | </property> |
362 | </widget> | 362 | </widget> |
363 | - <widget class="QSlider" name="humiditySlider"> | ||
364 | - <property name="geometry"> | ||
365 | - <rect> | ||
366 | - <x>185</x> | ||
367 | - <y>783</y> | ||
368 | - <width>666</width> | ||
369 | - <height>33</height> | ||
370 | - </rect> | ||
371 | - </property> | ||
372 | - <property name="styleSheet"> | ||
373 | - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/humidity.png); }</string> | ||
374 | - </property> | ||
375 | - <property name="maximum"> | ||
376 | - <number>100</number> | ||
377 | - </property> | ||
378 | - <property name="tracking"> | ||
379 | - <bool>false</bool> | ||
380 | - </property> | ||
381 | - <property name="orientation"> | ||
382 | - <enum>Qt::Horizontal</enum> | ||
383 | - </property> | ||
384 | - </widget> | ||
385 | <widget class="QLabel" name="steamLabel_2"> | 363 | <widget class="QLabel" name="steamLabel_2"> |
386 | <property name="enabled"> | 364 | <property name="enabled"> |
387 | <bool>true</bool> | 365 | <bool>true</bool> |
@@ -589,61 +567,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); }</string> | @@ -589,61 +567,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); }</string> | ||
589 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | 567 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
590 | </property> | 568 | </property> |
591 | </widget> | 569 | </widget> |
592 | - <widget class="QSlider" name="interTempSlider"> | ||
593 | - <property name="enabled"> | ||
594 | - <bool>false</bool> | ||
595 | - </property> | ||
596 | - <property name="geometry"> | ||
597 | - <rect> | ||
598 | - <x>185</x> | ||
599 | - <y>1233</y> | ||
600 | - <width>666</width> | ||
601 | - <height>33</height> | ||
602 | - </rect> | ||
603 | - </property> | ||
604 | - <property name="styleSheet"> | ||
605 | - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); } | ||
606 | -QSlider::sub-page:disabled { background: #00000000; } | ||
607 | -QSlider::handle:disabled { background: #00000000; }</string> | ||
608 | - </property> | ||
609 | - <property name="maximum"> | ||
610 | - <number>6</number> | ||
611 | - </property> | ||
612 | - <property name="value"> | ||
613 | - <number>0</number> | ||
614 | - </property> | ||
615 | - <property name="tracking"> | ||
616 | - <bool>false</bool> | ||
617 | - </property> | ||
618 | - <property name="orientation"> | ||
619 | - <enum>Qt::Horizontal</enum> | ||
620 | - </property> | ||
621 | - </widget> | ||
622 | - <widget class="QSlider" name="tempSlider"> | ||
623 | - <property name="geometry"> | ||
624 | - <rect> | ||
625 | - <x>185</x> | ||
626 | - <y>933</y> | ||
627 | - <width>666</width> | ||
628 | - <height>33</height> | ||
629 | - </rect> | ||
630 | - </property> | ||
631 | - <property name="styleSheet"> | ||
632 | - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/temp.png); }</string> | ||
633 | - </property> | ||
634 | - <property name="maximum"> | ||
635 | - <number>6</number> | ||
636 | - </property> | ||
637 | - <property name="value"> | ||
638 | - <number>0</number> | ||
639 | - </property> | ||
640 | - <property name="tracking"> | ||
641 | - <bool>false</bool> | ||
642 | - </property> | ||
643 | - <property name="orientation"> | ||
644 | - <enum>Qt::Horizontal</enum> | ||
645 | - </property> | ||
646 | - </widget> | ||
647 | <widget class="QLabel" name="humidityLabel"> | 570 | <widget class="QLabel" name="humidityLabel"> |
648 | <property name="enabled"> | 571 | <property name="enabled"> |
649 | <bool>true</bool> | 572 | <bool>true</bool> |
@@ -708,37 +631,6 @@ QSlider::handle:disabled { background: #00000000; }</string> | @@ -708,37 +631,6 @@ QSlider::handle:disabled { background: #00000000; }</string> | ||
708 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | 631 | <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> |
709 | </property> | 632 | </property> |
710 | </widget> | 633 | </widget> |
711 | - <widget class="QSlider" name="timeSlider"> | ||
712 | - <property name="geometry"> | ||
713 | - <rect> | ||
714 | - <x>185</x> | ||
715 | - <y>1083</y> | ||
716 | - <width>666</width> | ||
717 | - <height>33</height> | ||
718 | - </rect> | ||
719 | - </property> | ||
720 | - <property name="styleSheet"> | ||
721 | - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/time.png); }</string> | ||
722 | - </property> | ||
723 | - <property name="maximum"> | ||
724 | - <number>86400</number> | ||
725 | - </property> | ||
726 | - <property name="singleStep"> | ||
727 | - <number>60</number> | ||
728 | - </property> | ||
729 | - <property name="pageStep"> | ||
730 | - <number>3600</number> | ||
731 | - </property> | ||
732 | - <property name="value"> | ||
733 | - <number>0</number> | ||
734 | - </property> | ||
735 | - <property name="tracking"> | ||
736 | - <bool>false</bool> | ||
737 | - </property> | ||
738 | - <property name="orientation"> | ||
739 | - <enum>Qt::Horizontal</enum> | ||
740 | - </property> | ||
741 | - </widget> | ||
742 | <widget class="QStackedWidget" name="buttonStack"> | 634 | <widget class="QStackedWidget" name="buttonStack"> |
743 | <property name="geometry"> | 635 | <property name="geometry"> |
744 | <rect> | 636 | <rect> |
@@ -1236,6 +1128,46 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }</string> | @@ -1236,6 +1128,46 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }</string> | ||
1236 | <string/> | 1128 | <string/> |
1237 | </property> | 1129 | </property> |
1238 | </widget> | 1130 | </widget> |
1131 | + <widget class="Slider" name="tempSlider" native="true"> | ||
1132 | + <property name="geometry"> | ||
1133 | + <rect> | ||
1134 | + <x>185</x> | ||
1135 | + <y>875</y> | ||
1136 | + <width>666</width> | ||
1137 | + <height>140</height> | ||
1138 | + </rect> | ||
1139 | + </property> | ||
1140 | + </widget> | ||
1141 | + <widget class="Slider" name="humiditySlider" native="true"> | ||
1142 | + <property name="geometry"> | ||
1143 | + <rect> | ||
1144 | + <x>185</x> | ||
1145 | + <y>725</y> | ||
1146 | + <width>666</width> | ||
1147 | + <height>140</height> | ||
1148 | + </rect> | ||
1149 | + </property> | ||
1150 | + </widget> | ||
1151 | + <widget class="Slider" name="timeSlider" native="true"> | ||
1152 | + <property name="geometry"> | ||
1153 | + <rect> | ||
1154 | + <x>185</x> | ||
1155 | + <y>1025</y> | ||
1156 | + <width>666</width> | ||
1157 | + <height>140</height> | ||
1158 | + </rect> | ||
1159 | + </property> | ||
1160 | + </widget> | ||
1161 | + <widget class="Slider" name="interTempSlider" native="true"> | ||
1162 | + <property name="geometry"> | ||
1163 | + <rect> | ||
1164 | + <x>185</x> | ||
1165 | + <y>1175</y> | ||
1166 | + <width>666</width> | ||
1167 | + <height>140</height> | ||
1168 | + </rect> | ||
1169 | + </property> | ||
1170 | + </widget> | ||
1239 | </widget> | 1171 | </widget> |
1240 | </widget> | 1172 | </widget> |
1241 | <customwidgets> | 1173 | <customwidgets> |
@@ -1255,6 +1187,12 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }</string> | @@ -1255,6 +1187,12 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }</string> | ||
1255 | <extends>QLabel</extends> | 1187 | <extends>QLabel</extends> |
1256 | <header>animatedimagebox.h</header> | 1188 | <header>animatedimagebox.h</header> |
1257 | </customwidget> | 1189 | </customwidget> |
1190 | + <customwidget> | ||
1191 | + <class>Slider</class> | ||
1192 | + <extends>QWidget</extends> | ||
1193 | + <header>slider.h</header> | ||
1194 | + <container>1</container> | ||
1195 | + </customwidget> | ||
1258 | </customwidgets> | 1196 | </customwidgets> |
1259 | <resources> | 1197 | <resources> |
1260 | <include location="resources.qrc"/> | 1198 | <include location="resources.qrc"/> |
app/gui/oven_control/slider.cpp
@@ -5,13 +5,15 @@ | @@ -5,13 +5,15 @@ | ||
5 | #include <QDebug> | 5 | #include <QDebug> |
6 | 6 | ||
7 | Slider::Slider(QWidget *parent) : QWidget(parent), | 7 | Slider::Slider(QWidget *parent) : QWidget(parent), |
8 | - isSliderDown_(false), sliderPosition_(0), value_(0), minimum_(0), maximum_(1) | 8 | + isSliderDown_(false), |
9 | + sliderPosition_(0), value_(0), minimum_(0), maximum_(1), | ||
10 | + subVisible_(true), | ||
11 | + tickInterval(0), bigTickInterval(0) | ||
9 | { | 12 | { |
10 | groove.load(":/images/slider/groove.png"); | 13 | groove.load(":/images/slider/groove.png"); |
11 | sub.load(":/images/slider/humidity.png"); | 14 | sub.load(":/images/slider/humidity.png"); |
12 | handle.load(":/images/slider/handle_big.png"); | 15 | handle.load(":/images/slider/handle_big.png"); |
13 | updatePixmapPosition(); | 16 | updatePixmapPosition(); |
14 | - | ||
15 | } | 17 | } |
16 | 18 | ||
17 | void Slider::setSubPixmap(const QPixmap &pixmap) | 19 | void Slider::setSubPixmap(const QPixmap &pixmap) |
@@ -24,8 +26,21 @@ void Slider::setSubPixmap(const QString &fileName) | @@ -24,8 +26,21 @@ void Slider::setSubPixmap(const QString &fileName) | ||
24 | setSubPixmap(QPixmap(fileName)); | 26 | setSubPixmap(QPixmap(fileName)); |
25 | } | 27 | } |
26 | 28 | ||
29 | +void Slider::setSubVisible(bool visible) | ||
30 | +{ | ||
31 | + if (subVisible_ == visible) | ||
32 | + return; | ||
33 | + | ||
34 | + subVisible_ = visible; | ||
35 | + | ||
36 | + update(); | ||
37 | +} | ||
38 | + | ||
27 | void Slider::setRange(int min, int max) | 39 | void Slider::setRange(int min, int max) |
28 | { | 40 | { |
41 | + if (minimum_ == min && maximum_ == max) | ||
42 | + return; | ||
43 | + | ||
29 | minimum_ = min; | 44 | minimum_ = min; |
30 | maximum_ = max; | 45 | maximum_ = max; |
31 | 46 | ||
@@ -33,22 +48,39 @@ void Slider::setRange(int min, int max) | @@ -33,22 +48,39 @@ void Slider::setRange(int min, int max) | ||
33 | setValue(min); | 48 | setValue(min); |
34 | else if (value_ > max) | 49 | else if (value_ > max) |
35 | setValue(max); | 50 | setValue(max); |
51 | + | ||
52 | + update(); | ||
36 | } | 53 | } |
37 | 54 | ||
38 | void Slider::setMinimum(int min) | 55 | void Slider::setMinimum(int min) |
39 | { | 56 | { |
57 | + if (minimum_ == min) | ||
58 | + return; | ||
59 | + | ||
40 | minimum_ = min; | 60 | minimum_ = min; |
41 | 61 | ||
42 | if (value_ < min) | 62 | if (value_ < min) |
43 | setValue(min); | 63 | setValue(min); |
64 | + | ||
65 | + update(); | ||
44 | } | 66 | } |
45 | 67 | ||
46 | void Slider::setMaximum(int max) | 68 | void Slider::setMaximum(int max) |
47 | { | 69 | { |
70 | + if (maximum_ == max) | ||
71 | + return; | ||
72 | + | ||
48 | maximum_ = max; | 73 | maximum_ = max; |
49 | 74 | ||
50 | if (value_ > max) | 75 | if (value_ > max) |
51 | setValue(max); | 76 | setValue(max); |
77 | + | ||
78 | + update(); | ||
79 | +} | ||
80 | + | ||
81 | +int Slider::value() | ||
82 | +{ | ||
83 | + return value_; | ||
52 | } | 84 | } |
53 | 85 | ||
54 | bool Slider::isSliderDown() | 86 | bool Slider::isSliderDown() |
@@ -99,30 +131,47 @@ void Slider::mouseReleaseEvent(QMouseEvent */*event*/) | @@ -99,30 +131,47 @@ void Slider::mouseReleaseEvent(QMouseEvent */*event*/) | ||
99 | void Slider::paintEvent(QPaintEvent */*event*/) | 131 | void Slider::paintEvent(QPaintEvent */*event*/) |
100 | { | 132 | { |
101 | QPainter painter(this); | 133 | QPainter painter(this); |
102 | - | ||
103 | painter.drawPixmap(groovePoint, groove); | 134 | painter.drawPixmap(groovePoint, groove); |
104 | 135 | ||
105 | - int subLength = calcSubLength(sliderPosition_); | ||
106 | - if (subLength > 0) | ||
107 | - painter.drawPixmap(subPoint, sub, QRect(0, 0, subLength, sub.height())); | ||
108 | - | ||
109 | QPen tickPen(QColor(71, 71, 71)); | 136 | QPen tickPen(QColor(71, 71, 71)); |
110 | tickPen.setWidth(2); | 137 | tickPen.setWidth(2); |
111 | painter.setPen(tickPen); | 138 | painter.setPen(tickPen); |
112 | - foreach (int tick, ticks) | ||
113 | - { | ||
114 | - int x = subPoint.x() + calcSubLength(tick); | ||
115 | - painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); | ||
116 | - } | ||
117 | 139 | ||
118 | - foreach (int tick, bigTicks) | 140 | + if (tickInterval) |
141 | + for (int tick = minimum_; tick <= maximum_; tick += tickInterval) | ||
142 | + { | ||
143 | + int x = subPoint.x() + calcSubLength(tick); | ||
144 | + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); | ||
145 | + } | ||
146 | + else | ||
147 | + foreach (int tick, ticks) | ||
148 | + { | ||
149 | + int x = subPoint.x() + calcSubLength(tick); | ||
150 | + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); | ||
151 | + } | ||
152 | + | ||
153 | + if (bigTickInterval) | ||
154 | + for (int tick = minimum_; tick <= maximum_; tick += bigTickInterval) | ||
155 | + { | ||
156 | + int x = subPoint.x() + calcSubLength(tick); | ||
157 | + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); | ||
158 | + } | ||
159 | + else | ||
160 | + foreach (int tick, bigTicks) | ||
161 | + { | ||
162 | + int x = subPoint.x() + calcSubLength(tick); | ||
163 | + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); | ||
164 | + } | ||
165 | + | ||
166 | + if (subVisible_) | ||
119 | { | 167 | { |
120 | - int x = subPoint.x() + calcSubLength(tick); | ||
121 | - painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); | ||
122 | - } | 168 | + int subLength = calcSubLength(sliderPosition_); |
169 | + if (subLength > 0) | ||
170 | + painter.drawPixmap(subPoint, sub, QRect(0, 0, subLength, sub.height())); | ||
123 | 171 | ||
124 | - QPoint handlePoint(subPoint.x() + subLength - handle.width() / 2, (height() - handle.height()) / 2); | ||
125 | - painter.drawPixmap(handlePoint, handle); | 172 | + QPoint handlePoint(subPoint.x() + subLength - handle.width() / 2, (height() - handle.height()) / 2); |
173 | + painter.drawPixmap(handlePoint, handle); | ||
174 | + } | ||
126 | } | 175 | } |
127 | 176 | ||
128 | void Slider::resizeEvent(QResizeEvent */*event*/) | 177 | void Slider::resizeEvent(QResizeEvent */*event*/) |
app/gui/oven_control/slider.h
@@ -24,11 +24,14 @@ class Slider : public QWidget | @@ -24,11 +24,14 @@ class Slider : public QWidget | ||
24 | QPoint groovePoint; | 24 | QPoint groovePoint; |
25 | QPoint subPoint; | 25 | QPoint subPoint; |
26 | 26 | ||
27 | + bool subVisible_; | ||
28 | + | ||
27 | public: | 29 | public: |
28 | explicit Slider(QWidget *parent = 0); | 30 | explicit Slider(QWidget *parent = 0); |
29 | 31 | ||
30 | void setSubPixmap(const QPixmap &pixmap); | 32 | void setSubPixmap(const QPixmap &pixmap); |
31 | void setSubPixmap(const QString &fileName); | 33 | void setSubPixmap(const QString &fileName); |
34 | + void setSubVisible(bool visible); | ||
32 | 35 | ||
33 | void setRange(int min, int max); | 36 | void setRange(int min, int max); |
34 | void setMinimum(int min); | 37 | void setMinimum(int min); |
@@ -45,6 +48,9 @@ public: | @@ -45,6 +48,9 @@ public: | ||
45 | QList<int> ticks; | 48 | QList<int> ticks; |
46 | QList<int> bigTicks; | 49 | QList<int> bigTicks; |
47 | 50 | ||
51 | + int tickInterval; | ||
52 | + int bigTickInterval; | ||
53 | + | ||
48 | protected: | 54 | protected: |
49 | virtual void mouseMoveEvent(QMouseEvent *event); | 55 | virtual void mouseMoveEvent(QMouseEvent *event); |
50 | virtual void mousePressEvent(QMouseEvent *event); | 56 | virtual void mousePressEvent(QMouseEvent *event); |