X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=chessclockwindow.cpp;h=c5fde01a3c54b072f02243d98f5e7c5359539af0;hb=HEAD;hp=0ab4e48ebceaf5861dbd847eeceba5f7a6eed049;hpb=434b0c4e94e2ff4c3a44483892a44a227f081e71;p=chessclock diff --git a/chessclockwindow.cpp b/chessclockwindow.cpp index 0ab4e48..c5fde01 100644 --- a/chessclockwindow.cpp +++ b/chessclockwindow.cpp @@ -25,15 +25,23 @@ #include "classes/chessclockwidget.h" #include "classes/startwidget.h" #include "classes/timecontrol.h" +#include "classes/turninformation.h" +// Time controls #include "classes/timecontrol/notimecontrol.h" #include "classes/timecontrol/fischertimecontrol.h" +#include "classes/timecontrol/fischeraftertimecontrol.h" +#include "classes/timecontrol/delaytimecontrol.h" +#include "classes/timecontrol/delayaftertimecontrol.h" +#include "classes/timecontrol/hourglasstimecontrol.h" #include #include #include #include #include +#include + ChessClockWindow::ChessClockWindow(QWidget *parent) : QMainWindow(parent) @@ -55,10 +63,19 @@ ChessClockWindow::ChessClockWindow(QWidget *parent) connect( start_, SIGNAL(selected(TimeControl*)), this, SLOT(startGame(TimeControl*))); + // Set up menu - menuBar()->addAction( tr("Pause"), this, SLOT(pause())); +// menuBar()->addAction( tr("Pause"), this, SLOT(pause())); // UNUSED - Pause button menuBar()->addAction( tr("New game"), this, SLOT(newGame())); + menuBar()->addAction( tr("Visit web page"), this, SLOT(visitWeb())); + menuBar()->addAction( tr("About"),this, SLOT(about())); + menuBar()->addAction(tr("About Qt"), this, SLOT(aboutQt())); + + //set the event filter to grap window deactivate + + installEventFilter(this); + } void ChessClockWindow::pause() @@ -71,7 +88,7 @@ void ChessClockWindow::newGame() { pause(); if( clocks_ == 0 || !clocks_->isPlayStarted() || QMessageBox::question(this, tr("Start new game"), - tr("Really quit current game and start new one with current settings?"), + tr("Really quit the current game and start a new one?"), QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) { stack_->setCurrentWidget(start_); @@ -84,10 +101,39 @@ void ChessClockWindow::newGame() } } +void ChessClockWindow::visitWeb() +{ + pause(); + QProcess* process = new QProcess(this); + process->start(QString("browser --url=chessclock.garage.maemo.org")); +} + +void ChessClockWindow::about() +{ + pause(); + QMessageBox::about(this, tr("About ChessClock"), + tr("

Chess Clock %1

" + "©Arto Hyvättinen 2010" + "

Chess Clock is free software under the terms of GNU General Public License 3" + "

Bugtracker and instructions at http://chessclock.garage.maemo.org" + ).arg(qApp->applicationVersion())) ; +} + +void ChessClockWindow::aboutQt() +{ + pause(); + qApp->aboutQt(); +} + + void ChessClockWindow::initTimeControls() { start_->addTimeControl( new NoTimeControl ); start_->addTimeControl( new FischerTimeControl); + start_->addTimeControl( new FischerAfterTimeControl); + start_->addTimeControl( new DelayTimeControl ); + start_->addTimeControl( new DelayAfterTimeControl); + start_->addTimeControl( new HourGlassTimeControl); } void ChessClockWindow::startGame(TimeControl *timecontrol) @@ -95,14 +141,11 @@ void ChessClockWindow::startGame(TimeControl *timecontrol) ClocksWidget* newWidget = timecontrol->initGame(false); if( newWidget ) { - if( clocks_ ) - { - stack_->removeWidget(clocks_); - delete clocks_; - } + clocks_ = newWidget; stack_->addWidget(clocks_); stack_->setCurrentWidget(clocks_); + connect( clocks_, SIGNAL(TurnFinished(TurnInformation*)), this, SLOT(dontEatMemory(TurnInformation*))); } } @@ -111,3 +154,19 @@ ChessClockWindow::~ChessClockWindow() { } + +bool ChessClockWindow::eventFilter(QObject *obj, QEvent *event) +{ + if (event->type() == QEvent::WindowDeactivate) { + pause(); + return QObject::eventFilter(obj,event); + } else { + // standard event processing + return QObject::eventFilter(obj, event); + } +} + +void ChessClockWindow::dontEatMemory(TurnInformation *turnInformation) +{ + delete turnInformation; // hopefully don't cause Segematation Fault +}