X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=blobdiff_plain;f=src%2Fmainwindow.cpp;h=fea49c2bf951f59f0b02a3f2e88231c0c7696e65;hp=e95883f629bd40bc5c7b7077bdeaec9e1235583b;hb=e8ec286888c2a9a9e4ecb077c3899d35c285b370;hpb=e90ecb7db7b5d4d22fb08f8053db4423797b5afc diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e95883f..fea49c2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -18,13 +18,21 @@ #include "mainwindow.h" #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) { @@ -32,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_); } @@ -49,6 +74,13 @@ void MainWindow::createActions() importAction_ = new QAction(tr("Import image"), this); connect(importAction_, SIGNAL(triggered()), this, SLOT(importClicked())); importAction_->setDisabled(true); + + 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() @@ -58,5 +90,30 @@ void MainWindow::importClicked() void MainWindow::newGameClicked() { - GameView::instance()->setPieces(ImageImporter::instance()->newPieces(0, 20)); + settingsDialog_->exec(); + + GameView::instance()->setPieces(ImageImporter::instance()->newPieces(Settings::instance()->image(), Settings::instance()->pieceCount())); + enableSaving(); +} + +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); + } }