From a2de3cbfc9877b689d067ec74c67d58e1895294a Mon Sep 17 00:00:00 2001 From: victor Date: Fri, 9 Jun 2017 16:07:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EB=8F=99=20=EC=9A=94=EB=A6=AC?= =?UTF-8?q?=EC=97=90=20=EC=83=88=20=EC=8A=AC=EB=9D=BC=EC=9D=B4=EB=8D=94=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/cooldownpopup.cpp | 7 +- app/gui/oven_control/cooldownpopup.ui | 44 +++----- app/gui/oven_control/coretempsettingpopup.cpp | 13 +++ app/gui/oven_control/coretempsettingpopup.ui | 43 +++---- app/gui/oven_control/main.cpp | 2 + app/gui/oven_control/manualcookwindow.cpp | 84 +++++++++++--- app/gui/oven_control/manualcookwindow.h | 5 + app/gui/oven_control/manualcookwindow.ui | 154 ++++++++------------------ app/gui/oven_control/slider.cpp | 85 +++++++++++--- app/gui/oven_control/slider.h | 6 + 10 files changed, 250 insertions(+), 193 deletions(-) diff --git a/app/gui/oven_control/cooldownpopup.cpp b/app/gui/oven_control/cooldownpopup.cpp index 10da5f4..779d3b8 100644 --- a/app/gui/oven_control/cooldownpopup.cpp +++ b/app/gui/oven_control/cooldownpopup.cpp @@ -28,6 +28,9 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : ui->openDoorAnimation->load(":/images/animation/door_big_09.png"); ui->openDoorAnimation->start(300); + ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png"); + ui->tempSlider->setRange(30, 300); + cookingFanLevel = oven->fan(); expectingFanLevel = oven->maxFan(); started = false; @@ -46,7 +49,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : checkOvenTimer.setInterval(100); connect(&checkOvenTimer, SIGNAL(timeout()), SLOT(checkOven())); - connect(ui->tempSlider, SIGNAL(valueChanged(int)), SLOT(updateView())); + connect(ui->tempSlider, SIGNAL(sliderMoved(int)), SLOT(updateView())); updateView(); @@ -92,6 +95,8 @@ void CooldownPopup::updateView() int temp; if (showingCurrentTemp) temp = oven->currentTemp(); + else if (ui->tempSlider->isSliderDown()) + temp = ui->tempSlider->sliderPosition(); else temp = ui->tempSlider->value(); diff --git a/app/gui/oven_control/cooldownpopup.ui b/app/gui/oven_control/cooldownpopup.ui index e662ad2..cecf6bc 100644 --- a/app/gui/oven_control/cooldownpopup.ui +++ b/app/gui/oven_control/cooldownpopup.ui @@ -279,34 +279,6 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - 196 - 103 - 666 - 33 - - - - 30 - - - 300 - - - 10 - - - true - - - Qt::Horizontal - - - red - - true @@ -371,6 +343,16 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + 196 + 50 + 666 + 140 + + + @@ -434,6 +416,12 @@ QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png QLabel
animatedimagebox.h
+ + Slider + QWidget +
slider.h
+ 1 +
diff --git a/app/gui/oven_control/coretempsettingpopup.cpp b/app/gui/oven_control/coretempsettingpopup.cpp index 8be1c88..1b4558d 100644 --- a/app/gui/oven_control/coretempsettingpopup.cpp +++ b/app/gui/oven_control/coretempsettingpopup.cpp @@ -39,7 +39,20 @@ CoreTempSettingPopup::CoreTempSettingPopup(QWidget *parent) : oven = Oven::getInstance(); connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView())); + ui->coreTempSlider->setSubPixmap(":/images/slider/core.png"); ui->coreTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); + + QList &bigTicks = ui->coreTempSlider->bigTicks; + bigTicks.append(oven->minInterTemp()); + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2); + bigTicks.append(oven->maxInterTemp()); + + QList &ticks = ui->coreTempSlider->ticks; + for (int i = 1; i < 3; i++) + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3); + for (int i = 1; i < 3; i++) + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3); + ui->coreTempSlider->setValue(oven->interTemp()); connect(ui->coreTempSlider, SIGNAL(sliderMoved(int)), SLOT(updateView())); diff --git a/app/gui/oven_control/coretempsettingpopup.ui b/app/gui/oven_control/coretempsettingpopup.ui index 93fe71b..3bfaab1 100644 --- a/app/gui/oven_control/coretempsettingpopup.ui +++ b/app/gui/oven_control/coretempsettingpopup.ui @@ -507,31 +507,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); }Qt::AlignCenter
- - - - 185 - 1012 - 666 - 33 - - - - QSlider::sub-page { background-image: url(:/images/slider/core.png); } - - - 6 - - - 0 - - - true - - - Qt::Horizontal - - true @@ -1020,7 +995,25 @@ QPushButton:pressed { background-image: url(:/images/manual_button/back_ov.png); Qt::AlignBottom|Qt::AlignHCenter + + + + 185 + 954 + 666 + 140 + + + + + + Slider + QWidget +
slider.h
+ 1 +
+
diff --git a/app/gui/oven_control/main.cpp b/app/gui/oven_control/main.cpp index 9bd41b7..a92c331 100644 --- a/app/gui/oven_control/main.cpp +++ b/app/gui/oven_control/main.cpp @@ -22,6 +22,8 @@ int main(int argc, char *argv[]) OvenStatistics::getInstance(oven); Config::getInstance(oven); + oven->setDefault(Define::CombiMode); + // QTranslator* trans = new QTranslator(); // qDebug() << trans->load(":/lang_en.qm"); // QApplication::installTranslator(trans); diff --git a/app/gui/oven_control/manualcookwindow.cpp b/app/gui/oven_control/manualcookwindow.cpp index 3e489ea..b77862d 100644 --- a/app/gui/oven_control/manualcookwindow.cpp +++ b/app/gui/oven_control/manualcookwindow.cpp @@ -35,9 +35,44 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : ui->closeDoorWidget->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); - oven = Oven::getInstance(); + ui->humiditySlider->setSubPixmap(":/images/slider/humidity.png"); + ui->humiditySlider->setRange(0, 100); + ui->humiditySlider->bigTickInterval = 50; + ui->humiditySlider->tickInterval = 10; + + ui->tempSlider->setSubPixmap(":/images/slider/temp.png"); + ui->tempSlider->bigTickInterval = 50; + ui->tempSlider->tickInterval = 10; + + ui->timeSlider->setSubPixmap(":/images/slider/time.png"); + ui->timeSlider->setRange(0, 342); + ui->timeSlider->bigTicks.append(0); + ui->timeSlider->bigTicks.append(180); + ui->timeSlider->bigTicks.append(270); + ui->timeSlider->bigTicks.append(342); + ui->timeSlider->ticks.append(60); + ui->timeSlider->ticks.append(120); + ui->timeSlider->ticks.append(180 + 30); + ui->timeSlider->ticks.append(180 + 60); + ui->timeSlider->ticks.append(270 + 4 * 6); + ui->timeSlider->ticks.append(270 + 4 * 12); + + ui->interTempSlider->setSubPixmap(":/images/slider/core.png"); + + QList &bigTicks = ui->interTempSlider->bigTicks; + bigTicks.append(oven->minInterTemp()); + bigTicks.append(oven->minInterTemp() + (oven->maxInterTemp() - oven->minInterTemp()) / 2); + bigTicks.append(oven->maxInterTemp()); + + QList &ticks = ui->interTempSlider->ticks; + for (int i = 1; i < 3; i++) + ticks.append(bigTicks.at(0) + i * (bigTicks.at(1) - bigTicks.at(0)) / 3); + for (int i = 1; i < 3; i++) + ticks.append(bigTicks.at(1) + i * (bigTicks.at(2) - bigTicks.at(1)) / 3); + + lastViewHumidity = -1; lastViewTemp = -1; lastViewTime = -1; @@ -67,11 +102,8 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : else monitorLevel = 0; - connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*))); - connect(ui->humiditySlider, SIGNAL(valueChanged(int)), oven, SLOT(setHumidity(int))); connect(ui->tempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTemp(int))); - connect(ui->timeSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTime(int))); connect(ui->timeSlider, SIGNAL(valueChanged(int)), &startCookingTimer, SLOT(start())); connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateView())); connect(ui->interTempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setInterTemp(int))); @@ -93,6 +125,7 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) : showCurrentTempTimer.setInterval(2000); connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); + connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*))); oven->setDefault(mode); connect(&updateViewTimer, SIGNAL(timeout()), SLOT(updateView())); @@ -193,18 +226,18 @@ void ManualCookWindow::updateView() { lastViewTemp = temp; - bool old = ui->tempSlider->blockSignals(true); - ui->tempSlider->setRange(oven->minTemp(), oven->maxTemp()); - if (ui->tempSlider->sliderPosition() != temp) - ui->tempSlider->setValue(temp); - ui->tempSlider->blockSignals(old); - ui->tempLabel->setText(Stringer::temperature(temp, Stringer::fontSize14)); } + bool old = ui->tempSlider->blockSignals(true); + ui->tempSlider->setRange(oven->minTemp(), oven->maxTemp()); + if (ui->tempSlider->sliderPosition() != temp) + ui->tempSlider->setValue(temp); + ui->tempSlider->blockSignals(old); + int msecs; if (ui->timeSlider->isSliderDown()) - msecs = ui->timeSlider->sliderPosition() * 1000; + msecs = sliderToTime(ui->timeSlider->sliderPosition()) * 1000; else msecs = oven->msecs(); @@ -213,7 +246,7 @@ void ManualCookWindow::updateView() lastViewTime = msecs; bool old = ui->timeSlider->blockSignals(true); - ui->timeSlider->setSliderPosition(msecs / 1000); + ui->timeSlider->setSliderPosition(timeToSlider(msecs / 1000)); ui->timeSlider->blockSignals(old); ui->timeLabel->setText(Stringer::remainingTime(msecs, Stringer::fontSize14)); @@ -254,8 +287,10 @@ QPushButton:pressed {\ bool old = ui->interTempSlider->blockSignals(true); ui->interTempSlider->setEnabled(interTempEnabled); + ui->interTempSlider->setSubVisible(interTempEnabled); ui->interTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp()); - ui->interTempSlider->setValue(interTemp); + if (ui->interTempSlider->sliderPosition() != interTemp) + ui->interTempSlider->setValue(interTemp); ui->interTempSlider->blockSignals(old); if (interTempEnabled) @@ -791,3 +826,26 @@ void ManualCookWindow::on_helpButton_clicked() { } + +void ManualCookWindow::on_timeSlider_valueChanged() +{ + oven->setTime(sliderToTime(ui->timeSlider->value())); +} + +int ManualCookWindow::sliderToTime(int value) +{ + if (value <= 180) + return value * 60; + if (value <= 270) + return 180 * 60 + (value - 180) * 2 * 60; + return 360 * 60 + (value - 270) * 15 * 60; +} + +int ManualCookWindow::timeToSlider(int secs) +{ + if (secs <= 180 * 60) + return secs / 60; + if (secs <= 360 * 60) + return 180 + (secs - 180 * 60) / 2 / 60; + return 270 + (secs - 360 * 60) / 15 / 60; +} diff --git a/app/gui/oven_control/manualcookwindow.h b/app/gui/oven_control/manualcookwindow.h index 2271e58..e40d206 100644 --- a/app/gui/oven_control/manualcookwindow.h +++ b/app/gui/oven_control/manualcookwindow.h @@ -75,6 +75,8 @@ private slots: void on_washButton_clicked(); void on_helpButton_clicked(); + void on_timeSlider_valueChanged(); + private: Ui::ManualCookWindow *ui; Oven *oven; @@ -112,6 +114,9 @@ private: ManualCookSetting repeatSetting; bool repeat; + + int sliderToTime(int value); + int timeToSlider(int secs); }; #endif // MANUALCOOKWINDOW_H diff --git a/app/gui/oven_control/manualcookwindow.ui b/app/gui/oven_control/manualcookwindow.ui index 26378d7..f395998 100644 --- a/app/gui/oven_control/manualcookwindow.ui +++ b/app/gui/oven_control/manualcookwindow.ui @@ -360,28 +360,6 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }Qt::AlignCenter - - - - 185 - 783 - 666 - 33 - - - - QSlider::sub-page { background-image: url(:/images/slider/humidity.png); } - - - 100 - - - false - - - Qt::Horizontal - - true @@ -589,61 +567,6 @@ QPushButton:pressed { image: url(:/images/slider_icon/temp_ov.png); } Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - - 185 - 1233 - 666 - 33 - - - - QSlider::sub-page { background-image: url(:/images/slider/core.png); } -QSlider::sub-page:disabled { background: #00000000; } -QSlider::handle:disabled { background: #00000000; } - - - 6 - - - 0 - - - false - - - Qt::Horizontal - - - - - - 185 - 933 - 666 - 33 - - - - QSlider::sub-page { background-image: url(:/images/slider/temp.png); } - - - 6 - - - 0 - - - false - - - Qt::Horizontal - - true @@ -708,37 +631,6 @@ QSlider::handle:disabled { background: #00000000; } Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - 185 - 1083 - 666 - 33 - - - - QSlider::sub-page { background-image: url(:/images/slider/time.png); } - - - 86400 - - - 60 - - - 3600 - - - 0 - - - false - - - Qt::Horizontal - - @@ -1236,6 +1128,46 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); } + + + + 185 + 875 + 666 + 140 + + + + + + + 185 + 725 + 666 + 140 + + + + + + + 185 + 1025 + 666 + 140 + + + + + + + 185 + 1175 + 666 + 140 + + + @@ -1255,6 +1187,12 @@ QPushButton:pressed { image: url(:/images/slider_icon/time_ov.png); } QLabel
animatedimagebox.h
+ + Slider + QWidget +
slider.h
+ 1 +
diff --git a/app/gui/oven_control/slider.cpp b/app/gui/oven_control/slider.cpp index 9ef6444..612c70c 100644 --- a/app/gui/oven_control/slider.cpp +++ b/app/gui/oven_control/slider.cpp @@ -5,13 +5,15 @@ #include Slider::Slider(QWidget *parent) : QWidget(parent), - isSliderDown_(false), sliderPosition_(0), value_(0), minimum_(0), maximum_(1) + isSliderDown_(false), + sliderPosition_(0), value_(0), minimum_(0), maximum_(1), + subVisible_(true), + tickInterval(0), bigTickInterval(0) { groove.load(":/images/slider/groove.png"); sub.load(":/images/slider/humidity.png"); handle.load(":/images/slider/handle_big.png"); updatePixmapPosition(); - } void Slider::setSubPixmap(const QPixmap &pixmap) @@ -24,8 +26,21 @@ void Slider::setSubPixmap(const QString &fileName) setSubPixmap(QPixmap(fileName)); } +void Slider::setSubVisible(bool visible) +{ + if (subVisible_ == visible) + return; + + subVisible_ = visible; + + update(); +} + void Slider::setRange(int min, int max) { + if (minimum_ == min && maximum_ == max) + return; + minimum_ = min; maximum_ = max; @@ -33,22 +48,39 @@ void Slider::setRange(int min, int max) setValue(min); else if (value_ > max) setValue(max); + + update(); } void Slider::setMinimum(int min) { + if (minimum_ == min) + return; + minimum_ = min; if (value_ < min) setValue(min); + + update(); } void Slider::setMaximum(int max) { + if (maximum_ == max) + return; + maximum_ = max; if (value_ > max) setValue(max); + + update(); +} + +int Slider::value() +{ + return value_; } bool Slider::isSliderDown() @@ -99,30 +131,47 @@ void Slider::mouseReleaseEvent(QMouseEvent */*event*/) void Slider::paintEvent(QPaintEvent */*event*/) { QPainter painter(this); - painter.drawPixmap(groovePoint, groove); - int subLength = calcSubLength(sliderPosition_); - if (subLength > 0) - painter.drawPixmap(subPoint, sub, QRect(0, 0, subLength, sub.height())); - QPen tickPen(QColor(71, 71, 71)); tickPen.setWidth(2); painter.setPen(tickPen); - foreach (int tick, ticks) - { - int x = subPoint.x() + calcSubLength(tick); - painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); - } - foreach (int tick, bigTicks) + if (tickInterval) + for (int tick = minimum_; tick <= maximum_; tick += tickInterval) + { + int x = subPoint.x() + calcSubLength(tick); + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); + } + else + foreach (int tick, ticks) + { + int x = subPoint.x() + calcSubLength(tick); + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 28); + } + + if (bigTickInterval) + for (int tick = minimum_; tick <= maximum_; tick += bigTickInterval) + { + int x = subPoint.x() + calcSubLength(tick); + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); + } + else + foreach (int tick, bigTicks) + { + int x = subPoint.x() + calcSubLength(tick); + painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); + } + + if (subVisible_) { - int x = subPoint.x() + calcSubLength(tick); - painter.drawLine(x, groovePoint.y() + 22, x, groovePoint.y() + 33); - } + int subLength = calcSubLength(sliderPosition_); + if (subLength > 0) + painter.drawPixmap(subPoint, sub, QRect(0, 0, subLength, sub.height())); - QPoint handlePoint(subPoint.x() + subLength - handle.width() / 2, (height() - handle.height()) / 2); - painter.drawPixmap(handlePoint, handle); + QPoint handlePoint(subPoint.x() + subLength - handle.width() / 2, (height() - handle.height()) / 2); + painter.drawPixmap(handlePoint, handle); + } } void Slider::resizeEvent(QResizeEvent */*event*/) diff --git a/app/gui/oven_control/slider.h b/app/gui/oven_control/slider.h index d7910b7..5256663 100644 --- a/app/gui/oven_control/slider.h +++ b/app/gui/oven_control/slider.h @@ -24,11 +24,14 @@ class Slider : public QWidget QPoint groovePoint; QPoint subPoint; + bool subVisible_; + public: explicit Slider(QWidget *parent = 0); void setSubPixmap(const QPixmap &pixmap); void setSubPixmap(const QString &fileName); + void setSubVisible(bool visible); void setRange(int min, int max); void setMinimum(int min); @@ -45,6 +48,9 @@ public: QList ticks; QList bigTicks; + int tickInterval; + int bigTickInterval; + protected: virtual void mouseMoveEvent(QMouseEvent *event); virtual void mousePressEvent(QMouseEvent *event); -- 2.1.4