#include "gameview.h"
#include "settings.h"
#include "settingsdialog.h"
+#include "aboutdialog.h"
+#include "puzzleitem.h"
#include <QAction>
#include <QMenu>
#include <QMenuBar>
+#include <QDebug>
+
#include "imageimporter.h"
+MainWindow *MainWindow::instance_ = 0;
+
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
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_);
}
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 game"), this);
+ saveAction_ = new QAction(tr("Save and quit"), this);
connect(saveAction_, SIGNAL(triggered()), GameView::instance(), SLOT(saveGame()));
+ saveAction_->setDisabled(true);
}
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();
+ PuzzleItem::setMoveCount(0);
+}
+
+void MainWindow::aboutClicked()
+{
+ AboutDialog *dialog = new AboutDialog(this);
+ dialog->exec();
+ dialog->deleteLater();
}
-void MainWindow::settingsClicked()
+void MainWindow::gameEnded()
{
+ if(saveAction_->isEnabled()) {
+ saveAction_->setDisabled(true);
+ PuzzleItem::resetMoveCount();
+ }
+}
+void MainWindow::enableSaving()
+{
+ if(!saveAction_->isEnabled()) {
+ saveAction_->setEnabled(true);
+ }
}