Commit 935b853a430a8b7f4728a3f878b0850bfbff9d99

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

새 슬라이더 적용

app/gui/oven_control/autocookconfigwindow.cpp
... ... @@ -117,29 +117,31 @@ void AutoCookConfigWindow::setupUi()
117 117  
118 118 cw.minimum->setText(Define::minimum(config.type));
119 119 cw.maximum->setText(Define::maximum(config.type));
120   - cw.slider->blockSignals(true);
121   - cw.slider->setMinimum(1);
122   - cw.slider->setMaximum(config.maximum);
123   - cw.slider->setValue(config.current);
124   - cw.slider->blockSignals(false);
125 120  
126 121 switch (config.type)
127 122 {
128 123 case Define::Time:
129   - cw.slider->setProperty("sliderColor", "white");
  124 + cw.slider->setSubPixmap(":/images/slider/sub_white.png");
130 125 break;
131 126 case Define::BurnDegree:
132   - cw.slider->setProperty("sliderColor", "yellow");
  127 + cw.slider->setSubPixmap(":/images/slider/sub_yellow.png");
133 128 break;
134 129 case Define::Brightness:
135   - cw.slider->setProperty("sliderColor", "red");
  130 + cw.slider->setSubPixmap(":/images/slider/sub_red.png");
136 131 break;
137 132 default:
138   - cw.slider->setProperty("sliderColor", "blue");
  133 + cw.slider->setSubPixmap(":/images/slider/sub_blue.png");
139 134 break;
140 135 }
141 136  
142   - connect(cw.slider, SIGNAL(valueChanged(int)), SLOT(updateConfig()));
  137 + cw.slider->blockSignals(true);
  138 + cw.slider->setMinimum(1);
  139 + cw.slider->setMaximum(config.maximum);
  140 + cw.slider->setValue(config.current);
  141 + cw.slider->blockSignals(false);
  142 + cw.slider->bigTickInterval = 1;
  143 +
  144 + connect(cw.slider, SIGNAL(sliderMoved(int)), SLOT(updateConfig()));
143 145 }
144 146 }
145 147  
... ... @@ -176,11 +178,11 @@ void AutoCookConfigWindow::updateView()
176 178  
177 179 void AutoCookConfigWindow::updateConfig()
178 180 {
179   - cook.setConfig(ui->configSlider_1->value(),
180   - ui->configSlider_2->value(),
181   - ui->configSlider_3->value(),
182   - ui->configSlider_4->value(),
183   - ui->configSlider_5->value());
  181 + cook.setConfig(ui->configSlider_1->sliderPosition(),
  182 + ui->configSlider_2->sliderPosition(),
  183 + ui->configSlider_3->sliderPosition(),
  184 + ui->configSlider_4->sliderPosition(),
  185 + ui->configSlider_5->sliderPosition());
184 186  
185 187 updateView();
186 188 }
... ...
app/gui/oven_control/autocookconfigwindow.h
... ... @@ -10,6 +10,7 @@
10 10 #include "oven.h"
11 11 //#include "cook.h"
12 12 #include "cookbook.h"
  13 +#include "slider.h"
13 14  
14 15 namespace Ui {
15 16 class AutoCookConfigWindow;
... ... @@ -35,7 +36,7 @@ private:
35 36 QLabel *minimum;
36 37 QLabel *maximum;
37 38 QLabel *current;
38   - QSlider *slider;
  39 + Slider *slider;
39 40 };
40 41  
41 42 QList<ConfigWidget> configWidgets;
... ...
app/gui/oven_control/autocookconfigwindow.ui
... ... @@ -673,31 +673,6 @@ border-image: url(:/images/button/152_ov.png);
673 673 <string notr="true">icon</string>
674 674 </property>
675 675 </widget>
676   - <widget class="QSlider" name="configSlider_4">
677   - <property name="geometry">
678   - <rect>
679   - <x>185</x>
680   - <y>1173</y>
681   - <width>666</width>
682   - <height>33</height>
683   - </rect>
684   - </property>
685   - <property name="maximum">
686   - <number>100</number>
687   - </property>
688   - <property name="pageStep">
689   - <number>1</number>
690   - </property>
691   - <property name="value">
692   - <number>0</number>
693   - </property>
694   - <property name="tracking">
695   - <bool>true</bool>
696   - </property>
697   - <property name="orientation">
698   - <enum>Qt::Horizontal</enum>
699   - </property>
700   - </widget>
701 676 <widget class="QPushButton" name="configButton_4">
702 677 <property name="geometry">
703 678 <rect>
... ... @@ -776,31 +751,6 @@ border-image: url(:/images/button/152_ov.png);
776 751 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
777 752 </property>
778 753 </widget>
779   - <widget class="QSlider" name="configSlider_2">
780   - <property name="geometry">
781   - <rect>
782   - <x>185</x>
783   - <y>823</y>
784   - <width>666</width>
785   - <height>33</height>
786   - </rect>
787   - </property>
788   - <property name="maximum">
789   - <number>100</number>
790   - </property>
791   - <property name="pageStep">
792   - <number>1</number>
793   - </property>
794   - <property name="value">
795   - <number>10</number>
796   - </property>
797   - <property name="tracking">
798   - <bool>true</bool>
799   - </property>
800   - <property name="orientation">
801   - <enum>Qt::Horizontal</enum>
802   - </property>
803   - </widget>
804 754 <widget class="QLabel" name="configCurrentLabel_5">
805 755 <property name="enabled">
806 756 <bool>true</bool>
... ... @@ -927,31 +877,6 @@ border-image: url(:/images/button/152_ov.png);
927 877 <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
928 878 </property>
929 879 </widget>
930   - <widget class="QSlider" name="configSlider_3">
931   - <property name="geometry">
932   - <rect>
933   - <x>185</x>
934   - <y>993</y>
935   - <width>666</width>
936   - <height>33</height>
937   - </rect>
938   - </property>
939   - <property name="maximum">
940   - <number>100</number>
941   - </property>
942   - <property name="pageStep">
943   - <number>1</number>
944   - </property>
945   - <property name="value">
946   - <number>0</number>
947   - </property>
948   - <property name="tracking">
949   - <bool>true</bool>
950   - </property>
951   - <property name="orientation">
952   - <enum>Qt::Horizontal</enum>
953   - </property>
954   - </widget>
955 880 <widget class="QLabel" name="configMaxLabel_4">
956 881 <property name="enabled">
957 882 <bool>true</bool>
... ... @@ -1317,31 +1242,6 @@ border-image: url(:/images/button/152_ov.png);
1317 1242 <string notr="true">icon</string>
1318 1243 </property>
1319 1244 </widget>
1320   - <widget class="QSlider" name="configSlider_5">
1321   - <property name="geometry">
1322   - <rect>
1323   - <x>185</x>
1324   - <y>1343</y>
1325   - <width>666</width>
1326   - <height>33</height>
1327   - </rect>
1328   - </property>
1329   - <property name="maximum">
1330   - <number>100</number>
1331   - </property>
1332   - <property name="pageStep">
1333   - <number>1</number>
1334   - </property>
1335   - <property name="value">
1336   - <number>0</number>
1337   - </property>
1338   - <property name="tracking">
1339   - <bool>true</bool>
1340   - </property>
1341   - <property name="orientation">
1342   - <enum>Qt::Horizontal</enum>
1343   - </property>
1344   - </widget>
1345 1245 <widget class="QLabel" name="configCurrentLabel_4">
1346 1246 <property name="enabled">
1347 1247 <bool>true</bool>
... ... @@ -1422,35 +1322,54 @@ border-image: url(:/images/button/152_ov.png);
1422 1322 <string notr="true">icon</string>
1423 1323 </property>
1424 1324 </widget>
1425   - <widget class="QSlider" name="configSlider_1">
  1325 + <widget class="Slider" name="configSlider_1" native="true">
1426 1326 <property name="geometry">
1427 1327 <rect>
1428 1328 <x>185</x>
1429   - <y>663</y>
  1329 + <y>605</y>
1430 1330 <width>666</width>
1431   - <height>33</height>
  1331 + <height>140</height>
1432 1332 </rect>
1433 1333 </property>
1434   - <property name="maximum">
1435   - <number>100</number>
1436   - </property>
1437   - <property name="pageStep">
1438   - <number>1</number>
1439   - </property>
1440   - <property name="value">
1441   - <number>39</number>
1442   - </property>
1443   - <property name="tracking">
1444   - <bool>true</bool>
  1334 + </widget>
  1335 + <widget class="Slider" name="configSlider_2" native="true">
  1336 + <property name="geometry">
  1337 + <rect>
  1338 + <x>185</x>
  1339 + <y>765</y>
  1340 + <width>666</width>
  1341 + <height>140</height>
  1342 + </rect>
1445 1343 </property>
1446   - <property name="orientation">
1447   - <enum>Qt::Horizontal</enum>
  1344 + </widget>
  1345 + <widget class="Slider" name="configSlider_3" native="true">
  1346 + <property name="geometry">
  1347 + <rect>
  1348 + <x>185</x>
  1349 + <y>935</y>
  1350 + <width>666</width>
  1351 + <height>140</height>
  1352 + </rect>
1448 1353 </property>
1449   - <property name="tickPosition">
1450   - <enum>QSlider::TicksBelow</enum>
  1354 + </widget>
  1355 + <widget class="Slider" name="configSlider_4" native="true">
  1356 + <property name="geometry">
  1357 + <rect>
  1358 + <x>185</x>
  1359 + <y>1115</y>
  1360 + <width>666</width>
  1361 + <height>140</height>
  1362 + </rect>
1451 1363 </property>
1452   - <property name="tickInterval">
1453   - <number>1</number>
  1364 + </widget>
  1365 + <widget class="Slider" name="configSlider_5" native="true">
  1366 + <property name="geometry">
  1367 + <rect>
  1368 + <x>185</x>
  1369 + <y>1285</y>
  1370 + <width>666</width>
  1371 + <height>140</height>
  1372 + </rect>
1454 1373 </property>
1455 1374 </widget>
1456 1375 </widget>
... ... @@ -1467,6 +1386,12 @@ border-image: url(:/images/button/152_ov.png);
1467 1386 <extends>QLabel</extends>
1468 1387 <header>washwarnicon.h</header>
1469 1388 </customwidget>
  1389 + <customwidget>
  1390 + <class>Slider</class>
  1391 + <extends>QWidget</extends>
  1392 + <header>slider.h</header>
  1393 + <container>1</container>
  1394 + </customwidget>
1470 1395 </customwidgets>
1471 1396 <resources>
1472 1397 <include location="resources.qrc"/>
... ...
app/gui/oven_control/programmingautoconfigwindow.cpp
... ... @@ -98,29 +98,31 @@ void ProgrammingAutoConfigWindow::setupUi()
98 98  
99 99 cw.minimum->setText(Define::minimum(config.type));
100 100 cw.maximum->setText(Define::maximum(config.type));
101   - cw.slider->blockSignals(true);
102   - cw.slider->setMinimum(1);
103   - cw.slider->setMaximum(config.maximum);
104   - cw.slider->setValue(config.current);
105   - cw.slider->blockSignals(false);
106 101  
107 102 switch (config.type)
108 103 {
109 104 case Define::Time:
110   - cw.slider->setProperty("sliderColor", "white");
  105 + cw.slider->setSubPixmap(":/images/slider/sub_white.png");
111 106 break;
112 107 case Define::BurnDegree:
113   - cw.slider->setProperty("sliderColor", "yellow");
  108 + cw.slider->setSubPixmap(":/images/slider/sub_yellow.png");
114 109 break;
115 110 case Define::Brightness:
116   - cw.slider->setProperty("sliderColor", "red");
  111 + cw.slider->setSubPixmap(":/images/slider/sub_red.png");
117 112 break;
118 113 default:
119   - cw.slider->setProperty("sliderColor", "blue");
  114 + cw.slider->setSubPixmap(":/images/slider/sub_blue.png");
120 115 break;
121 116 }
122 117  
123   - connect(cw.slider, SIGNAL(valueChanged(int)), SLOT(updateConfig()));
  118 + cw.slider->blockSignals(true);
  119 + cw.slider->setMinimum(1);
  120 + cw.slider->setMaximum(config.maximum);
  121 + cw.slider->setValue(config.current);
  122 + cw.slider->blockSignals(false);
  123 + cw.slider->bigTickInterval = 1;
  124 +
  125 + connect(cw.slider, SIGNAL(sliderMoved(int)), SLOT(updateConfig()));
124 126 }
125 127 }
126 128  
... ... @@ -157,11 +159,11 @@ void ProgrammingAutoConfigWindow::updateView()
157 159  
158 160 void ProgrammingAutoConfigWindow::updateConfig()
159 161 {
160   - cook.setConfig(ui->configSlider_1->value(),
161   - ui->configSlider_2->value(),
162   - ui->configSlider_3->value(),
163   - ui->configSlider_4->value(),
164   - ui->configSlider_5->value());
  162 + cook.setConfig(ui->configSlider_1->sliderPosition(),
  163 + ui->configSlider_2->sliderPosition(),
  164 + ui->configSlider_3->sliderPosition(),
  165 + ui->configSlider_4->sliderPosition(),
  166 + ui->configSlider_5->sliderPosition());
165 167  
166 168 updateView();
167 169 }
... ...
app/gui/oven_control/programmingautoconfigwindow.h
... ... @@ -7,6 +7,7 @@
7 7 #include <QSlider>
8 8  
9 9 #include "cookbook.h"
  10 +#include "slider.h"
10 11  
11 12 namespace Ui {
12 13 class ProgrammingAutoConfigWindow;
... ... @@ -29,7 +30,7 @@ private:
29 30 QLabel *minimum;
30 31 QLabel *maximum;
31 32 QLabel *current;
32   - QSlider *slider;
  33 + Slider *slider;
33 34 };
34 35  
35 36 QList<ConfigWidget> configWidgets;
... ...
app/gui/oven_control/programmingautoconfigwindow.ui
... ... @@ -405,37 +405,6 @@ border-image: url(:/images/button/152_ov.png);
405 405 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
406 406 </property>
407 407 </widget>
408   - <widget class="QSlider" name="configSlider_1">
409   - <property name="geometry">
410   - <rect>
411   - <x>185</x>
412   - <y>663</y>
413   - <width>666</width>
414   - <height>33</height>
415   - </rect>
416   - </property>
417   - <property name="maximum">
418   - <number>100</number>
419   - </property>
420   - <property name="pageStep">
421   - <number>1</number>
422   - </property>
423   - <property name="value">
424   - <number>39</number>
425   - </property>
426   - <property name="tracking">
427   - <bool>true</bool>
428   - </property>
429   - <property name="orientation">
430   - <enum>Qt::Horizontal</enum>
431   - </property>
432   - <property name="tickPosition">
433   - <enum>QSlider::TicksBelow</enum>
434   - </property>
435   - <property name="tickInterval">
436   - <number>1</number>
437   - </property>
438   - </widget>
439 408 <widget class="QLabel" name="configMinLabel_5">
440 409 <property name="enabled">
441 410 <bool>true</bool>
... ... @@ -563,31 +532,6 @@ border-image: url(:/images/button/288_ov.png);
563 532 </widget>
564 533 <widget class="QWidget" name="page_2"/>
565 534 </widget>
566   - <widget class="QSlider" name="configSlider_2">
567   - <property name="geometry">
568   - <rect>
569   - <x>185</x>
570   - <y>823</y>
571   - <width>666</width>
572   - <height>33</height>
573   - </rect>
574   - </property>
575   - <property name="maximum">
576   - <number>100</number>
577   - </property>
578   - <property name="pageStep">
579   - <number>1</number>
580   - </property>
581   - <property name="value">
582   - <number>10</number>
583   - </property>
584   - <property name="tracking">
585   - <bool>true</bool>
586   - </property>
587   - <property name="orientation">
588   - <enum>Qt::Horizontal</enum>
589   - </property>
590   - </widget>
591 535 <widget class="QLabel" name="cookTypeIcon">
592 536 <property name="geometry">
593 537 <rect>
... ... @@ -623,31 +567,6 @@ border-image: url(:/images/button/288_ov.png);
623 567 <string notr="true">icon</string>
624 568 </property>
625 569 </widget>
626   - <widget class="QSlider" name="configSlider_4">
627   - <property name="geometry">
628   - <rect>
629   - <x>185</x>
630   - <y>1173</y>
631   - <width>666</width>
632   - <height>33</height>
633   - </rect>
634   - </property>
635   - <property name="maximum">
636   - <number>100</number>
637   - </property>
638   - <property name="pageStep">
639   - <number>1</number>
640   - </property>
641   - <property name="value">
642   - <number>0</number>
643   - </property>
644   - <property name="tracking">
645   - <bool>true</bool>
646   - </property>
647   - <property name="orientation">
648   - <enum>Qt::Horizontal</enum>
649   - </property>
650   - </widget>
651 570 <widget class="QLabel" name="configMinLabel_2">
652 571 <property name="enabled">
653 572 <bool>true</bool>
... ... @@ -726,31 +645,6 @@ border-image: url(:/images/button/288_ov.png);
726 645 <string notr="true">icon</string>
727 646 </property>
728 647 </widget>
729   - <widget class="QSlider" name="configSlider_3">
730   - <property name="geometry">
731   - <rect>
732   - <x>185</x>
733   - <y>993</y>
734   - <width>666</width>
735   - <height>33</height>
736   - </rect>
737   - </property>
738   - <property name="maximum">
739   - <number>100</number>
740   - </property>
741   - <property name="pageStep">
742   - <number>1</number>
743   - </property>
744   - <property name="value">
745   - <number>0</number>
746   - </property>
747   - <property name="tracking">
748   - <bool>true</bool>
749   - </property>
750   - <property name="orientation">
751   - <enum>Qt::Horizontal</enum>
752   - </property>
753   - </widget>
754 648 <widget class="QLabel" name="configCurrentLabel_4">
755 649 <property name="enabled">
756 650 <bool>true</bool>
... ... @@ -1123,31 +1017,6 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c
1123 1017 <string notr="true">icon</string>
1124 1018 </property>
1125 1019 </widget>
1126   - <widget class="QSlider" name="configSlider_5">
1127   - <property name="geometry">
1128   - <rect>
1129   - <x>185</x>
1130   - <y>1343</y>
1131   - <width>666</width>
1132   - <height>33</height>
1133   - </rect>
1134   - </property>
1135   - <property name="maximum">
1136   - <number>100</number>
1137   - </property>
1138   - <property name="pageStep">
1139   - <number>1</number>
1140   - </property>
1141   - <property name="value">
1142   - <number>0</number>
1143   - </property>
1144   - <property name="tracking">
1145   - <bool>true</bool>
1146   - </property>
1147   - <property name="orientation">
1148   - <enum>Qt::Horizontal</enum>
1149   - </property>
1150   - </widget>
1151 1020 <widget class="QLabel" name="configMaxLabel_3">
1152 1021 <property name="enabled">
1153 1022 <bool>true</bool>
... ... @@ -1430,6 +1299,56 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c
1430 1299 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
1431 1300 </property>
1432 1301 </widget>
  1302 + <widget class="Slider" name="configSlider_4" native="true">
  1303 + <property name="geometry">
  1304 + <rect>
  1305 + <x>185</x>
  1306 + <y>1115</y>
  1307 + <width>666</width>
  1308 + <height>140</height>
  1309 + </rect>
  1310 + </property>
  1311 + </widget>
  1312 + <widget class="Slider" name="configSlider_3" native="true">
  1313 + <property name="geometry">
  1314 + <rect>
  1315 + <x>185</x>
  1316 + <y>935</y>
  1317 + <width>666</width>
  1318 + <height>140</height>
  1319 + </rect>
  1320 + </property>
  1321 + </widget>
  1322 + <widget class="Slider" name="configSlider_2" native="true">
  1323 + <property name="geometry">
  1324 + <rect>
  1325 + <x>185</x>
  1326 + <y>765</y>
  1327 + <width>666</width>
  1328 + <height>140</height>
  1329 + </rect>
  1330 + </property>
  1331 + </widget>
  1332 + <widget class="Slider" name="configSlider_5" native="true">
  1333 + <property name="geometry">
  1334 + <rect>
  1335 + <x>185</x>
  1336 + <y>1285</y>
  1337 + <width>666</width>
  1338 + <height>140</height>
  1339 + </rect>
  1340 + </property>
  1341 + </widget>
  1342 + <widget class="Slider" name="configSlider_1" native="true">
  1343 + <property name="geometry">
  1344 + <rect>
  1345 + <x>185</x>
  1346 + <y>605</y>
  1347 + <width>666</width>
  1348 + <height>140</height>
  1349 + </rect>
  1350 + </property>
  1351 + </widget>
1433 1352 </widget>
1434 1353 </widget>
1435 1354 <customwidgets>
... ... @@ -1444,6 +1363,12 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c
1444 1363 <extends>QLabel</extends>
1445 1364 <header>washwarnicon.h</header>
1446 1365 </customwidget>
  1366 + <customwidget>
  1367 + <class>Slider</class>
  1368 + <extends>QWidget</extends>
  1369 + <header>slider.h</header>
  1370 + <container>1</container>
  1371 + </customwidget>
1447 1372 </customwidgets>
1448 1373 <resources>
1449 1374 <include location="resources.qrc"/>
... ...
app/gui/oven_control/programmingmanualcoretemppopup.cpp
... ... @@ -3,6 +3,7 @@
3 3  
4 4 #include "stringer.h"
5 5 #include "soundplayer.h"
  6 +#include "oven.h"
6 7  
7 8 ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent) :
8 9 QWidget(parent),
... ... @@ -12,7 +13,23 @@ ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent)
12 13  
13 14 setAttribute(Qt::WA_DeleteOnClose);
14 15  
15   - connect(ui->coreTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel()));
  16 + Oven *oven = Oven::getInstance();
  17 +
  18 + ui->coreTempSlider->setSubPixmap(":/images/slider/core.png");
  19 + ui->coreTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp());
  20 +
  21 + QList<int> &bigTicks = ui->coreTempSlider->bigTicks;
  22 + bigTicks.append(oven->minInterTemp());
  23 + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2);
  24 + bigTicks.append(oven->maxInterTemp());
  25 +
  26 + QList<int> &ticks = ui->coreTempSlider->ticks;
  27 + for (int i = 1; i < 3; i++)
  28 + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3);
  29 + for (int i = 1; i < 3; i++)
  30 + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3);
  31 +
  32 + connect(ui->coreTempSlider, SIGNAL(sliderMoved(int)), SLOT(updateCoreTempLabel()));
16 33  
17 34 updateCoreTempLabel();
18 35  
... ... @@ -27,7 +44,7 @@ ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup()
27 44  
28 45 void ProgrammingManualCoreTempPopup::updateCoreTempLabel()
29 46 {
30   - ui->coreTempLabel->setText(Stringer::temperature(ui->coreTempSlider->value(), Stringer::fontSize14));
  47 + ui->coreTempLabel->setText(Stringer::temperature(ui->coreTempSlider->sliderPosition(), Stringer::fontSize14));
31 48 }
32 49  
33 50 void ProgrammingManualCoreTempPopup::on_coreTempButton_clicked()
... ...
app/gui/oven_control/programmingmanualcoretemppopup.ui
... ... @@ -52,34 +52,6 @@ width: 23px;
52 52 height: 33px;
53 53 }</string>
54 54 </property>
55   - <widget class="QSlider" name="coreTempSlider">
56   - <property name="geometry">
57   - <rect>
58   - <x>185</x>
59   - <y>1012</y>
60   - <width>666</width>
61   - <height>33</height>
62   - </rect>
63   - </property>
64   - <property name="styleSheet">
65   - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); }</string>
66   - </property>
67   - <property name="minimum">
68   - <number>30</number>
69   - </property>
70   - <property name="maximum">
71   - <number>99</number>
72   - </property>
73   - <property name="value">
74   - <number>30</number>
75   - </property>
76   - <property name="tracking">
77   - <bool>true</bool>
78   - </property>
79   - <property name="orientation">
80   - <enum>Qt::Horizontal</enum>
81   - </property>
82   - </widget>
83 55 <widget class="QPushButton" name="coreTempButton">
84 56 <property name="geometry">
85 57 <rect>
... ... @@ -211,13 +183,31 @@ QPushButton:pressed { background-image: url(:/images/manual_button/ok_ov.png); }
211 183 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
212 184 </property>
213 185 </widget>
  186 + <widget class="Slider" name="coreTempSlider" native="true">
  187 + <property name="geometry">
  188 + <rect>
  189 + <x>185</x>
  190 + <y>954</y>
  191 + <width>666</width>
  192 + <height>140</height>
  193 + </rect>
  194 + </property>
  195 + </widget>
214 196 <zorder>background</zorder>
215   - <zorder>coreTempSlider</zorder>
216 197 <zorder>coreTempButton</zorder>
217 198 <zorder>cancelButton</zorder>
218 199 <zorder>applyButton</zorder>
219 200 <zorder>coreTempLabel</zorder>
  201 + <zorder>coreTempSlider</zorder>
220 202 </widget>
  203 + <customwidgets>
  204 + <customwidget>
  205 + <class>Slider</class>
  206 + <extends>QWidget</extends>
  207 + <header>slider.h</header>
  208 + <container>1</container>
  209 + </customwidget>
  210 + </customwidgets>
221 211 <resources/>
222 212 <connections/>
223 213 </ui>
... ...
app/gui/oven_control/programmingmanualwindow.cpp
... ... @@ -17,10 +17,48 @@ ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent, Define::Mode m
17 17 ui->clockContainer->setParent(ui->upperStack);
18 18 setAttribute(Qt::WA_DeleteOnClose);
19 19  
20   - connect(ui->humiditySlider, SIGNAL(valueChanged(int)), SLOT(updateHumidityLabel()));
21   - connect(ui->tempSlider, SIGNAL(valueChanged(int)), SLOT(updateTempLabel()));
22   - connect(ui->timeSlider, SIGNAL(valueChanged(int)), SLOT(updateTimeLabel()));
23   - connect(ui->interTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel()));
  20 + ui->humiditySlider->setSubPixmap(":/images/slider/humidity.png");
  21 + ui->humiditySlider->setRange(0, 100);
  22 + ui->humiditySlider->bigTickInterval = 50;
  23 + ui->humiditySlider->tickInterval = 10;
  24 +
  25 + ui->tempSlider->setSubPixmap(":/images/slider/temp.png");
  26 + ui->tempSlider->bigTickInterval = 50;
  27 + ui->tempSlider->tickInterval = 10;
  28 +
  29 + ui->timeSlider->setSubPixmap(":/images/slider/time.png");
  30 + ui->timeSlider->setRange(0, 342);
  31 + ui->timeSlider->bigTicks.append(0);
  32 + ui->timeSlider->bigTicks.append(180);
  33 + ui->timeSlider->bigTicks.append(270);
  34 + ui->timeSlider->bigTicks.append(342);
  35 + ui->timeSlider->ticks.append(60);
  36 + ui->timeSlider->ticks.append(120);
  37 + ui->timeSlider->ticks.append(180 + 30);
  38 + ui->timeSlider->ticks.append(180 + 60);
  39 + ui->timeSlider->ticks.append(270 + 4 * 6);
  40 + ui->timeSlider->ticks.append(270 + 4 * 12);
  41 +
  42 + ui->interTempSlider->setSubPixmap(":/images/slider/core.png");
  43 + ui->interTempSlider->setRange(30, 99);
  44 +
  45 + Oven *oven = Oven::getInstance();
  46 +
  47 + QList<int> &bigTicks = ui->interTempSlider->bigTicks;
  48 + bigTicks.append(oven->minInterTemp());
  49 + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2);
  50 + bigTicks.append(oven->maxInterTemp());
  51 +
  52 + QList<int> &ticks = ui->interTempSlider->ticks;
  53 + for (int i = 1; i < 3; i++)
  54 + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3);
  55 + for (int i = 1; i < 3; i++)
  56 + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3);
  57 +
  58 + connect(ui->humiditySlider, SIGNAL(sliderMoved(int)), SLOT(updateHumidityLabel()));
  59 + connect(ui->tempSlider, SIGNAL(sliderMoved(int)), SLOT(updateTempLabel()));
  60 + connect(ui->timeSlider, SIGNAL(sliderMoved(int)), SLOT(updateTimeLabel()));
  61 + connect(ui->interTempSlider, SIGNAL(sliderMoved(int)), SLOT(updateCoreTempLabel()));
24 62  
25 63 setDefault(mode);
26 64  
... ... @@ -33,6 +71,24 @@ ProgrammingManualWindow::~ProgrammingManualWindow()
33 71 delete ui;
34 72 }
35 73  
  74 +int ProgrammingManualWindow::sliderToTime(int value)
  75 +{
  76 + if (value <= 180)
  77 + return value * 60;
  78 + if (value <= 270)
  79 + return 180 * 60 + (value - 180) * 2 * 60;
  80 + return 360 * 60 + (value - 270) * 15 * 60;
  81 +}
  82 +
  83 +int ProgrammingManualWindow::timeToSlider(int secs)
  84 +{
  85 + if (secs <= 180 * 60)
  86 + return secs / 60;
  87 + if (secs <= 360 * 60)
  88 + return 180 + (secs - 180 * 60) / 2 / 60;
  89 + return 270 + (secs - 360 * 60) / 15 / 60;
  90 +}
  91 +
36 92 void ProgrammingManualWindow::setDefault(Define::Mode mode)
37 93 {
38 94 switch (mode)
... ... @@ -45,6 +101,7 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode)
45 101 ui->tempSlider->setValue(100);
46 102 ui->timeSlider->setValue(0);
47 103 ui->interTempSlider->setEnabled(false);
  104 + ui->interTempSlider->setSubVisible(false);
48 105 ui->interTempSlider->setValue(30);
49 106 setFan(4);
50 107 updateCoreTempButton();
... ... @@ -59,6 +116,7 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode)
59 116 ui->tempSlider->setValue(100);
60 117 ui->timeSlider->setValue(0);
61 118 ui->interTempSlider->setEnabled(false);
  119 + ui->interTempSlider->setSubVisible(false);
62 120 ui->interTempSlider->setValue(30);
63 121 setFan(4);
64 122 updateCoreTempButton();
... ... @@ -73,6 +131,7 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode)
73 131 ui->tempSlider->setValue(160);
74 132 ui->timeSlider->setValue(0);
75 133 ui->interTempSlider->setEnabled(false);
  134 + ui->interTempSlider->setSubVisible(false);
76 135 ui->interTempSlider->setValue(30);
77 136 setFan(4);
78 137 updateCoreTempButton();
... ... @@ -93,18 +152,17 @@ void ProgrammingManualWindow::setFan(int level)
93 152  
94 153 void ProgrammingManualWindow::updateHumidityLabel()
95 154 {
96   -// ui->humidityLabel->setText(QString::number(ui->humiditySlider->value()));
97   - ui->humidityLabel->setText(QString("%1%").arg(ui->humiditySlider->value()));
  155 + ui->humidityLabel->setText(QString("%1%").arg(ui->humiditySlider->sliderPosition()));
98 156 }
99 157  
100 158 void ProgrammingManualWindow::updateTempLabel()
101 159 {
102   - ui->tempLabel->setText(Stringer::temperature(ui->tempSlider->value(), Stringer::fontSize14));
  160 + ui->tempLabel->setText(Stringer::temperature(ui->tempSlider->sliderPosition(), Stringer::fontSize14));
103 161 }
104 162  
105 163 void ProgrammingManualWindow::updateTimeLabel()
106 164 {
107   - ui->timeLabel->setText(Stringer::remainingTime(ui->timeSlider->value() * 1000, Stringer::fontSize14));
  165 + ui->timeLabel->setText(Stringer::remainingTime(sliderToTime(ui->timeSlider->sliderPosition()) * 1000, Stringer::fontSize14));
108 166 }
109 167  
110 168 void ProgrammingManualWindow::updateCoreTempButton()
... ... @@ -130,7 +188,7 @@ QPushButton:pressed {\
130 188 void ProgrammingManualWindow::updateCoreTempLabel()
131 189 {
132 190 if (ui->interTempSlider->isEnabled())
133   - ui->interTempLabel->setText(Stringer::temperature(ui->interTempSlider->value(), Stringer::fontSize14));
  191 + ui->interTempLabel->setText(Stringer::temperature(ui->interTempSlider->sliderPosition(), Stringer::fontSize14));
134 192 else
135 193 ui->interTempLabel->setText(Stringer::unusedTemperature(Stringer::fontSize14));
136 194 }
... ... @@ -169,6 +227,7 @@ void ProgrammingManualWindow::updateFanButton()
169 227 void ProgrammingManualWindow::onCoreTempEnabled(int celsius)
170 228 {
171 229 ui->interTempSlider->setEnabled(true);
  230 + ui->interTempSlider->setSubVisible(true);
172 231 ui->interTempSlider->setValue(celsius);
173 232 updateCoreTempButton();
174 233 updateCoreTempLabel();
... ... @@ -194,6 +253,7 @@ void ProgrammingManualWindow::on_interTempButton_clicked()
194 253 if (ui->interTempSlider->isEnabled())
195 254 {
196 255 ui->interTempSlider->setEnabled(false);
  256 + ui->interTempSlider->setSubVisible(false);
197 257 updateCoreTempButton();
198 258 updateCoreTempLabel();
199 259 }
... ... @@ -240,7 +300,7 @@ void ProgrammingManualWindow::on_okButton_clicked()
240 300 s.mode = mode;
241 301 s.humidity = ui->humiditySlider->value();
242 302 s.temp = ui->tempSlider->value();
243   - s.time = ui->timeSlider->value();
  303 + s.time = sliderToTime(ui->timeSlider->value());
244 304 s.coreTempEnabled = ui->interTempSlider->isEnabled();
245 305 s.coreTemp = ui->interTempSlider->value();
246 306 s.fan = fan;
... ...
app/gui/oven_control/programmingmanualwindow.h
... ... @@ -23,6 +23,9 @@ private:
23 23 Define::Mode mode;
24 24 int fan;
25 25  
  26 + int sliderToTime(int value);
  27 + int timeToSlider(int secs);
  28 +
26 29 private slots:
27 30 void setDefault(Define::Mode mode);
28 31 void setFan(int level);
... ...
app/gui/oven_control/programmingmanualwindow.ui
... ... @@ -293,64 +293,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); }&lt;/string&gt;
293 293 <set>Qt::AlignCenter</set>
294 294 </property>
295 295 </widget>
296   - <widget class="QSlider" name="timeSlider">
297   - <property name="geometry">
298   - <rect>
299   - <x>185</x>
300   - <y>1083</y>
301   - <width>666</width>
302   - <height>33</height>
303   - </rect>
304   - </property>
305   - <property name="styleSheet">
306   - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/time.png); }</string>
307   - </property>
308   - <property name="maximum">
309   - <number>86400</number>
310   - </property>
311   - <property name="singleStep">
312   - <number>60</number>
313   - </property>
314   - <property name="pageStep">
315   - <number>3600</number>
316   - </property>
317   - <property name="value">
318   - <number>0</number>
319   - </property>
320   - <property name="orientation">
321   - <enum>Qt::Horizontal</enum>
322   - </property>
323   - </widget>
324   - <widget class="QSlider" name="interTempSlider">
325   - <property name="enabled">
326   - <bool>false</bool>
327   - </property>
328   - <property name="geometry">
329   - <rect>
330   - <x>185</x>
331   - <y>1233</y>
332   - <width>666</width>
333   - <height>33</height>
334   - </rect>
335   - </property>
336   - <property name="styleSheet">
337   - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/core.png); }
338   -QSlider::sub-page:disabled { background: #00000000; }
339   -QSlider::handle:disabled { background: #00000000; }</string>
340   - </property>
341   - <property name="minimum">
342   - <number>30</number>
343   - </property>
344   - <property name="maximum">
345   - <number>99</number>
346   - </property>
347   - <property name="value">
348   - <number>30</number>
349   - </property>
350   - <property name="orientation">
351   - <enum>Qt::Horizontal</enum>
352   - </property>
353   - </widget>
354 296 <widget class="QLabel" name="interTempLabel">
355 297 <property name="enabled">
356 298 <bool>true</bool>
... ... @@ -634,28 +576,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); }&lt;/string&gt;
634 576 <string notr="true">icon</string>
635 577 </property>
636 578 </widget>
637   - <widget class="QSlider" name="tempSlider">
638   - <property name="geometry">
639   - <rect>
640   - <x>185</x>
641   - <y>933</y>
642   - <width>666</width>
643   - <height>33</height>
644   - </rect>
645   - </property>
646   - <property name="styleSheet">
647   - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/temp.png); }</string>
648   - </property>
649   - <property name="maximum">
650   - <number>6</number>
651   - </property>
652   - <property name="value">
653   - <number>0</number>
654   - </property>
655   - <property name="orientation">
656   - <enum>Qt::Horizontal</enum>
657   - </property>
658   - </widget>
659 579 <widget class="QPushButton" name="steamButton">
660 580 <property name="geometry">
661 581 <rect>
... ... @@ -809,25 +729,6 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_steam.png); }
809 729 <set>Qt::AlignCenter</set>
810 730 </property>
811 731 </widget>
812   - <widget class="QSlider" name="humiditySlider">
813   - <property name="geometry">
814   - <rect>
815   - <x>185</x>
816   - <y>783</y>
817   - <width>666</width>
818   - <height>33</height>
819   - </rect>
820   - </property>
821   - <property name="styleSheet">
822   - <string notr="true">QSlider::sub-page { background-image: url(:/images/slider/humidity.png); }</string>
823   - </property>
824   - <property name="maximum">
825   - <number>100</number>
826   - </property>
827   - <property name="orientation">
828   - <enum>Qt::Horizontal</enum>
829   - </property>
830   - </widget>
831 732 <widget class="QPushButton" name="humidityButton">
832 733 <property name="geometry">
833 734 <rect>
... ... @@ -966,6 +867,46 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); }
966 867 <string notr="true">QPushButton { background-image: url(:/images/manual_button/fan_4.png); }</string>
967 868 </property>
968 869 </widget>
  870 + <widget class="Slider" name="tempSlider" native="true">
  871 + <property name="geometry">
  872 + <rect>
  873 + <x>185</x>
  874 + <y>875</y>
  875 + <width>666</width>
  876 + <height>140</height>
  877 + </rect>
  878 + </property>
  879 + </widget>
  880 + <widget class="Slider" name="interTempSlider" native="true">
  881 + <property name="geometry">
  882 + <rect>
  883 + <x>185</x>
  884 + <y>1175</y>
  885 + <width>666</width>
  886 + <height>140</height>
  887 + </rect>
  888 + </property>
  889 + </widget>
  890 + <widget class="Slider" name="timeSlider" native="true">
  891 + <property name="geometry">
  892 + <rect>
  893 + <x>185</x>
  894 + <y>1025</y>
  895 + <width>666</width>
  896 + <height>140</height>
  897 + </rect>
  898 + </property>
  899 + </widget>
  900 + <widget class="Slider" name="humiditySlider" native="true">
  901 + <property name="geometry">
  902 + <rect>
  903 + <x>185</x>
  904 + <y>725</y>
  905 + <width>666</width>
  906 + <height>140</height>
  907 + </rect>
  908 + </property>
  909 + </widget>
969 910 </widget>
970 911 </widget>
971 912 <customwidgets>
... ... @@ -985,6 +926,12 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); }
985 926 <extends>QLabel</extends>
986 927 <header>animatedimagebox.h</header>
987 928 </customwidget>
  929 + <customwidget>
  930 + <class>Slider</class>
  931 + <extends>QWidget</extends>
  932 + <header>slider.h</header>
  933 + <container>1</container>
  934 + </customwidget>
988 935 </customwidgets>
989 936 <resources>
990 937 <include location="resources.qrc"/>
... ...
app/gui/oven_control/slider.cpp
... ... @@ -116,6 +116,8 @@ void Slider::mouseMoveEvent(QMouseEvent *event)
116 116 void Slider::mousePressEvent(QMouseEvent */*event*/)
117 117 {
118 118 isSliderDown_ = true;
  119 +
  120 + emit sliderPressed();
119 121 }
120 122  
121 123 void Slider::mouseReleaseEvent(QMouseEvent */*event*/)
... ... @@ -125,6 +127,8 @@ void Slider::mouseReleaseEvent(QMouseEvent */*event*/)
125 127 if (sliderPosition_ == value_)
126 128 return;
127 129  
  130 + emit sliderReleased();
  131 +
128 132 setValue(sliderPosition_);
129 133 }
130 134  
... ...
app/gui/oven_control/slider.h
... ... @@ -66,6 +66,8 @@ private:
66 66 signals:
67 67 void sliderMoved(int value);
68 68 void valueChanged(int value);
  69 + void sliderPressed();
  70 + void sliderReleased();
69 71  
70 72 public slots:
71 73 void setValue(int value);
... ...