X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=blobdiff_plain;f=src%2Fmainwindow.cpp;h=fea49c2bf951f59f0b02a3f2e88231c0c7696e65;hp=b728d4d90fcf6ca245ea04110aab4a148da01978;hb=efc46c69cd39215ef1699c577668ea8854385257;hpb=fdcfe62bec5ff683a2e728b4b49c93c807edc316 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b728d4d..fea49c2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,13 +20,19 @@ #include "gameview.h" #include "settings.h" #include "settingsdialog.h" +#include "aboutdialog.h" +#include "puzzleitem.h" #include #include #include +#include + #include "imageimporter.h" +MainWindow *MainWindow::instance_ = 0; + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { @@ -34,12 +40,29 @@ MainWindow::MainWindow(QWidget *parent) : createMenu(); setCentralWidget(GameView::instance()); + settingsDialog_ = new SettingsDialog(this); + + setWindowTitle(tr("ImPuzzle")); + + connect(GameView::instance(), SIGNAL(gameWon()), this, SLOT(gameEnded())); + connect(GameView::instance(), SIGNAL(gameRestored()), this, SLOT(enableSaving())); +} + +MainWindow *MainWindow::instance() +{ + if(!instance_) { + instance_ = new MainWindow; + } + + return instance_; } void MainWindow::createMenu() { menu_ = menuBar()->addMenu(""); menu_->addAction(newGameAction_); + menu_->addAction(saveAction_); + menu_->addAction(aboutAction_); menu_->addAction(importAction_); } @@ -52,8 +75,12 @@ void MainWindow::createActions() connect(importAction_, SIGNAL(triggered()), this, SLOT(importClicked())); importAction_->setDisabled(true); - settingsAction_ = new QAction(tr("Settings"), this); - connect(settingsAction_, SIGNAL(triggered()), this, SLOT(settingsClicked())); + aboutAction_ = new QAction(tr("About ImPuzzle"), this); + connect(aboutAction_, SIGNAL(triggered()), this, SLOT(aboutClicked())); + + saveAction_ = new QAction(tr("Save and quit"), this); + connect(saveAction_, SIGNAL(triggered()), GameView::instance(), SLOT(saveGame())); + saveAction_->setDisabled(true); } void MainWindow::importClicked() @@ -63,13 +90,30 @@ void MainWindow::importClicked() void MainWindow::newGameClicked() { - SettingsDialog dialog(this); - dialog.exec(); + settingsDialog_->exec(); GameView::instance()->setPieces(ImageImporter::instance()->newPieces(Settings::instance()->image(), Settings::instance()->pieceCount())); + enableSaving(); } -void MainWindow::settingsClicked() +void MainWindow::aboutClicked() { + AboutDialog *dialog = new AboutDialog(this); + dialog->exec(); + dialog->deleteLater(); +} +void MainWindow::gameEnded() +{ + if(saveAction_->isEnabled()) { + saveAction_->setDisabled(true); + PuzzleItem::resetMoveCount(); + } +} + +void MainWindow::enableSaving() +{ + if(!saveAction_->isEnabled()) { + saveAction_->setEnabled(true); + } }