Pause/unpause by tapping the screen now works
[ghostsoverboard] / mainwindow.cpp
index 58b3cfd..6aae247 100644 (file)
@@ -43,7 +43,8 @@ MainWindow::MainWindow(QWidget *parent)
     pScene_ = new SeaScene ();
     connect(pScene_,SIGNAL(allGhostsPicked()),this,SLOT(nextLevel()));
 
-    pView_  = new QGraphicsView ();
+    pView_  = new SeaView ();
+
 
     pView_->setScene(pScene_);
     setCentralWidget(pView_);
@@ -51,8 +52,9 @@ MainWindow::MainWindow(QWidget *parent)
     pPauseAction_ = new QAction(tr("Pause"),this);
     pPauseAction_->setCheckable(true);
     addAction(pPauseAction_);
-    connect(pPauseAction_,SIGNAL(triggered(bool)),pScene_,SLOT(pause(bool)));
+    connect(pPauseAction_,SIGNAL(toggled(bool)),pScene_,SLOT(pause(bool)));
     menuBar()->addAction(pPauseAction_);
+    connect(pView_,SIGNAL(pauseChanged()),pPauseAction_,SLOT(toggle()));
 
     QAction * pRestartLevelAction = new QAction(tr("Restart level"),this);
     addAction(pRestartLevelAction);
@@ -64,11 +66,11 @@ MainWindow::MainWindow(QWidget *parent)
     connect(pRestartGameAction,SIGNAL(triggered()),this,SLOT(restartGame()));
     menuBar()->addAction(pRestartGameAction);
 
-    QAction * pVibrateAction = new QAction(tr("Vibration effects"),this);
-    pVibrateAction->setCheckable(true);
-    addAction(pVibrateAction);
-    connect(pVibrateAction,SIGNAL(triggered(bool)),pScene_,SLOT(vibrationActivate(bool)));
-    menuBar()->addAction(pVibrateAction);
+    pVibrateAction_ = new QAction(tr("Vibration effects"),this);
+    pVibrateAction_->setCheckable(true);
+    addAction(pVibrateAction_);
+    connect(pVibrateAction_,SIGNAL(toggled(bool)),pScene_,SLOT(vibrationActivate(bool)));
+    menuBar()->addAction(pVibrateAction_);
 
 
     QAction * pAboutAction = new QAction(tr("About"),this);
@@ -126,7 +128,9 @@ void MainWindow::initializeBoundaries()
 
 void MainWindow::restartLevel()
 {
-    pScene_->setupMap(levelList_.at(currentLevel_));
+    pScene_->setupMap(levelList_.value(currentLevel_));  //value() returns default constructor Level if index is invalid, so no risk of crash
+    pScene_->vibrationActivate(pVibrateAction_->isChecked());  //Vibration effects are lost without this
+   // qDebug() << pVibrateAction_->isChecked();
 }
 
 void MainWindow::about()
@@ -154,7 +158,7 @@ void MainWindow::nextLevel()
 
     if ( currentLevel_ < levelList_.size() )
     {
-        pScene_->setupMap(levelList_.at(currentLevel_));
+       restartLevel();
     }
 
     else //Victory!
@@ -243,6 +247,5 @@ bool MainWindow::event(QEvent *event)
 void MainWindow::restartGame()
 {
     currentLevel_ = 0;
-    pScene_->setupMap(levelList_.value(currentLevel_)); //value() returns default constructor Level, so no need to check if list empty
-
+    restartLevel();
 }