Commit a2de3cbfc9877b689d067ec74c67d58e1895294a

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

수동 요리에 새 슬라이더 적용

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); }&lt;/stri @@ -507,31 +507,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }&lt;/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); }&lt;/str @@ -360,28 +360,6 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }&lt;/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); }&lt;/string&gt; @@ -589,61 +567,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); }&lt;/string&gt;
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; }&lt;/string&gt; @@ -708,37 +631,6 @@ QSlider::handle:disabled { background: #00000000; }&lt;/string&gt;
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); }&lt;/string&gt; @@ -1236,6 +1128,46 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }&lt;/string&gt;
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); }&lt;/string&gt; @@ -1255,6 +1187,12 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }&lt;/string&gt;
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 &amp;fileName) @@ -24,8 +26,21 @@ void Slider::setSubPixmap(const QString &amp;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);