1 /**************************************************************************
5 Copyright (c) Arto Hyvättinen 2010
7 This file is part of Chess Clock software.
9 Chess Clock is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 Chess Clock is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
20 **************************************************************************/
22 #include "chessclockwindow.h"
24 #include "classes/clockswidget.h"
25 #include "classes/chessclockwidget.h"
26 #include "classes/startwidget.h"
27 #include "classes/timecontrol.h"
30 #include "classes/timecontrol/notimecontrol.h"
31 #include "classes/timecontrol/fischertimecontrol.h"
32 #include "classes/timecontrol/fischeraftertimecontrol.h"
33 #include "classes/timecontrol/delaytimecontrol.h"
34 #include "classes/timecontrol/delayaftertimecontrol.h"
35 #include "classes/timecontrol/hourglasstimecontrol.h"
38 #include <QApplication>
40 #include <QMessageBox>
41 #include <QStackedWidget>
43 ChessClockWindow::ChessClockWindow(QWidget *parent)
47 setWindowIcon( QIcon(":/rc/pic/chessclock.png"));
48 setWindowTitle( QString("%1 %2").arg(qApp->applicationName()).arg(qApp->applicationVersion()) );
50 // Start widget to select time control
51 start_ = new StartWidget;
56 stack_ = new QStackedWidget;
57 stack_->addWidget(start_);
59 setCentralWidget( stack_ );
61 connect( start_, SIGNAL(selected(TimeControl*)), this, SLOT(startGame(TimeControl*)));
64 menuBar()->addAction( tr("Pause"), this, SLOT(pause()));
65 menuBar()->addAction( tr("New game"), this, SLOT(newGame()));
69 void ChessClockWindow::pause()
75 void ChessClockWindow::newGame()
78 if( clocks_ == 0 || !clocks_->isPlayStarted() || QMessageBox::question(this, tr("Start new game"),
79 tr("Really quit current game and start new one with current settings?"),
80 QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
82 stack_->setCurrentWidget(start_);
85 { stack_->removeWidget(clocks_);
92 void ChessClockWindow::initTimeControls()
94 start_->addTimeControl( new NoTimeControl );
95 start_->addTimeControl( new FischerTimeControl);
96 start_->addTimeControl( new FischerAfterTimeControl);
97 start_->addTimeControl( new DelayTimeControl );
98 start_->addTimeControl( new DelayAfterTimeControl);
99 start_->addTimeControl( new HourGlassTimeControl);
102 void ChessClockWindow::startGame(TimeControl *timecontrol)
104 ClocksWidget* newWidget = timecontrol->initGame(false);
109 stack_->removeWidget(clocks_);
113 stack_->addWidget(clocks_);
114 stack_->setCurrentWidget(clocks_);
119 ChessClockWindow::~ChessClockWindow()