#include "preheatpopup.h" #include "ui_preheatpopup.h" #include #include "stringer.h" PreheatPopup::PreheatPopup(QWidget *parent, Oven *oven) : QWidget(parent), ui(new Ui::PreheatPopup), oven(oven), showingCurrentHumidity(false), showingCurrentTemp(false) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); connect(oven, SIGNAL(changed(Oven*)), SLOT(onOvenChanged())); showCurrentHumidityTimer.setSingleShot(true); showCurrentHumidityTimer.setInterval(1000); connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity())); showCurrentTempTimer.setSingleShot(true); showCurrentTempTimer.setInterval(1000); connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); ui->humidityGauge->setMaximum(100); ui->heatGauge->setMaximum(oven->maxTemp()); ui->preheatGauge->setMaximum(oven->temp()); ui->preheatGauge->setMinimum(oven->currentTemp()); ui->preheatGauge->setValue(oven->currentTemp()); ui->infoButton->hide(); updateView(); start(); ui->background->setFocus(); } PreheatPopup::~PreheatPopup() { delete ui; } void PreheatPopup::keyReleaseEvent(QKeyEvent *event) { switch (event->key()) { case 0x01000032: // Turn left break; case 0x01000031: // Push stop(); close(); break; case 0x01000030: // Turn right break; } } void PreheatPopup::updateView() { ui->timeLabel->setText(Stringer::remainingTime(oven->msecs(), Stringer::fontSize14)); int curInterTemp = oven->currentInterTemp(); if (oven->interTempEnabled()) ui->interTempLabel->setText(Stringer::temperature(curInterTemp, oven->interTemp(), Stringer::fontSize14)); else ui->interTempLabel->setText(Stringer::temperature(curInterTemp, Stringer::fontSize14)); int humidity; if (showingCurrentHumidity) humidity = oven->currentHumidity(); else humidity = oven->humidity(); int temp; if (showingCurrentTemp) temp = oven->currentTemp(); else temp = oven->temp(); ui->humidityLabel->setText(QString().sprintf("%d%%", humidity)); ui->humidityGauge->setValue(humidity); ui->heatLabel->setText(Stringer::temperature(temp)); ui->heatGauge->setValue(temp); ui->preheatGauge->setValue(oven->currentTemp()); } void PreheatPopup::start() { oven->startPreheating(); } void PreheatPopup::stop() { oven->stopPreheating(); } void PreheatPopup::showCurrentHumidity() { showingCurrentHumidity = true; updateView(); } void PreheatPopup::showCurrentTemp() { showingCurrentTemp = true; updateView(); } void PreheatPopup::onOvenChanged() { if (oven->currentTemp() >= oven->temp()) { stop(); close(); } else updateView(); } void PreheatPopup::on_closeButton_clicked() { stop(); close(); } void PreheatPopup::on_closeButton_2_clicked() { stop(); close(); } void PreheatPopup::on_humidityGaugeButton_pressed() { showCurrentHumidityTimer.start(); } void PreheatPopup::on_humidityGaugeButton_released() { showCurrentHumidityTimer.stop(); showingCurrentHumidity = false; updateView(); } void PreheatPopup::on_heatGaugeButton_pressed() { showCurrentTempTimer.start(); } void PreheatPopup::on_heatGaugeButton_released() { showCurrentTempTimer.stop(); showingCurrentTemp = false; updateView(); }