From 51175dd1aa7c3b44e66c4391deb4e645cbb11b22 Mon Sep 17 00:00:00 2001 From: victor Date: Thu, 15 Jun 2017 12:05:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=94=EC=BD=94=EB=8D=94=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20-=20=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=98=EB=B0=8D?= =?UTF-8?q?=20=EB=AA=A8=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/cookpanelbutton.cpp | 82 +++++----- app/gui/oven_control/cookpanelbutton.h | 5 +- .../oven_control/programmingautoconfigwindow.cpp | 103 ++++++++++++- app/gui/oven_control/programmingautoconfigwindow.h | 15 ++ .../oven_control/programmingautoconfigwindow.ui | 28 ++++ .../programmingautoselectionwindow.cpp | 22 ++- .../programmingmanualcoretemppopup.cpp | 74 ++++++++- .../oven_control/programmingmanualcoretemppopup.h | 6 + .../oven_control/programmingmanualcoretemppopup.ui | 15 ++ app/gui/oven_control/programmingmanualwindow.cpp | 166 ++++++++++++++++++--- app/gui/oven_control/programmingmanualwindow.h | 11 ++ app/gui/oven_control/programmingmanualwindow.ui | 55 ++++--- .../oven_control/programmingselectionwindow.cpp | 4 + app/gui/oven_control/programmingselectionwindow.ui | 17 ++- app/gui/oven_control/programmingwindow.cpp | 57 +++++-- app/gui/oven_control/programmingwindow.ui | 21 ++- 16 files changed, 578 insertions(+), 103 deletions(-) diff --git a/app/gui/oven_control/cookpanelbutton.cpp b/app/gui/oven_control/cookpanelbutton.cpp index 99fe76b..bfb6a66a 100644 --- a/app/gui/oven_control/cookpanelbutton.cpp +++ b/app/gui/oven_control/cookpanelbutton.cpp @@ -81,6 +81,11 @@ QPushButton *CookPanelButton::bar() return ui->pushButton; } +QPushButton *CookPanelButton::infoButton() +{ + return ui->showInfoButton; +} + QPushButton *CookPanelButton::deleteButton() { return ui->deleteButton; @@ -93,40 +98,45 @@ void CookPanelButton::setEnabled(bool enabled) ui->deleteButton->setEnabled(enabled); } -//void CookPanelButton::keyPressEvent(QKeyEvent *event) -//{ -// switch (event->key()) -// { -// case 0x01000030: // Turn left -// onEncoderLeft(); -// break; -// case 0x01000031: // Push -// pushed = focusWidget(); -// break; -// case 0x01000032: // Turn right -// onEncoderRight(); -// break; -// } -//} - -//void CookPanelButton::keyReleaseEvent(QKeyEvent *event) -//{ -// switch (event->key()) -// { -// case 0x01000030: // Turn left -// onEncoderLeft(); -// break; -// case 0x01000031: // Push -// if (focusWidget() == pushed) -// onEncoderClicked(pushed); - -// pushed = NULL; -// break; -// case 0x01000032: // Turn right -// onEncoderRight(); -// break; -// } -//} +void CookPanelButton::keyPressEvent(QKeyEvent *event) +{ + switch (event->key()) + { + case 0x01000030: // Turn left + event->ignore(); + break; + case 0x01000031: // Push + pushed = focusWidget(); + if (pushed == ui->pushButton) + on_pushButton_pressed(); + break; + case 0x01000032: // Turn right + event->ignore(); + break; + } +} + +void CookPanelButton::keyReleaseEvent(QKeyEvent *event) +{ + switch (event->key()) + { + case 0x01000030: // Turn left + event->ignore(); + break; + case 0x01000031: // Push + if (pushed == ui->pushButton) + on_pushButton_released(); + + if (focusWidget() == pushed) + onEncoderClicked(pushed); + + pushed = NULL; + break; + case 0x01000032: // Turn right + event->ignore(); + break; + } +} void CookPanelButton::emitLongPressed() { @@ -165,7 +175,9 @@ void CookPanelButton::onEncoderRight() void CookPanelButton::onEncoderClicked(QWidget *clicked) { - + QPushButton *b = qobject_cast(clicked); + if (b) + b->click(); } void CookPanelButton::on_pushButton_pressed() diff --git a/app/gui/oven_control/cookpanelbutton.h b/app/gui/oven_control/cookpanelbutton.h index cad621b..3990a3b 100644 --- a/app/gui/oven_control/cookpanelbutton.h +++ b/app/gui/oven_control/cookpanelbutton.h @@ -39,6 +39,7 @@ public: void setLongPressEnabled(bool enabled); QPushButton *bar(); + QPushButton *infoButton(); QPushButton *deleteButton(); CookRecord record; @@ -47,8 +48,8 @@ public slots: void setEnabled(bool enabled = true); protected: -// void keyPressEvent(QKeyEvent *event); -// void keyReleaseEvent(QKeyEvent *event); + void keyPressEvent(QKeyEvent *event); + void keyReleaseEvent(QKeyEvent *event); private slots: void emitLongPressed(); diff --git a/app/gui/oven_control/programmingautoconfigwindow.cpp b/app/gui/oven_control/programmingautoconfigwindow.cpp index 586b15e..a0b6928 100644 --- a/app/gui/oven_control/programmingautoconfigwindow.cpp +++ b/app/gui/oven_control/programmingautoconfigwindow.cpp @@ -62,8 +62,19 @@ ProgrammingAutoConfigWindow::ProgrammingAutoConfigWindow(QWidget *parent, Cook c setupUi(); + afterThreeSecsTimer.setSingleShot(true); + afterThreeSecsTimer.setInterval(3000); + connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs())); + foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); + + foreach (QWidget *w, findChildren()) + w->installEventFilter(this); + + installEventFilter(this); + + setFocus(); } ProgrammingAutoConfigWindow::~ProgrammingAutoConfigWindow() @@ -71,6 +82,24 @@ ProgrammingAutoConfigWindow::~ProgrammingAutoConfigWindow() delete ui; } +bool ProgrammingAutoConfigWindow::eventFilter(QObject */*watched*/, QEvent *event) +{ + switch (event->type()) + { + case QEvent::KeyPress: + case QEvent::KeyRelease: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: + afterThreeSecsTimer.start(); + break; + default: + break; + } + + return false; +} + void ProgrammingAutoConfigWindow::keyPressEvent(QKeyEvent *event) { switch (event->key()) @@ -108,17 +137,42 @@ void ProgrammingAutoConfigWindow::keyReleaseEvent(QKeyEvent *event) void ProgrammingAutoConfigWindow::onEncoderLeft() { - + focusPreviousChild(); } void ProgrammingAutoConfigWindow::onEncoderRight() { - + focusNextChild(); } void ProgrammingAutoConfigWindow::onEncoderClicked(QWidget *clicked) { + if (clicked == NULL) + return; + if (clicked->inherits("QPushButton")) + { + QPushButton *pb = qobject_cast(clicked); + if (pb) + pb->click(); + } + else if (clicked->inherits("Slider")) + { + Slider *slider = qobject_cast(clicked); + if (slider) + { + if (slider == ui->configSlider_1) + ui->configButton_1->setFocus(); + else if (slider == ui->configSlider_2) + ui->configButton_2->setFocus(); + else if (slider == ui->configSlider_3) + ui->configButton_3->setFocus(); + else if (slider == ui->configSlider_4) + ui->configButton_4->setFocus(); + else if (slider == ui->configSlider_5) + ui->configButton_5->setFocus(); + } + } } void ProgrammingAutoConfigWindow::setupUi() @@ -144,7 +198,7 @@ void ProgrammingAutoConfigWindow::setupUi() cw.button->setStyleSheet( "QPushButton { image: url(" + Define::icon(config.type) - + ") } QPushButton::pressed { image: url(" + + ") } QPushButton::pressed, QPushButton:focus { image: url(" + Define::iconOverlay(config.type) + ") }"); @@ -220,6 +274,24 @@ void ProgrammingAutoConfigWindow::updateConfig() updateView(); } +void ProgrammingAutoConfigWindow::afterThreeSecs() +{ + Slider *slider = qobject_cast(focusWidget()); + if (slider) + { + if (slider == ui->configSlider_1) + ui->configButton_1->setFocus(); + else if (slider == ui->configSlider_2) + ui->configButton_2->setFocus(); + else if (slider == ui->configSlider_3) + ui->configButton_3->setFocus(); + else if (slider == ui->configSlider_4) + ui->configButton_4->setFocus(); + else if (slider == ui->configSlider_5) + ui->configButton_5->setFocus(); + } +} + void ProgrammingAutoConfigWindow::on_backButton_clicked() { close(); @@ -257,3 +329,28 @@ void ProgrammingAutoConfigWindow::on_okButton_clicked() emit added(); close(); } + +void ProgrammingAutoConfigWindow::on_configButton_1_clicked() +{ + ui->configSlider_1->setFocus(); +} + +void ProgrammingAutoConfigWindow::on_configButton_2_clicked() +{ + ui->configSlider_2->setFocus(); +} + +void ProgrammingAutoConfigWindow::on_configButton_3_clicked() +{ + ui->configSlider_3->setFocus(); +} + +void ProgrammingAutoConfigWindow::on_configButton_4_clicked() +{ + ui->configSlider_4->setFocus(); +} + +void ProgrammingAutoConfigWindow::on_configButton_5_clicked() +{ + ui->configSlider_5->setFocus(); +} diff --git a/app/gui/oven_control/programmingautoconfigwindow.h b/app/gui/oven_control/programmingautoconfigwindow.h index 0c12d86..262b0e1 100644 --- a/app/gui/oven_control/programmingautoconfigwindow.h +++ b/app/gui/oven_control/programmingautoconfigwindow.h @@ -21,6 +21,8 @@ public: explicit ProgrammingAutoConfigWindow(QWidget *parent, Cook cook); ~ProgrammingAutoConfigWindow(); + bool eventFilter(QObject *watched, QEvent *event); + protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); @@ -45,10 +47,13 @@ private: void onEncoderRight(); void onEncoderClicked(QWidget *clicked); + QTimer afterThreeSecsTimer; + private slots: void setupUi(); void updateView(); void updateConfig(); + void afterThreeSecs(); void on_backButton_clicked(); @@ -58,6 +63,16 @@ private slots: void on_okButton_clicked(); + void on_configButton_1_clicked(); + + void on_configButton_2_clicked(); + + void on_configButton_3_clicked(); + + void on_configButton_4_clicked(); + + void on_configButton_5_clicked(); + signals: void added(); }; diff --git a/app/gui/oven_control/programmingautoconfigwindow.ui b/app/gui/oven_control/programmingautoconfigwindow.ui index cfa5ed5..36c807a 100644 --- a/app/gui/oven_control/programmingautoconfigwindow.ui +++ b/app/gui/oven_control/programmingautoconfigwindow.ui @@ -1308,6 +1308,9 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 140 + + Qt::ClickFocus + @@ -1318,6 +1321,9 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 140 + + Qt::ClickFocus + @@ -1328,6 +1334,9 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 140 + + Qt::ClickFocus + @@ -1338,6 +1347,9 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 140 + + Qt::ClickFocus + @@ -1348,6 +1360,9 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 140 + + Qt::ClickFocus + @@ -1370,6 +1385,19 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/c 1 + + selectCookButton + pushButton_4 + configButton_1 + configButton_2 + configButton_3 + configButton_4 + configButton_5 + backButton + configButton + helpButton + okButton + diff --git a/app/gui/oven_control/programmingautoselectionwindow.cpp b/app/gui/oven_control/programmingautoselectionwindow.cpp index e469fad..6b5c7a3 100644 --- a/app/gui/oven_control/programmingautoselectionwindow.cpp +++ b/app/gui/oven_control/programmingautoselectionwindow.cpp @@ -36,10 +36,11 @@ ProgrammingAutoSelectionWindow::ProgrammingAutoSelectionWindow(QWidget *parent, QPushButton {\ border-image: url(:/images/button/288.png);\ }\ -QPushButton:pressed {\ +QPushButton:pressed, QPushButton:focus {\ border-image: url(:/images/button/288_ov.png);\ }"); + QWidget *last = this; for (int idx = 0; idx < book.list.size(); idx++) { int x = 12 + (idx % 3) * 294; @@ -53,10 +54,21 @@ QPushButton:pressed {\ sm->setMapping(pb, idx); connect(pb, SIGNAL(clicked()), sm, SLOT(map())); + + setTabOrder(last, pb); + + last = pb; } + setTabOrder(last, ui->backButton); + setTabOrder(ui->backButton, ui->configButton); + setTabOrder(ui->configButton, ui->helpButton); + setTabOrder(ui->helpButton, ui->okButton); + foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); + + setFocus(); } ProgrammingAutoSelectionWindow::~ProgrammingAutoSelectionWindow() @@ -101,17 +113,19 @@ void ProgrammingAutoSelectionWindow::keyReleaseEvent(QKeyEvent *event) void ProgrammingAutoSelectionWindow::onEncoderLeft() { - + focusPreviousChild(); } void ProgrammingAutoSelectionWindow::onEncoderRight() { - + focusNextChild(); } void ProgrammingAutoSelectionWindow::onEncoderClicked(QWidget *clicked) { - + QPushButton *b = qobject_cast(clicked); + if (b) + b->click(); } void ProgrammingAutoSelectionWindow::onCookSelected(int idx) diff --git a/app/gui/oven_control/programmingmanualcoretemppopup.cpp b/app/gui/oven_control/programmingmanualcoretemppopup.cpp index 8eeb357..23c6b24 100644 --- a/app/gui/oven_control/programmingmanualcoretemppopup.cpp +++ b/app/gui/oven_control/programmingmanualcoretemppopup.cpp @@ -35,8 +35,19 @@ ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent) updateCoreTempLabel(); + afterThreeSecsTimer.setSingleShot(true); + afterThreeSecsTimer.setInterval(3000); + connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs())); + foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); + + foreach (QWidget *w, findChildren()) + w->installEventFilter(this); + + installEventFilter(this); + + ui->background->setFocus(); } ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup() @@ -44,6 +55,24 @@ ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup() delete ui; } +bool ProgrammingManualCoreTempPopup::eventFilter(QObject */*watched*/, QEvent *event) +{ + switch (event->type()) + { + case QEvent::KeyPress: + case QEvent::KeyRelease: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: + afterThreeSecsTimer.start(); + break; + default: + break; + } + + return false; +} + void ProgrammingManualCoreTempPopup::keyPressEvent(QKeyEvent *event) { switch (event->key()) @@ -84,9 +113,19 @@ void ProgrammingManualCoreTempPopup::updateCoreTempLabel() ui->coreTempLabel->setText(Stringer::temperature(ui->coreTempSlider->sliderPosition(), Stringer::fontSize14)); } -void ProgrammingManualCoreTempPopup::on_coreTempButton_clicked() +void ProgrammingManualCoreTempPopup::afterThreeSecs() { + Slider *slider = qobject_cast(focusWidget()); + if (slider) + { + if (slider == ui->coreTempSlider) + ui->coreTempButton->setFocus(); + } +} +void ProgrammingManualCoreTempPopup::on_coreTempButton_clicked() +{ + ui->coreTempSlider->setFocus(); } void ProgrammingManualCoreTempPopup::on_cancelButton_clicked() @@ -96,22 +135,47 @@ void ProgrammingManualCoreTempPopup::on_cancelButton_clicked() void ProgrammingManualCoreTempPopup::on_applyButton_clicked() { - emit coreTempEnabled(ui->coreTempSlider->value()); + emit coreTempEnabled(ui->coreTempSlider->sliderPosition()); close(); } void ProgrammingManualCoreTempPopup::onEncoderLeft() { - + QWidget *focused = focusWidget(); + if (focused == ui->background) + ui->applyButton->setFocus(); + else + focusPreviousChild(); } void ProgrammingManualCoreTempPopup::onEncoderRight() { - + QWidget *focused = focusWidget(); + if (focused == ui->applyButton) + ui->background->setFocus(); + else + focusNextChild(); } void ProgrammingManualCoreTempPopup::onEncoderClicked(QWidget *clicked) { - + QWidget *focused = clicked; + if (focused == ui->background) + close(); + else if (focused->inherits("QPushButton")) + { + QPushButton *pb = qobject_cast(focused); + if (pb) + pb->click(); + } + else if (focused->inherits("Slider")) + { + Slider *slider = qobject_cast(focused); + if (slider) + { + if (slider == ui->coreTempSlider) + ui->coreTempButton->setFocus(); + } + } } diff --git a/app/gui/oven_control/programmingmanualcoretemppopup.h b/app/gui/oven_control/programmingmanualcoretemppopup.h index ff4d201..65964c3 100644 --- a/app/gui/oven_control/programmingmanualcoretemppopup.h +++ b/app/gui/oven_control/programmingmanualcoretemppopup.h @@ -2,6 +2,7 @@ #define PROGRAMMINGMANUALCORETEMPPOPUP_H #include +#include namespace Ui { class ProgrammingManualCoreTempPopup; @@ -15,12 +16,15 @@ public: explicit ProgrammingManualCoreTempPopup(QWidget *parent = 0); ~ProgrammingManualCoreTempPopup(); + bool eventFilter(QObject *watched, QEvent *event); + protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); private slots: void updateCoreTempLabel(); + void afterThreeSecs(); void on_coreTempButton_clicked(); void on_cancelButton_clicked(); @@ -35,6 +39,8 @@ private: void onEncoderRight(); void onEncoderClicked(QWidget *clicked); + QTimer afterThreeSecsTimer; + signals: void coreTempEnabled(int); }; diff --git a/app/gui/oven_control/programmingmanualcoretemppopup.ui b/app/gui/oven_control/programmingmanualcoretemppopup.ui index 6e4edb2..587fd87 100644 --- a/app/gui/oven_control/programmingmanualcoretemppopup.ui +++ b/app/gui/oven_control/programmingmanualcoretemppopup.ui @@ -13,9 +13,15 @@ #background { background-image: url(:/images/background/manual_core.png); +background-origin: border; margin-top: -720px; } +#background:focus { +border: 4px solid gray; +border-top: 724px solid gray; +} + QPushButton[style="icon"] { background-image: url(:/images/slider_icon/background.png); background-repeat: no-repeat; @@ -118,6 +124,9 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/manual_b 730 + + Qt::TabFocus + @@ -208,6 +217,12 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/manual_b 1 + + background + coreTempButton + cancelButton + applyButton + diff --git a/app/gui/oven_control/programmingmanualwindow.cpp b/app/gui/oven_control/programmingmanualwindow.cpp index bb1ac97..fbb87f3 100644 --- a/app/gui/oven_control/programmingmanualwindow.cpp +++ b/app/gui/oven_control/programmingmanualwindow.cpp @@ -66,6 +66,19 @@ ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent, Define::Mode m foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); + + setFocus(); + + afterThreeSecsTimer.setSingleShot(true); + afterThreeSecsTimer.setInterval(3000); + connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs())); + + foreach (QWidget *w, findChildren()) + w->installEventFilter(this); + + installEventFilter(this); + + afterThreeSecsTimer.start(); } ProgrammingManualWindow::~ProgrammingManualWindow() @@ -73,6 +86,24 @@ ProgrammingManualWindow::~ProgrammingManualWindow() delete ui; } +bool ProgrammingManualWindow::eventFilter(QObject */*watched*/, QEvent *event) +{ + switch (event->type()) + { + case QEvent::KeyPress: + case QEvent::KeyRelease: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseMove: + afterThreeSecsTimer.start(); + break; + default: + break; + } + + return false; +} + void ProgrammingManualWindow::keyPressEvent(QKeyEvent *event) { switch (event->key()) @@ -128,17 +159,92 @@ int ProgrammingManualWindow::timeToSlider(int secs) void ProgrammingManualWindow::onEncoderLeft() { + focusPreviousChild(); + QWidget *focused = focusWidget(); + if (focused == ui->steamButton) + { + if (ui->steamButton->isChecked()) + focusPreviousChild(); + } + else if (focused == ui->combiButton) + { + if (ui->combiButton->isChecked()) + focusPreviousChild(); + } + else if (focused == ui->dryheatButton) + { + if (ui->dryheatButton->isChecked()) + focusPreviousChild(); + } } void ProgrammingManualWindow::onEncoderRight() { - + QWidget *focused = focusWidget(); + if (focused == NULL || focused == this) + { + if (ui->steamButton->isChecked() || ui->dryheatButton->isChecked()) + ui->tempButton->setFocus(); + else if (ui->combiButton->isChecked()) + ui->humidityButton->setFocus(); + } + else + { + focusNextChild(); + + focused = focusWidget(); + if (focused == ui->steamButton) + { + if (ui->steamButton->isChecked()) + focusNextChild(); + } + else if (focused == ui->combiButton) + { + if (ui->combiButton->isChecked()) + focusNextChild(); + } + else if (focused == ui->dryheatButton) + { + if (ui->dryheatButton->isChecked()) + focusNextChild(); + } + } } void ProgrammingManualWindow::onEncoderClicked(QWidget *clicked) { + if (clicked == NULL) + return; + if (clicked->inherits("QPushButton")) + { + QPushButton *b = qobject_cast(clicked); + if (b) + { + b->click(); + + if (b == ui->steamButton || b == ui->dryheatButton) + ui->tempButton->setFocus(); + else if (b == ui->combiButton) + ui->humidityButton->setFocus(); + } + } + else if (clicked->inherits("Slider")) + { + Slider *slider = qobject_cast(clicked); + if (slider) + { + if (slider == ui->humiditySlider) + ui->humidityButton->setFocus(); + else if (slider == ui->tempSlider) + ui->tempButton->setFocus(); + else if (slider == ui->timeSlider) + ui->timeButton->setFocus(); + else if (slider == ui->interTempSlider) + ui->interTempButton->setFocus(); + } + } } void ProgrammingManualWindow::setDefault(Define::Mode mode) @@ -147,6 +253,8 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode) { case Define::SteamMode: ui->steamButton->setChecked(true); + ui->combiButton->setChecked(false); + ui->dryheatButton->setChecked(false); ui->humiditySlider->setEnabled(false); ui->humiditySlider->setValue(100); ui->tempSlider->setRange(30, 130); @@ -161,7 +269,9 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode) this->mode = mode; break; case Define::CombiMode: + ui->steamButton->setChecked(false); ui->combiButton->setChecked(true); + ui->dryheatButton->setChecked(false); ui->humiditySlider->setEnabled(true); ui->humiditySlider->setValue(50); ui->tempSlider->setRange(30, 300); @@ -176,6 +286,8 @@ void ProgrammingManualWindow::setDefault(Define::Mode mode) this->mode = mode; break; case Define::DryMode: + ui->steamButton->setChecked(false); + ui->combiButton->setChecked(false); ui->dryheatButton->setChecked(true); ui->humiditySlider->setEnabled(false); ui->humiditySlider->setValue(0); @@ -219,22 +331,7 @@ void ProgrammingManualWindow::updateTimeLabel() void ProgrammingManualWindow::updateCoreTempButton() { - if (ui->interTempSlider->isEnabled()) - ui->interTempButton->setStyleSheet("\ -QPushButton {\ - image: url(:/images/slider_icon/core_temp_enabled.png);\ -}\ -QPushButton:pressed {\ - image: url(:/images/slider_icon/core_temp_ov.png);\ -}"); - else - ui->interTempButton->setStyleSheet("\ -QPushButton {\ - image: url(:/images/slider_icon/core_temp.png);\ -}\ -QPushButton:pressed {\ - image: url(:/images/slider_icon/core_temp_ov.png);\ -}"); + ui->interTempButton->setChecked(ui->interTempSlider->isEnabled()); } void ProgrammingManualWindow::updateCoreTempLabel() @@ -276,6 +373,24 @@ void ProgrammingManualWindow::updateFanButton() } } +void ProgrammingManualWindow::afterThreeSecs() +{ + Slider *slider = qobject_cast(focusWidget()); + if (slider) + { + if (slider == ui->humiditySlider) + ui->humidityButton->setFocus(); + else if (slider == ui->tempSlider) + ui->tempButton->setFocus(); + else if (slider == ui->timeSlider) + ui->timeButton->setFocus(); + else if (slider == ui->interTempSlider) + ui->interTempButton->setFocus(); + + afterThreeSecsTimer.start(); + } +} + void ProgrammingManualWindow::onCoreTempEnabled(int celsius) { ui->interTempSlider->setEnabled(true); @@ -300,6 +415,21 @@ void ProgrammingManualWindow::on_dryheatButton_clicked() setDefault(Define::DryMode); } +void ProgrammingManualWindow::on_humidityButton_clicked() +{ + ui->humiditySlider->setFocus(); +} + +void ProgrammingManualWindow::on_tempButton_clicked() +{ + ui->tempSlider->setFocus(); +} + +void ProgrammingManualWindow::on_timeButton_clicked() +{ + ui->timeSlider->setFocus(); +} + void ProgrammingManualWindow::on_interTempButton_clicked() { if (ui->interTempSlider->isEnabled()) @@ -313,6 +443,8 @@ void ProgrammingManualWindow::on_interTempButton_clicked() { ProgrammingManualCoreTempPopup *p = new ProgrammingManualCoreTempPopup(this); connect(p, SIGNAL(coreTempEnabled(int)), SLOT(onCoreTempEnabled(int))); + connect(p, SIGNAL(destroyed(QObject*)), SLOT(updateCoreTempButton())); + connect(p, SIGNAL(destroyed(QObject*)), ui->interTempButton, SLOT(setFocus())); p->showFullScreen(); } } diff --git a/app/gui/oven_control/programmingmanualwindow.h b/app/gui/oven_control/programmingmanualwindow.h index 82bc0af..e9a6524 100644 --- a/app/gui/oven_control/programmingmanualwindow.h +++ b/app/gui/oven_control/programmingmanualwindow.h @@ -17,6 +17,8 @@ public: explicit ProgrammingManualWindow(QWidget *parent, Define::Mode mode); ~ProgrammingManualWindow(); + bool eventFilter(QObject *watched, QEvent *event); + protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); @@ -36,6 +38,8 @@ private: void onEncoderRight(); void onEncoderClicked(QWidget *clicked); + QTimer afterThreeSecsTimer; + private slots: void setDefault(Define::Mode mode); void setFan(int level); @@ -45,6 +49,7 @@ private slots: void updateCoreTempButton(); void updateCoreTempLabel(); void updateFanButton(); + void afterThreeSecs(); void onCoreTempEnabled(int celsius); @@ -58,6 +63,12 @@ private slots: void on_helpButton_clicked(); void on_okButton_clicked(); + void on_humidityButton_clicked(); + + void on_tempButton_clicked(); + + void on_timeButton_clicked(); + signals: void added(); }; diff --git a/app/gui/oven_control/programmingmanualwindow.ui b/app/gui/oven_control/programmingmanualwindow.ui index 56697a9..093fdfb 100644 --- a/app/gui/oven_control/programmingmanualwindow.ui +++ b/app/gui/oven_control/programmingmanualwindow.ui @@ -207,9 +207,6 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_dryheat.png); true - - true - mode @@ -596,9 +593,6 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_steam.png); } true - - true - mode @@ -757,8 +751,12 @@ QPushButton:pressed, QPushButton:focus { image: url(:/images/slider_icon/humidit QPushButton { image: url(:/images/slider_icon/core_temp.png); } +QPushButton:checked { image: url(:/images/slider_icon/core_temp_enabled.png); } QPushButton:pressed, QPushButton:focus { image: url(:/images/slider_icon/core_temp_ov.png); } + + true + icon @@ -783,9 +781,6 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); } true - - true - mode @@ -871,41 +866,53 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); } 185 - 875 + 915 666 - 140 + 60 + + Qt::ClickFocus + 185 - 1175 + 1215 666 - 140 + 60 + + Qt::ClickFocus + 185 - 1025 + 1065 666 - 140 + 60 + + Qt::ClickFocus + 185 - 725 + 765 666 - 140 + 60 + + Qt::ClickFocus + @@ -933,6 +940,20 @@ QPushButton:checked { background-image: url(:/images/cook_mode/big_combi.png); } 1 + + steamButton + combiButton + dryheatButton + humidityButton + tempButton + timeButton + interTempButton + fanButton + backButton + configButton + helpButton + okButton + diff --git a/app/gui/oven_control/programmingselectionwindow.cpp b/app/gui/oven_control/programmingselectionwindow.cpp index 25e2606..8b11613 100644 --- a/app/gui/oven_control/programmingselectionwindow.cpp +++ b/app/gui/oven_control/programmingselectionwindow.cpp @@ -101,6 +101,8 @@ void ProgrammingSelectionWindow::onEncoderClicked(QWidget *clicked) void ProgrammingSelectionWindow::onModeClicked(Define::Mode mode) { + setFocus(); + ProgrammingManualWindow *w = new ProgrammingManualWindow(this, mode); connect(w, SIGNAL(added()), SIGNAL(added())); connect(w, SIGNAL(added()), SLOT(hide())); @@ -112,6 +114,8 @@ void ProgrammingSelectionWindow::onModeClicked(Define::Mode mode) void ProgrammingSelectionWindow::onCookTypeClicked(Define::CookType type) { + setFocus(); + ProgrammingAutoSelectionWindow *w = new ProgrammingAutoSelectionWindow(this, type); connect(w, SIGNAL(added()), SIGNAL(added())); connect(w, SIGNAL(added()), SLOT(hide())); diff --git a/app/gui/oven_control/programmingselectionwindow.ui b/app/gui/oven_control/programmingselectionwindow.ui index 7d7750d..c393fa7 100644 --- a/app/gui/oven_control/programmingselectionwindow.ui +++ b/app/gui/oven_control/programmingselectionwindow.ui @@ -161,6 +161,9 @@ QPushButton:disabled { background-image: url(:/images/cook_type/fish_hide.png); 0 + + Qt::NoFocus + QPushButton { background-image: url(:/images/main_button/multi.png); } QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/multi_ov.png); } @@ -445,6 +448,9 @@ QPushButton:disabled { background-image: url(:/images/cook_type/etc_hide.png); } 0 + + Qt::NoFocus + QPushButton { background-image: url(:/images/main_button/wash.png); } QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/wash_ov.png); } @@ -475,6 +481,9 @@ QPushButton:disabled { background-image: url(:/images/main_button/wash_hide.png) 0 + + Qt::NoFocus + QPushButton { background-image: url(:/images/main_button/custom.png); } QPushButton:pressed, QPushButton:focus { background-image: url(:/images/main_button/custom_ov.png); } @@ -724,11 +733,13 @@ QPushButton:disabled { background-image: url(:/images/cook_type/bread_hide.png); breadButton etcButton primeButton - multiButton - programmingButton - washButton + backButton configButton helpButton + okButton + washButton + multiButton + programmingButton diff --git a/app/gui/oven_control/programmingwindow.cpp b/app/gui/oven_control/programmingwindow.cpp index 212af3e..9c74767 100644 --- a/app/gui/oven_control/programmingwindow.cpp +++ b/app/gui/oven_control/programmingwindow.cpp @@ -25,6 +25,8 @@ ProgrammingWindow::ProgrammingWindow(QWidget *parent) : foreach (QPushButton *button, findChildren()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); + + setFocus(); } ProgrammingWindow::~ProgrammingWindow() @@ -42,6 +44,9 @@ void ProgrammingWindow::listAuto() ui->autoButton->blockSignals(false); } + if (ui->manualButton->isChecked()) + ui->manualButton->setChecked(false); + listButtons(CookProgram::listAuto()); } @@ -54,6 +59,9 @@ void ProgrammingWindow::listManual() ui->manualButton->blockSignals(false); } + if (ui->autoButton->isChecked()) + ui->autoButton->setChecked(false); + listButtons(CookProgram::listManual()); } @@ -134,8 +142,23 @@ void ProgrammingWindow::listButtons(QList record) ui->addButton->show(); + setTabOrder(this, ui->autoButton); + setTabOrder(ui->autoButton, ui->manualButton); + setTabOrder(ui->manualButton, ui->addButton); + + QWidget *last = ui->addButton; foreach (CookRecord r, record) - newButton(r); + { + CookPanelButton *b = newButton(r); + setTabOrder(last, b->bar()); + setTabOrder(b->bar(), b->infoButton()); + setTabOrder(b->infoButton(), b->deleteButton()); + last = b->deleteButton(); + } + + setTabOrder(last, ui->backButton); + setTabOrder(ui->backButton, ui->saveButton); + setTabOrder(ui->saveButton, ui->helpButton); ui->scrollAreaWidgetContents->adjustSize(); } @@ -243,18 +266,32 @@ void ProgrammingWindow::on_addButton_clicked() void ProgrammingWindow::on_autoButton_toggled(bool checked) { - if (!checked) - return; - - listAuto(); + if (checked) + listAuto(); + else + { + if (!ui->manualButton->isChecked()) + { + ui->autoButton->blockSignals(true); + ui->autoButton->setChecked(true); + ui->autoButton->blockSignals(false); + } + } } void ProgrammingWindow::on_manualButton_toggled(bool checked) { - if (!checked) - return; - - listManual(); + if (checked) + listManual(); + else + { + if (!ui->autoButton->isChecked()) + { + ui->manualButton->blockSignals(true); + ui->manualButton->setChecked(true); + ui->manualButton->blockSignals(false); + } + } } void ProgrammingWindow::on_backButton_clicked() @@ -284,11 +321,13 @@ void ProgrammingWindow::on_helpButton_clicked() void ProgrammingWindow::onEncoderLeft() { focusPreviousChild(); + ui->scrollArea->ensureWidgetVisible(focusWidget()); } void ProgrammingWindow::onEncoderRight() { focusNextChild(); + ui->scrollArea->ensureWidgetVisible(focusWidget()); } void ProgrammingWindow::onEncoderClicked(QWidget *clicked) diff --git a/app/gui/oven_control/programmingwindow.ui b/app/gui/oven_control/programmingwindow.ui index 55e4675..96910df 100644 --- a/app/gui/oven_control/programmingwindow.ui +++ b/app/gui/oven_control/programmingwindow.ui @@ -187,11 +187,8 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/etc/main true - - true - - mode + mode @@ -213,11 +210,8 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/etc/main true - - true - - mode + mode @@ -232,6 +226,9 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/etc/main 803 + + Qt::NoFocus + true @@ -295,6 +292,14 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/etc/bar_
washwarnicon.h
+ + autoButton + manualButton + addButton + backButton + saveButton + helpButton + -- 2.1.4