mainwindow.cpp 4.28 KB
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtDebug>
#include <QSignalMapper>
#include <QKeyEvent>

#include "soundplayer.h"
#include "abstractoveninterface.h"
#include "manualcookwindow.h"
#include "ovencontroller.h"
#include "configwindow.h"
#include "functiontestwindow.h"
#include "autocookselectionwindow.h"
#include "washwindow.h"
#include "engineermenuwindow.h"
#include "programmingwindow.h"
#include "primewindow.h"

MainWindow *MainWindow::instance = NULL;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    instance = this;
    child = NULL;

    setFocus();

    QList<QPushButton *> buttons = findChildren<QPushButton *>();
    foreach (QPushButton *button, buttons)
    {
        connect(button, &QPushButton::pressed, SoundPlayer::playClick);
        connect(button, SIGNAL(clicked()), SLOT(setFocus()));
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::jump(QMainWindow *newChild)
{
    if (instance->child)
        instance->child->deleteLater();

    instance->child = newChild;
}

void MainWindow::killChild()
{
    if (instance->child)
        instance->child->deleteLater();

    instance->child = NULL;
}

static QPushButton *pushedChild = NULL;

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    switch (event->key())
    {
    case 0x01000030:    // Turn left
        focusPreviousChild();
        break;
    case 0x01000031:    // Push
        if (focusWidget() != this)
            pushedChild = static_cast<QPushButton *>(focusWidget());
        break;
    case 0x01000032:    // Turn right
        focusNextChild();
        break;
    }
}

void MainWindow::keyReleaseEvent(QKeyEvent *event)
{
    switch (event->key())
    {
    case 0x01000030:    // Turn left
        focusPreviousChild();
        break;
    case 0x01000031:    // Push
        if (focusWidget() == pushedChild)
            pushedChild->click();

        pushedChild = NULL;
        break;
    case 0x01000032:    // Turn right
        focusNextChild();
        break;
    }
}

void MainWindow::showManualCookWindow(Define::Mode mode)
{
    ManualCookWindow *w = new ManualCookWindow(this, mode);
    w->setWindowModality(Qt::WindowModal);
    w->showFullScreen();
    w->raise();

    child = w;
}

void MainWindow::showAutoCookSelectionWindow(Define::CookType type)
{
    AutoCookSelectionWindow *w = new AutoCookSelectionWindow(this, type);
    w->setWindowModality(Qt::WindowModal);
    w->showFullScreen();
    w->raise();

    child = w;
}

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();

    child = w;
}

void MainWindow::on_multiButton_clicked()
{

}

void MainWindow::on_programmingButton_clicked()
{
    ProgrammingWindow *w = new ProgrammingWindow(this);
    w->setWindowModality(Qt::WindowModal);
    w->showFullScreen();
    w->raise();

    child = w;
}

void MainWindow::on_washButton_clicked()
{
    WashWindow *w = new WashWindow(this);
    w->setWindowModality(Qt::WindowModal);
    w->showFullScreen();
    w->raise();

    child = w;
}

void MainWindow::on_configButton_clicked()
{
    ConfigWindow *w = new ConfigWindow(this);
    w->setWindowModality(Qt::WindowModal);
    w->showFullScreen();
    w->raise();

    child = w;
}

void MainWindow::on_helpButton_clicked()
{

}