#include "programmingautoselectionwindow.h" #include "ui_programmingautoselectionwindow.h" #include #include #include "soundplayer.h" #include "programmingautoconfigwindow.h" #include "configwindow.h" #include "mainwindow.h" #include "manualviewerdlg.h" ProgrammingAutoSelectionWindow::ProgrammingAutoSelectionWindow(QWidget *parent, Define::CookType type) : QMainWindow(parent), ui(new Ui::ProgrammingAutoSelectionWindow), type(type) { ui->setupUi(this); ui->clockContainer->setParent(ui->upperStack); setAttribute(Qt::WA_DeleteOnClose); ui->cookTypeIcon->setPixmap(Define::icon(type)); book = CookBook(type); QSignalMapper *sm = new QSignalMapper(this); connect(sm, SIGNAL(mapped(int)), SLOT(onCookSelected(int))); QFont font; font.setFamily(QStringLiteral("Roboto")); font.setPointSize(12); font.setBold(true); font.setWeight(75); QLatin1String stylesheet("\ QPushButton {\ border-image: url(:/images/button/288.png);\ }\ 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 = 14 + (idx % 3) * 352; int y = 738 + (idx / 3) * 96; QPushButton *pb = new QPushButton(this); pb->setGeometry(QRect(x, y, 345, 84)); pb->setFont(font); pb->setStyleSheet(stylesheet); pb->setText(book.list.at(idx)); 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() { delete ui; } void ProgrammingAutoSelectionWindow::keyPressEvent(QKeyEvent *event) { switch (event->key()) { case 0x01000032: // Turn left onEncoderLeft(); break; case 0x01000031: // Push pushed = focusWidget(); break; case 0x01000030: // Turn right onEncoderRight(); break; } } void ProgrammingAutoSelectionWindow::keyReleaseEvent(QKeyEvent *event) { switch (event->key()) { case 0x01000032: // Turn left onEncoderLeft(); break; case 0x01000031: // Push if (focusWidget() == pushed) onEncoderClicked(pushed); pushed = NULL; break; case 0x01000030: // Turn right onEncoderRight(); break; } } 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) { ProgrammingAutoConfigWindow *w = new ProgrammingAutoConfigWindow(this, book.get(idx)); connect(w, SIGNAL(added()), SIGNAL(added())); connect(w, SIGNAL(added()), SLOT(hide())); connect(w, SIGNAL(added()), SLOT(close())); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); } void ProgrammingAutoSelectionWindow::on_backButton_clicked() { close(); } void ProgrammingAutoSelectionWindow::on_configButton_clicked() { ConfigWindow *w = new ConfigWindow(MainWindow::getInstance()); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); MainWindow::jump(w); } void ProgrammingAutoSelectionWindow::on_helpButton_clicked() { ManualViewerDlg* dlg = new ManualViewerDlg(this); dlg->showFullScreen(); dlg->raise(); } void ProgrammingAutoSelectionWindow::on_okButton_clicked() { emit added(); close(); }