Commit 2bfd3a050666e56dcafafeda6c64f8132091612c
1 parent
9374091867
Exists in
master
and in
2 other branches
환경 설정 대응
- 온도 단위 반영 - 잔여 시간 형식 반영
Showing
16 changed files
with
369 additions
and
170 deletions
Show diff stats
app/gui/oven_control/autocook.cpp
| ... | ... | @@ -521,3 +521,31 @@ int AutoCook::remainingTime() |
| 521 | 521 | return t / 1000; |
| 522 | 522 | } |
| 523 | 523 | } |
| 524 | + | |
| 525 | +int AutoCook::msecs() | |
| 526 | +{ | |
| 527 | + if (done_) | |
| 528 | + { | |
| 529 | + return 0; | |
| 530 | + } | |
| 531 | + else if (checkingCoreTemp && currentStepIndex + 1 >= cook.steps.size()) | |
| 532 | + { | |
| 533 | + CookStep &step = cook.steps[cook.steps.size() - 1]; | |
| 534 | + int t = step.time; | |
| 535 | + if (!doorOpened) | |
| 536 | + t -= lastCoreTempIncreasedTime.elapsed(); | |
| 537 | + | |
| 538 | + return t; | |
| 539 | + } | |
| 540 | + else | |
| 541 | + { | |
| 542 | + int t = 0; | |
| 543 | + for (int i = currentStepIndex; i < cook.steps.size(); i++) | |
| 544 | + t += cook.steps[i].time; | |
| 545 | + | |
| 546 | + if (!doorOpened && Define::classify(cook.steps[currentStepIndex].type) == Define::CookClass) | |
| 547 | + t -= stepStartTime.elapsed(); | |
| 548 | + | |
| 549 | + return t; | |
| 550 | + } | |
| 551 | +} | ... | ... |
app/gui/oven_control/autocook.h
app/gui/oven_control/autocookconfigwindow.cpp
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | |
| 4 | 4 | #include "autocookwindow.h" |
| 5 | 5 | #include "confirmpopup.h" |
| 6 | +#include "stringer.h" | |
| 6 | 7 | #include "favoritenamepopup.h" |
| 7 | 8 | |
| 8 | 9 | AutoCookConfigWindow::AutoCookConfigWindow(QWidget *parent, Cook cook) : |
| ... | ... | @@ -129,10 +130,6 @@ void AutoCookConfigWindow::setupUi() |
| 129 | 130 | break; |
| 130 | 131 | } |
| 131 | 132 | |
| 132 | -// cw.slider->style()->unpolish(cw.slider); | |
| 133 | -// cw.slider->style()->polish(cw.slider); | |
| 134 | -// cw.slider->update(); | |
| 135 | - | |
| 136 | 133 | connect(cw.slider, SIGNAL(valueChanged(int)), SLOT(updateConfig())); |
| 137 | 134 | } |
| 138 | 135 | } |
| ... | ... | @@ -153,36 +150,10 @@ void AutoCookConfigWindow::updateView() |
| 153 | 150 | switch (config.type) |
| 154 | 151 | { |
| 155 | 152 | case Define::Time: |
| 156 | - { | |
| 157 | - int time = cook.time(); | |
| 158 | - if (time >= 3600) | |
| 159 | - cw.current->setText(QString().sprintf( | |
| 160 | - "%d" | |
| 161 | - "<span style=\"font-size:11pt;\">시간</span>" | |
| 162 | - " %02d" | |
| 163 | - "<span style=\"font-size:11pt;\">분</span>", | |
| 164 | - time / 3600, | |
| 165 | - (time % 3600) / 60)); | |
| 166 | - else if (time >= 60) | |
| 167 | - cw.current->setText(QString().sprintf( | |
| 168 | - "%d" | |
| 169 | - "<span style=\"font-size:11pt;\">분</span>" | |
| 170 | - " %02d" | |
| 171 | - "<span style=\"font-size:11pt;\">초</span>", | |
| 172 | - time / 60, | |
| 173 | - time % 60)); | |
| 174 | - else | |
| 175 | - cw.current->setText(QString().sprintf( | |
| 176 | - "%d" | |
| 177 | - "<span style=\"font-size:11pt;\">초</span>", | |
| 178 | - time)); | |
| 153 | + cw.current->setText(Stringer::remainingTime(cook.time() * 1000, Stringer::fontSize14)); | |
| 179 | 154 | break; |
| 180 | - } | |
| 181 | 155 | case Define::BurnDegree: |
| 182 | - cw.current->setText(QString().sprintf( | |
| 183 | - "%d" | |
| 184 | - "<span style=\"font-size:11pt;\">℃</span>", | |
| 185 | - cook.coreTemp())); | |
| 156 | + cw.current->setText(Stringer::temperature(cook.coreTemp(), Stringer::fontSize14)); | |
| 186 | 157 | break; |
| 187 | 158 | default: |
| 188 | 159 | cw.current->setText(QString().sprintf( | ... | ... |
app/gui/oven_control/autocooksettingwidget.cpp
| 1 | 1 | #include "autocooksettingwidget.h" |
| 2 | 2 | #include "ui_autocooksettingwidget.h" |
| 3 | 3 | |
| 4 | +#include "stringer.h" | |
| 4 | 5 | |
| 5 | 6 | AutoCookSettingWidget::AutoCookSettingWidget(AutoCookSetting setting, QWidget *parent) : |
| 6 | 7 | QWidget(parent), |
| ... | ... | @@ -116,36 +117,10 @@ void AutoCookSettingWidget::setupUi(Cook cook) |
| 116 | 117 | switch (config.type) |
| 117 | 118 | { |
| 118 | 119 | case Define::Time: |
| 119 | - { | |
| 120 | - int time = cook.time(); | |
| 121 | - if (time >= 3600) | |
| 122 | - cw.current->setText(QString().sprintf( | |
| 123 | - "%d" | |
| 124 | - "<span style=\"font-size:11pt;\">시간</span>" | |
| 125 | - " %02d" | |
| 126 | - "<span style=\"font-size:11pt;\">분</span>", | |
| 127 | - time / 3600, | |
| 128 | - (time % 3600) / 60)); | |
| 129 | - else if (time >= 60) | |
| 130 | - cw.current->setText(QString().sprintf( | |
| 131 | - "%d" | |
| 132 | - "<span style=\"font-size:11pt;\">분</span>" | |
| 133 | - " %02d" | |
| 134 | - "<span style=\"font-size:11pt;\">초</span>", | |
| 135 | - time / 60, | |
| 136 | - time % 60)); | |
| 137 | - else | |
| 138 | - cw.current->setText(QString().sprintf( | |
| 139 | - "%d" | |
| 140 | - "<span style=\"font-size:11pt;\">초</span>", | |
| 141 | - time)); | |
| 120 | + cw.current->setText(Stringer::remainingTime(cook.time() * 1000, Stringer::fontSize14)); | |
| 142 | 121 | break; |
| 143 | - } | |
| 144 | 122 | case Define::BurnDegree: |
| 145 | - cw.current->setText(QString().sprintf( | |
| 146 | - "%d" | |
| 147 | - "<span style=\"font-size:11pt;\">℃</span>", | |
| 148 | - cook.coreTemp())); | |
| 123 | + cw.current->setText(Stringer::temperature(cook.coreTemp(), Stringer::fontSize14)); | |
| 149 | 124 | break; |
| 150 | 125 | default: |
| 151 | 126 | cw.current->setText(QString().sprintf( | ... | ... |
app/gui/oven_control/autocookwindow.cpp
| ... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 | #include "cookhistory.h" |
| 6 | 6 | #include "confirmpopup.h" |
| 7 | 7 | #include "favoritenamepopup.h" |
| 8 | +#include "stringer.h" | |
| 8 | 9 | |
| 9 | 10 | AutoCookWindow::AutoCookWindow(QWidget *parent, Cook cook) : |
| 10 | 11 | QMainWindow(parent), |
| ... | ... | @@ -53,6 +54,9 @@ AutoCookWindow::AutoCookWindow(QWidget *parent, Cook cook) : |
| 53 | 54 | setting.configs[i] = cook.configs[i].current; |
| 54 | 55 | |
| 55 | 56 | CookHistory::record(setting); |
| 57 | + | |
| 58 | + connect(&updateViewTimer, SIGNAL(timeout()), SLOT(updateView())); | |
| 59 | + updateViewTimer.start(100); | |
| 56 | 60 | } |
| 57 | 61 | |
| 58 | 62 | AutoCookWindow::~AutoCookWindow() |
| ... | ... | @@ -189,48 +193,20 @@ void AutoCookWindow::updateView() |
| 189 | 193 | { |
| 190 | 194 | Oven *oven = Oven::getInstance(); |
| 191 | 195 | |
| 192 | - QString spanFontSize11("<span style=\"font-size:11pt\">%1</span>"); | |
| 193 | - QString spanFontSize9("<span style=\"font-size:9pt\">%1</span>"); | |
| 194 | - | |
| 195 | - int remainingTime = qMax(0, autocook.remainingTime()); | |
| 196 | - if (remainingTime != lastViewTime) | |
| 196 | + if (!autocook.done()) | |
| 197 | 197 | { |
| 198 | - lastViewTime = remainingTime; | |
| 199 | - | |
| 200 | - QString hour = spanFontSize11.arg("시간"); | |
| 201 | - QString min = spanFontSize11.arg("분"); | |
| 202 | - QString sec = spanFontSize11.arg("초"); | |
| 203 | - | |
| 204 | - if (remainingTime >= 3600) | |
| 205 | - ui->timeLabel->setText(QString("%1%2 %3%4") | |
| 206 | - .arg(remainingTime / 3600) | |
| 207 | - .arg(hour) | |
| 208 | - .arg((remainingTime % 3600) / 60, 2, 10, QLatin1Char('0')) | |
| 209 | - .arg(min)); | |
| 210 | - else if (remainingTime >= 60) | |
| 211 | - ui->timeLabel->setText(QString("%1%2 %3%4") | |
| 212 | - .arg(remainingTime / 60) | |
| 213 | - .arg(min) | |
| 214 | - .arg(remainingTime % 60, 2, 10, QLatin1Char('0')) | |
| 215 | - .arg(sec)); | |
| 216 | - else | |
| 217 | - ui->timeLabel->setText(QString("%1%2") | |
| 218 | - .arg(remainingTime) | |
| 219 | - .arg(sec)); | |
| 198 | + int remainingTime = qMax(0, autocook.msecs()); | |
| 199 | + ui->timeLabel->setText(Stringer::remainingTime(remainingTime)); | |
| 220 | 200 | } |
| 221 | 201 | |
| 222 | 202 | int coreTemp = oven->currentInterTemp(); |
| 223 | 203 | if (coreTemp != lastViewCoreTemp) |
| 224 | 204 | { |
| 225 | 205 | lastViewCoreTemp = coreTemp; |
| 226 | - | |
| 227 | - QString coreTempLabel = QString::number(coreTemp); | |
| 228 | 206 | if (cook.isCoreTempValid()) |
| 229 | - coreTempLabel += spanFontSize11.arg("℃ / " + QString::number(cook.coreTemp())) + spanFontSize9.arg("℃"); | |
| 207 | + ui->interTempLabel->setText(Stringer::temperature(coreTemp, cook.coreTemp(), Stringer::fontSize14)); | |
| 230 | 208 | else |
| 231 | - coreTempLabel += spanFontSize11.arg("℃"); | |
| 232 | - | |
| 233 | - ui->interTempLabel->setText(coreTempLabel); | |
| 209 | + ui->interTempLabel->setText(Stringer::temperature(coreTemp, Stringer::fontSize14)); | |
| 234 | 210 | } |
| 235 | 211 | |
| 236 | 212 | if (autocook.done()) |
| ... | ... | @@ -523,7 +499,7 @@ void AutoCookWindow::updateView() |
| 523 | 499 | if (temp != lastViewTemp) |
| 524 | 500 | { |
| 525 | 501 | lastViewTemp = temp; |
| 526 | - ui->heatLabel->setText(QString("%1℃").arg(temp)); | |
| 502 | + ui->heatLabel->setText(Stringer::temperature(temp)); | |
| 527 | 503 | ui->heatGauge->setValue(temp); |
| 528 | 504 | } |
| 529 | 505 | } | ... | ... |
app/gui/oven_control/autocookwindow.h
app/gui/oven_control/cooldownpopup.cpp
| 1 | 1 | #include "cooldownpopup.h" |
| 2 | 2 | #include "ui_cooldownpopup.h" |
| 3 | 3 | |
| 4 | +#include "stringer.h" | |
| 5 | + | |
| 4 | 6 | CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : |
| 5 | 7 | QWidget(parent), |
| 6 | 8 | ui(new Ui::CooldownPopup), |
| ... | ... | @@ -11,6 +13,9 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : |
| 11 | 13 | |
| 12 | 14 | setAttribute(Qt::WA_DeleteOnClose); |
| 13 | 15 | |
| 16 | + lastDisplayedFanLevel = -1; | |
| 17 | + lastDisplayedHumidification = !oven->humidification(); | |
| 18 | + | |
| 14 | 19 | ui->openDoorAnimation->load(":/images/animation/door_big_01.png"); |
| 15 | 20 | ui->openDoorAnimation->load(":/images/animation/door_big_02.png"); |
| 16 | 21 | ui->openDoorAnimation->load(":/images/animation/door_big_03.png"); |
| ... | ... | @@ -86,31 +91,41 @@ void CooldownPopup::updateView() |
| 86 | 91 | else |
| 87 | 92 | temp = ui->tempSlider->value(); |
| 88 | 93 | |
| 89 | - ui->tempCurrentLabel->setText(QString("%1<span style=\"font-size:11pt;\">℃</span>").arg(temp)); | |
| 94 | + ui->tempCurrentLabel->setText(Stringer::temperature(temp, Stringer::fontSize14)); | |
| 90 | 95 | |
| 91 | - switch (expectingFanLevel) | |
| 96 | + if (lastDisplayedFanLevel != expectingFanLevel) | |
| 92 | 97 | { |
| 93 | - case 1: | |
| 94 | - ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan1.png);"); | |
| 95 | - break; | |
| 96 | - case 2: | |
| 97 | - ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan2.png);"); | |
| 98 | - break; | |
| 99 | - case 3: | |
| 100 | - ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan3.png);"); | |
| 101 | - break; | |
| 102 | - case 4: | |
| 103 | - ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan4.png);"); | |
| 104 | - break; | |
| 105 | - case 5: | |
| 106 | - ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan5.png);"); | |
| 107 | - break; | |
| 98 | + lastDisplayedFanLevel = expectingFanLevel; | |
| 99 | + | |
| 100 | + switch (expectingFanLevel) | |
| 101 | + { | |
| 102 | + case 1: | |
| 103 | + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan1.png);"); | |
| 104 | + break; | |
| 105 | + case 2: | |
| 106 | + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan2.png);"); | |
| 107 | + break; | |
| 108 | + case 3: | |
| 109 | + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan3.png);"); | |
| 110 | + break; | |
| 111 | + case 4: | |
| 112 | + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan4.png);"); | |
| 113 | + break; | |
| 114 | + case 5: | |
| 115 | + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan5.png);"); | |
| 116 | + break; | |
| 117 | + } | |
| 108 | 118 | } |
| 109 | 119 | |
| 110 | - if (oven->humidification()) | |
| 111 | - ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle_ov.png);"); | |
| 112 | - else | |
| 113 | - ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle.png);"); | |
| 120 | + if (lastDisplayedHumidification != oven->humidification()) | |
| 121 | + { | |
| 122 | + lastDisplayedHumidification = oven->humidification(); | |
| 123 | + | |
| 124 | + if (oven->humidification()) | |
| 125 | + ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle_ov.png);"); | |
| 126 | + else | |
| 127 | + ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle.png);"); | |
| 128 | + } | |
| 114 | 129 | |
| 115 | 130 | if (started && !oven->door()) |
| 116 | 131 | ui->openDoorWidget->show(); | ... | ... |
app/gui/oven_control/cooldownpopup.h
app/gui/oven_control/manualcooksettingwidget.cpp
| 1 | 1 | #include "manualcooksettingwidget.h" |
| 2 | 2 | #include "ui_manualcooksettingwidget.h" |
| 3 | 3 | |
| 4 | +#include "stringer.h" | |
| 5 | + | |
| 4 | 6 | ManualCookSettingWidget::ManualCookSettingWidget(ManualCookSetting setting, QWidget *parent) : |
| 5 | 7 | QWidget(parent), |
| 6 | 8 | ui(new Ui::ManualCookSettingWidget) |
| ... | ... | @@ -49,25 +51,13 @@ void ManualCookSettingWidget::setHumidity(int percentage) |
| 49 | 51 | void ManualCookSettingWidget::setTemp(int celsius) |
| 50 | 52 | { |
| 51 | 53 | ui->tempSlider->setValue(celsius); |
| 52 | - ui->tempLabel->setText(QString("%1<span style=\"font-size:11pt;\">℃</span>").arg(celsius)); | |
| 54 | + ui->tempLabel->setText(Stringer::temperature(celsius, Stringer::fontSize14)); | |
| 53 | 55 | } |
| 54 | 56 | |
| 55 | 57 | void ManualCookSettingWidget::setTime(int secs) |
| 56 | 58 | { |
| 57 | 59 | ui->timeSlider->setValue(secs); |
| 58 | - | |
| 59 | - if (secs >= 3600) | |
| 60 | - ui->timeLabel->setText( | |
| 61 | - QString("%1<span style=\"font-size:11pt;\">시간</span> %2<span style=\"font-size:11pt;\">분</span>") | |
| 62 | - .arg(secs / 3600) | |
| 63 | - .arg((secs % 3600) / 60, 2, 10, QLatin1Char('0'))); | |
| 64 | - else if (secs >= 60) | |
| 65 | - ui->timeLabel->setText( | |
| 66 | - QString("%1<span style=\"font-size:11pt;\">분</span> %2<span style=\"font-size:11pt;\">초</span>") | |
| 67 | - .arg(secs / 60) | |
| 68 | - .arg(secs % 60, 2, 10, QLatin1Char('0'))); | |
| 69 | - else | |
| 70 | - ui->timeLabel->setText(QString("%1<span style=\"font-size:11pt;\">초</span>").arg(secs)); | |
| 60 | + ui->timeLabel->setText(Stringer::remainingTime(secs * 1000, Stringer::fontSize14)); | |
| 71 | 61 | } |
| 72 | 62 | |
| 73 | 63 | void ManualCookSettingWidget::setCoreTempEnabled(bool enabled) |
| ... | ... | @@ -76,16 +66,16 @@ void ManualCookSettingWidget::setCoreTempEnabled(bool enabled) |
| 76 | 66 | ui->coreTempSlider->setEnabled(enabled); |
| 77 | 67 | |
| 78 | 68 | if (enabled) |
| 79 | - ui->coreTempLabel->setText(QString("%1<span style=\"font-size:11pt;\">℃</span>").arg(ui->coreTempSlider->value())); | |
| 69 | + ui->coreTempLabel->setText(Stringer::temperature(ui->coreTempSlider->value(), Stringer::fontSize14)); | |
| 80 | 70 | else |
| 81 | - ui->coreTempLabel->setText("<span style=\"font-size:11pt;\">℃</span>"); | |
| 71 | + ui->coreTempLabel->setText(Stringer::unusedTemperature(Stringer::fontSize14)); | |
| 82 | 72 | } |
| 83 | 73 | |
| 84 | 74 | void ManualCookSettingWidget::setCoreTemp(int celsius) |
| 85 | 75 | { |
| 86 | 76 | ui->coreTempSlider->setValue(celsius); |
| 87 | 77 | if (ui->coreTempSlider->isEnabled()) |
| 88 | - ui->coreTempLabel->setText(QString("%1<span style=\"font-size:11pt;\">℃</span>").arg(celsius)); | |
| 78 | + ui->coreTempLabel->setText(Stringer::temperature(celsius, Stringer::fontSize14)); | |
| 89 | 79 | } |
| 90 | 80 | |
| 91 | 81 | void ManualCookSettingWidget::setFan(int level) | ... | ... |
app/gui/oven_control/manualcookwindow.cpp
| ... | ... | @@ -10,9 +10,34 @@ |
| 10 | 10 | #include "cookhistory.h" |
| 11 | 11 | #include "favoritenamepopup.h" |
| 12 | 12 | #include "confirmpopup.h" |
| 13 | +#include "stringer.h" | |
| 14 | +#include "config.h" | |
| 13 | 15 | |
| 14 | 16 | #include <QTime> |
| 15 | 17 | |
| 18 | +namespace { | |
| 19 | + | |
| 20 | +enum TemperatureFormat { Celsius, Fahrenheit }; | |
| 21 | +TemperatureFormat temperatureFormat() | |
| 22 | +{ | |
| 23 | + Define::config_item item = Config::getInstance()->getConfigValue(Define::config_temptype); | |
| 24 | + switch (item.d32) | |
| 25 | + { | |
| 26 | + case Define::temp_type_f: | |
| 27 | + return Fahrenheit; | |
| 28 | + case Define::temp_type_c: | |
| 29 | + default: | |
| 30 | + return Celsius; | |
| 31 | + } | |
| 32 | +} | |
| 33 | + | |
| 34 | +int toFahrenheit(int celsius) | |
| 35 | +{ | |
| 36 | + return celsius * 1.8 + 32; | |
| 37 | +} | |
| 38 | + | |
| 39 | +} | |
| 40 | + | |
| 16 | 41 | ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : |
| 17 | 42 | QMainWindow(parent), |
| 18 | 43 | ui(new Ui::ManualCookWindow) |
| ... | ... | @@ -66,6 +91,23 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : |
| 66 | 91 | oven->setDefault(mode); |
| 67 | 92 | |
| 68 | 93 | setupAnimationTimer->start(0); |
| 94 | + | |
| 95 | + checkTimeTimer.start(); | |
| 96 | + | |
| 97 | + switch (temperatureFormat()) | |
| 98 | + { | |
| 99 | + case Fahrenheit: | |
| 100 | + ui->steamLabel_12->setText("℉"); | |
| 101 | + ui->steamLabel_13->setText("℉"); | |
| 102 | + break; | |
| 103 | + case Celsius: | |
| 104 | + ui->steamLabel_12->setText("℃"); | |
| 105 | + ui->steamLabel_13->setText("℃"); | |
| 106 | + break; | |
| 107 | + default: | |
| 108 | + ui->steamLabel_12->hide(); | |
| 109 | + ui->steamLabel_13->hide(); | |
| 110 | + } | |
| 69 | 111 | } |
| 70 | 112 | |
| 71 | 113 | ManualCookWindow::ManualCookWindow(QWidget *parent, ManualCookSetting setting) |
| ... | ... | @@ -104,7 +146,7 @@ void ManualCookWindow::setupAnimation() |
| 104 | 146 | |
| 105 | 147 | void ManualCookWindow::checkTime() |
| 106 | 148 | { |
| 107 | - if (oven->cooking() && !ui->timeSlider->isSliderDown()) | |
| 149 | + if (!ui->timeSlider->isSliderDown()) | |
| 108 | 150 | { |
| 109 | 151 | bool old = ui->timeSlider->blockSignals(true); |
| 110 | 152 | ui->timeSlider->setSliderPosition(oven->time()); |
| ... | ... | @@ -160,20 +202,15 @@ void ManualCookWindow::updateLabels() |
| 160 | 202 | else |
| 161 | 203 | temp = oven->temp(); |
| 162 | 204 | |
| 163 | - ui->tempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", temp)); | |
| 205 | + ui->tempLabel->setText(Stringer::temperature(temp, Stringer::fontSize14)); | |
| 164 | 206 | |
| 165 | - int time; | |
| 207 | + int msecs; | |
| 166 | 208 | if (ui->timeSlider->isSliderDown()) |
| 167 | - time = ui->timeSlider->sliderPosition(); | |
| 209 | + msecs = ui->timeSlider->sliderPosition() * 1000; | |
| 168 | 210 | else |
| 169 | - time = oven->time(); | |
| 211 | + msecs = oven->msecs(); | |
| 170 | 212 | |
| 171 | - if (time >= 3600) | |
| 172 | - ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">시간</span> %02d<span style=\"font-size:11pt;\">분</span>", time / 3600, (time % 3600) / 60)); | |
| 173 | - else if (time >= 60) | |
| 174 | - ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">분</span> %02d<span style=\"font-size:11pt;\">초</span>", time / 60, time % 60)); | |
| 175 | - else | |
| 176 | - ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">초</span>", time)); | |
| 213 | + ui->timeLabel->setText(Stringer::remainingTime(msecs, Stringer::fontSize14)); | |
| 177 | 214 | |
| 178 | 215 | if (oven->interTempEnabled()) |
| 179 | 216 | { |
| ... | ... | @@ -183,23 +220,29 @@ void ManualCookWindow::updateLabels() |
| 183 | 220 | else |
| 184 | 221 | interTemp = oven->interTemp(); |
| 185 | 222 | |
| 186 | - ui->interTempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", interTemp)); | |
| 223 | + ui->interTempLabel->setText(Stringer::temperature(interTemp, Stringer::fontSize14)); | |
| 187 | 224 | } |
| 188 | 225 | else |
| 189 | - ui->interTempLabel->setText("<span style=\"font-size:11pt;\">℃</span>"); | |
| 226 | + ui->interTempLabel->setText(Stringer::unusedTemperature(Stringer::fontSize14)); | |
| 190 | 227 | |
| 191 | 228 | int innerInterTemp = ui->innerInterTempSlider->sliderPosition(); |
| 192 | -// if (ui->innerInterTempSlider->isSliderDown()) | |
| 193 | -// innerInterTemp = ui->innerInterTempSlider->sliderPosition(); | |
| 194 | -// else | |
| 195 | -// innerInterTemp = oven->interTemp(); | |
| 196 | - | |
| 197 | - ui->innerInterTempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", innerInterTemp)); | |
| 229 | + ui->innerInterTempLabel->setText(Stringer::temperature(innerInterTemp, Stringer::fontSize14)); | |
| 198 | 230 | |
| 199 | 231 | ui->curHumidityLabel->setText(buf.sprintf("%d", oven->currentHumidity())); |
| 200 | 232 | ui->targetHumidityLabel->setText(buf.sprintf("%d", oven->humidity())); |
| 201 | - ui->curTempLabel->setText(buf.sprintf("%d", oven->currentTemp())); | |
| 202 | - ui->curInterTempLabel->setText(buf.sprintf("%d", oven->currentInterTemp())); | |
| 233 | + | |
| 234 | + switch (temperatureFormat()) | |
| 235 | + { | |
| 236 | + case Fahrenheit: | |
| 237 | + ui->curTempLabel->setText(QString::number(toFahrenheit(oven->currentTemp()))); | |
| 238 | + ui->curInterTempLabel->setText(QString::number(toFahrenheit(oven->currentInterTemp()))); | |
| 239 | + break; | |
| 240 | + case Celsius: | |
| 241 | + default: | |
| 242 | + ui->curTempLabel->setText(QString::number(oven->currentTemp())); | |
| 243 | + ui->curInterTempLabel->setText(QString::number(oven->currentInterTemp())); | |
| 244 | + break; | |
| 245 | + } | |
| 203 | 246 | } |
| 204 | 247 | |
| 205 | 248 | void ManualCookWindow::onOvenUpdated(Oven *oven) |
| ... | ... | @@ -339,7 +382,6 @@ void ManualCookWindow::start() |
| 339 | 382 | startCookingTimer.stop(); |
| 340 | 383 | |
| 341 | 384 | oven->startCooking(); |
| 342 | - checkTimeTimer.start(); | |
| 343 | 385 | |
| 344 | 386 | ManualCookSetting s; |
| 345 | 387 | s.mode = oven->mode(); |
| ... | ... | @@ -358,7 +400,6 @@ void ManualCookWindow::stop() |
| 358 | 400 | { |
| 359 | 401 | oven->stop(); |
| 360 | 402 | startCookingTimer.stop(); |
| 361 | - checkTimeTimer.stop(); | |
| 362 | 403 | } |
| 363 | 404 | |
| 364 | 405 | void ManualCookWindow::on_steamButton_clicked() | ... | ... |
app/gui/oven_control/oven.cpp
| ... | ... | @@ -268,6 +268,19 @@ bool Oven::isInterTempValid() |
| 268 | 268 | return isInterTempValid_ && interTempValidTime.elapsed() > 3000; |
| 269 | 269 | } |
| 270 | 270 | |
| 271 | +int Oven::msecs() | |
| 272 | +{ | |
| 273 | + int left = cookingTimer.remainingTime(); | |
| 274 | + int interval = cookingTimer.interval(); | |
| 275 | + if (left > interval) | |
| 276 | + left = interval; | |
| 277 | + | |
| 278 | + if (cooking()) | |
| 279 | + return left; | |
| 280 | + | |
| 281 | + return time_ * 1000; | |
| 282 | +} | |
| 283 | + | |
| 271 | 284 | bool Oven::cookingStartable() |
| 272 | 285 | { |
| 273 | 286 | if (/*door() || */cooking() || time() <= 0) | ... | ... |
app/gui/oven_control/oven.h
app/gui/oven_control/oven_control.pro
| ... | ... | @@ -85,7 +85,8 @@ SOURCES += main.cpp\ |
| 85 | 85 | autocooksettingwidget.cpp \ |
| 86 | 86 | favoritenamepopup.cpp \ |
| 87 | 87 | confirmpopup.cpp \ |
| 88 | - usbcheckpopupdlg.cpp | |
| 88 | + usbcheckpopupdlg.cpp \ | |
| 89 | + stringer.cpp | |
| 89 | 90 | |
| 90 | 91 | HEADERS += mainwindow.h \ |
| 91 | 92 | cook.h \ |
| ... | ... | @@ -160,7 +161,8 @@ HEADERS += mainwindow.h \ |
| 160 | 161 | autocooksettingwidget.h \ |
| 161 | 162 | favoritenamepopup.h \ |
| 162 | 163 | confirmpopup.h \ |
| 163 | - usbcheckpopupdlg.h | |
| 164 | + usbcheckpopupdlg.h \ | |
| 165 | + stringer.h | |
| 164 | 166 | |
| 165 | 167 | FORMS += mainwindow.ui \ |
| 166 | 168 | manualcookwindow.ui \ | ... | ... |
app/gui/oven_control/preheatpopup.cpp
| 1 | 1 | #include "preheatpopup.h" |
| 2 | 2 | #include "ui_preheatpopup.h" |
| 3 | 3 | |
| 4 | +#include "stringer.h" | |
| 5 | + | |
| 4 | 6 | PreheatPopup::PreheatPopup(QWidget *parent, Oven *oven) : |
| 5 | 7 | QWidget(parent), |
| 6 | 8 | ui(new Ui::PreheatPopup), |
| ... | ... | @@ -36,22 +38,13 @@ PreheatPopup::~PreheatPopup() |
| 36 | 38 | |
| 37 | 39 | void PreheatPopup::updateView() |
| 38 | 40 | { |
| 39 | - int time = oven->time(); | |
| 40 | - if (time >= 3600) | |
| 41 | - ui->timeLabel->setText(QString().sprintf("%d<span style=\"font-size:11pt;\">시간</span> %02d<span style=\"font-size:11pt;\">분</span>", time / 3600, (time % 3600) / 60)); | |
| 42 | - else if (time >= 60) | |
| 43 | - ui->timeLabel->setText(QString().sprintf("%d<span style=\"font-size:11pt;\">분</span> %02d<span style=\"font-size:11pt;\">초</span>", time / 60, time % 60)); | |
| 44 | - else | |
| 45 | - ui->timeLabel->setText(QString().sprintf("%d<span style=\"font-size:11pt;\">초</span>", time)); | |
| 41 | + ui->timeLabel->setText(Stringer::remainingTime(oven->time(), Stringer::fontSize14)); | |
| 46 | 42 | |
| 47 | 43 | int curInterTemp = oven->currentInterTemp(); |
| 48 | 44 | if (oven->interTempEnabled()) |
| 49 | - { | |
| 50 | - int interTemp = oven->interTemp(); | |
| 51 | - ui->interTempLabel->setText(QString().sprintf("%d<span style=\"font-size:11pt;\">℃ / %d</span><span style=\"font-size:9pt;\">℃</span>", curInterTemp, interTemp)); | |
| 52 | - } | |
| 45 | + ui->interTempLabel->setText(Stringer::temperature(curInterTemp, oven->interTemp(), Stringer::fontSize14)); | |
| 53 | 46 | else |
| 54 | - ui->interTempLabel->setText(QString().sprintf("%d<span style=\"font-size:11pt;\">℃</span>", curInterTemp)); | |
| 47 | + ui->interTempLabel->setText(Stringer::temperature(curInterTemp, Stringer::fontSize14)); | |
| 55 | 48 | |
| 56 | 49 | int humidity; |
| 57 | 50 | if (showingCurrentHumidity) |
| ... | ... | @@ -67,7 +60,7 @@ void PreheatPopup::updateView() |
| 67 | 60 | |
| 68 | 61 | ui->humidityLabel->setText(QString().sprintf("%d%%", humidity)); |
| 69 | 62 | ui->humidityGauge->setValue(humidity); |
| 70 | - ui->heatLabel->setText(QString().sprintf("%d℃", temp)); | |
| 63 | + ui->heatLabel->setText(Stringer::temperature(temp)); | |
| 71 | 64 | ui->heatGauge->setValue(temp); |
| 72 | 65 | |
| 73 | 66 | ui->preheatGauge->setValue(oven->currentTemp()); | ... | ... |
app/gui/oven_control/stringer.cpp
| ... | ... | @@ -0,0 +1,162 @@ |
| 1 | +#include "stringer.h" | |
| 2 | + | |
| 3 | +#include "config.h" | |
| 4 | + | |
| 5 | +namespace { | |
| 6 | +QString heavySpan("<span class=\"heavy\">%1</span>"); | |
| 7 | +QString lightSpan("<span class=\"light\">%1</span>"); | |
| 8 | +QString lightestSpan("<span class=\"lightest\">%1</span>"); | |
| 9 | + | |
| 10 | +enum RemainingTimeFormat { RemainingTime, FinishTime }; | |
| 11 | +RemainingTimeFormat remainingTime() | |
| 12 | +{ | |
| 13 | + Define::config_item item = Config::getInstance()->getConfigValue(Define::config_resttime_format); | |
| 14 | + switch (item.d32) | |
| 15 | + { | |
| 16 | + case Define::rest_time_target: | |
| 17 | + return FinishTime; | |
| 18 | + case Define::rest_time_rest: | |
| 19 | + default: | |
| 20 | + return RemainingTime; | |
| 21 | + } | |
| 22 | +} | |
| 23 | + | |
| 24 | +enum TemperatureFormat { Celsius, Fahrenheit }; | |
| 25 | +TemperatureFormat temperatureFormat() | |
| 26 | +{ | |
| 27 | + Define::config_item item = Config::getInstance()->getConfigValue(Define::config_temptype); | |
| 28 | + switch (item.d32) | |
| 29 | + { | |
| 30 | + case Define::temp_type_f: | |
| 31 | + return Fahrenheit; | |
| 32 | + case Define::temp_type_c: | |
| 33 | + default: | |
| 34 | + return Celsius; | |
| 35 | + } | |
| 36 | +} | |
| 37 | + | |
| 38 | +int toFahrenheit(int celsius) | |
| 39 | +{ | |
| 40 | + return celsius * 1.8 + 32; | |
| 41 | +} | |
| 42 | +} | |
| 43 | + | |
| 44 | +QString Stringer::remainingTime(int msecs) | |
| 45 | +{ | |
| 46 | + switch (::remainingTime()) | |
| 47 | + { | |
| 48 | + case RemainingTime: | |
| 49 | + msecs /= 1000; | |
| 50 | + if (msecs >= 3600) | |
| 51 | + return QString("%1시간 %2분").arg(msecs / 3600).arg((msecs % 3600) / 60, 2, 10, QLatin1Char('0')); | |
| 52 | + if (msecs >= 60) | |
| 53 | + return QString("%1분 %2초").arg(msecs / 60).arg(msecs % 60, 2, 10, QLatin1Char('0')); | |
| 54 | + | |
| 55 | + return QString("%1초").arg(msecs); | |
| 56 | + case FinishTime: | |
| 57 | + return QDateTime::currentDateTime().addMSecs(msecs).toString("HH:mm:ss"); | |
| 58 | + } | |
| 59 | + | |
| 60 | + return QString(); | |
| 61 | +} | |
| 62 | + | |
| 63 | +QString Stringer::remainingTime(int msecs, QString style) | |
| 64 | +{ | |
| 65 | + switch (::remainingTime()) | |
| 66 | + { | |
| 67 | + case RemainingTime: | |
| 68 | + msecs /= 1000; | |
| 69 | + if (msecs >= 3600) | |
| 70 | + { | |
| 71 | + QString hour = heavySpan.arg(msecs / 3600) + lightSpan.arg("시간"); | |
| 72 | + QString min = heavySpan.arg((msecs % 3600) / 60, 2, 10, QLatin1Char('0')) + lightSpan.arg("분"); | |
| 73 | + | |
| 74 | + return style + QString("%1 %2").arg(hour).arg(min); | |
| 75 | + } | |
| 76 | + if (msecs >= 60) | |
| 77 | + { | |
| 78 | + QString min = heavySpan.arg(msecs / 60) + lightSpan.arg("분"); | |
| 79 | + QString sec = heavySpan.arg(msecs % 60, 2, 10, QLatin1Char('0')) + lightSpan.arg("초"); | |
| 80 | + | |
| 81 | + return style + QString("%1 %2").arg(min).arg(sec); | |
| 82 | + } | |
| 83 | + | |
| 84 | + return style + heavySpan.arg(msecs) + lightSpan.arg("초"); | |
| 85 | + case FinishTime: | |
| 86 | + return heavySpan.arg(QDateTime::currentDateTime().addMSecs(msecs).toString("HH:mm:ss")); | |
| 87 | + } | |
| 88 | + | |
| 89 | + return QString(); | |
| 90 | +} | |
| 91 | + | |
| 92 | +QString Stringer::temperature(int celsius) | |
| 93 | +{ | |
| 94 | + switch (temperatureFormat()) | |
| 95 | + { | |
| 96 | + case Fahrenheit: | |
| 97 | + return QString("%1℉").arg(toFahrenheit(celsius)); | |
| 98 | + case Celsius: | |
| 99 | + default: | |
| 100 | + return QString("%1℃").arg(celsius); | |
| 101 | + } | |
| 102 | +} | |
| 103 | + | |
| 104 | +QString Stringer::temperature(int celsius, QString style) | |
| 105 | +{ | |
| 106 | + switch (temperatureFormat()) | |
| 107 | + { | |
| 108 | + case Fahrenheit: | |
| 109 | + return style + heavySpan.arg(toFahrenheit(celsius)) + lightSpan.arg("℉"); | |
| 110 | + case Celsius: | |
| 111 | + default: | |
| 112 | + return style + heavySpan.arg(celsius) + lightSpan.arg("℃"); | |
| 113 | + } | |
| 114 | +} | |
| 115 | + | |
| 116 | +QString Stringer::temperature(int current, int target) | |
| 117 | +{ | |
| 118 | + switch (temperatureFormat()) | |
| 119 | + { | |
| 120 | + case Fahrenheit: | |
| 121 | + return QString("%1℉ / %2℉").arg(toFahrenheit(current)).arg(toFahrenheit(target)); | |
| 122 | + case Celsius: | |
| 123 | + default: | |
| 124 | + return QString("%1℃ / %2℃").arg(current).arg(target); | |
| 125 | + } | |
| 126 | +} | |
| 127 | + | |
| 128 | +QString Stringer::temperature(int current, int target, QString style) | |
| 129 | +{ | |
| 130 | + switch (temperatureFormat()) | |
| 131 | + { | |
| 132 | + case Fahrenheit: | |
| 133 | + return style + heavySpan.arg(toFahrenheit(current)) + lightSpan.arg(QString("℉ / %1").arg(toFahrenheit(target))) + lightestSpan.arg("℉"); | |
| 134 | + case Celsius: | |
| 135 | + default: | |
| 136 | + return style + heavySpan.arg(current) + lightSpan.arg(QString("℃ / %1").arg(target)) + lightestSpan.arg("℃"); | |
| 137 | + } | |
| 138 | +} | |
| 139 | + | |
| 140 | +QString Stringer::unusedTemperature() | |
| 141 | +{ | |
| 142 | + switch (temperatureFormat()) | |
| 143 | + { | |
| 144 | + case Fahrenheit: | |
| 145 | + return QString("℉"); | |
| 146 | + case Celsius: | |
| 147 | + default: | |
| 148 | + return QString("℃"); | |
| 149 | + } | |
| 150 | +} | |
| 151 | + | |
| 152 | +QString Stringer::unusedTemperature(QString style) | |
| 153 | +{ | |
| 154 | + switch (temperatureFormat()) | |
| 155 | + { | |
| 156 | + case Fahrenheit: | |
| 157 | + return style + lightSpan.arg("℉"); | |
| 158 | + case Celsius: | |
| 159 | + default: | |
| 160 | + return style + lightSpan.arg("℃"); | |
| 161 | + } | |
| 162 | +} | ... | ... |
app/gui/oven_control/stringer.h
| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | +#ifndef STRINGER_H | |
| 2 | +#define STRINGER_H | |
| 3 | + | |
| 4 | + | |
| 5 | +#include <QtCore> | |
| 6 | + | |
| 7 | +namespace Stringer { | |
| 8 | +const QString fontSize14("\ | |
| 9 | +<style>\ | |
| 10 | +span { font-size: 14pt; }\ | |
| 11 | +span.heavy { font-size: 16pt; }\ | |
| 12 | +span.light { font-size: 11pt; }\ | |
| 13 | +span.lightest { font-size: 9pt; }\ | |
| 14 | +</style>"); | |
| 15 | + | |
| 16 | +QString remainingTime(int secs); | |
| 17 | +QString remainingTime(int secs, QString style); | |
| 18 | +QString temperature(int celsius); | |
| 19 | +QString temperature(int celsius, QString style); | |
| 20 | +QString temperature(int current, int target); | |
| 21 | +QString temperature(int current, int target, QString style); | |
| 22 | +QString unusedTemperature(); | |
| 23 | +QString unusedTemperature(QString style); | |
| 24 | +} | |
| 25 | + | |
| 26 | +#endif // STRINGER_H | ... | ... |