#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include "soundplayer.h" #include "manualcookwindow.h" #include "autocookselectionwindow.h" #include "primewindow.h" #include "programmingwindow.h" #include "washwindow.h" #include "configwindow.h" #include "ovenstatics.h" #include "notipopupdlg.h" #include "multicookwindow.h" #include "manualviewerdlg.h" MainWindow *MainWindow::instance = NULL; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); #if MODEL_GRADE == 0 ui->multiButton->hide(); ui->programmingButton->hide(); #elif MODEL_GRADE == 1 ui->logo->hide(); #else ui->multiButton->hide(); ui->programmingButton->hide(); ui->logo->setPixmap(QPixmap(":/images/symbol/main_logo_pssco.png")); #endif instance = this; child = NULL; setFocus(); QList buttons = findChildren(); foreach (QPushButton *button, buttons) { connect(button, &QPushButton::pressed, SoundPlayer::playClick); connect(button, SIGNAL(clicked()), SLOT(setFocus())); } #if ENABLE_WASH_RESUMING QTimer::singleShot(0, this, SLOT(checkPrevWash())); #endif } MainWindow::~MainWindow() { delete ui; } void MainWindow::jump(QMainWindow *newChild) { if (instance->child) instance->child->deleteLater(); instance->newChild(newChild); } void MainWindow::killChild() { if (instance->child) instance->child->deleteLater(); } bool MainWindow::killChildCook() { if (instance->child && !instance->child->inherits("ConfigWindow")) { qDebug() << "kill child"; instance->child->hide(); instance->child->deleteLater(); return true; } else return false; } EngineerMenuWindow *MainWindow::getEngineerMenuWindow() { return instance->findChild(); } void MainWindow::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 MainWindow::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 MainWindow::onEncoderLeft() { focusPreviousChild(); } void MainWindow::onEncoderRight() { focusNextChild(); } void MainWindow::onEncoderClicked(QWidget *clicked) { QPushButton *b = qobject_cast(clicked); if (b) b->click(); } void MainWindow::checkPrevWash() { if (OvenStatistics::getInstance()->loadWashState()) { NotiPopupDlg *d = new NotiPopupDlg(this, tr("세척이 정상적으로 종료되지 않아\n반드시 세척통을 자동 세척해야 합니다.\n내부를 비워주세요")); d->setWindowModality(Qt::WindowModal); d->show(); connect(d, SIGNAL(accepted()), SLOT(on_washButton_clicked())); } } void MainWindow::showManualCookWindow(Define::Mode mode) { ManualCookWindow *w = new ManualCookWindow(this, mode); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::showAutoCookSelectionWindow(Define::CookType type) { AutoCookSelectionWindow *w = new AutoCookSelectionWindow(this, type); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::newChild(QMainWindow *newChild) { child = newChild; connect(newChild, SIGNAL(destroyed(QObject*)), this, SLOT(onChildDestroyed(QObject*))); } void MainWindow::onChildDestroyed(QObject *destroyed) { if (destroyed == child) child = NULL; } void MainWindow::on_steamButton_clicked() { showManualCookWindow(Define::SteamMode); } void MainWindow::on_combiButton_clicked() { showManualCookWindow(Define::CombiMode); } void MainWindow::on_dryheatButton_clicked() { showManualCookWindow(Define::DryMode); } void MainWindow::on_poultryButton_clicked() { showAutoCookSelectionWindow(Define::Poultry); } void MainWindow::on_meatButton_clicked() { showAutoCookSelectionWindow(Define::Meat); } void MainWindow::on_fishButton_clicked() { showAutoCookSelectionWindow(Define::Fish); } void MainWindow::on_dessertButton_clicked() { showAutoCookSelectionWindow(Define::Desert); } void MainWindow::on_grainButton_clicked() { showAutoCookSelectionWindow(Define::Vegetable); } void MainWindow::on_breadButton_clicked() { showAutoCookSelectionWindow(Define::Bread); } void MainWindow::on_etcButton_clicked() { showAutoCookSelectionWindow(Define::Etc); } void MainWindow::on_primeButton_clicked() { PrimeWindow *w = new PrimeWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::on_multiButton_clicked() { MultiCookWindow *w = new MultiCookWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::on_programmingButton_clicked() { ProgrammingWindow *w = new ProgrammingWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::on_washButton_clicked() { WashWindow *w = new WashWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::on_configButton_clicked() { ConfigWindow *w = new ConfigWindow(this); w->setWindowModality(Qt::WindowModal); w->showFullScreen(); w->raise(); newChild(w); } void MainWindow::on_helpButton_clicked() { ManualViewerDlg* dlg = new ManualViewerDlg(this); dlg->showFullScreen(); dlg->raise(); }