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 **************************************************************************/
29 class TurnInformation;
32 /*! Clock of a individual player
34 @author Arto Hyvättinen
37 Base class of chess clock.
40 class ChessClock : public QWidget
44 ChessClock(bool white, QWidget *parent = 0);
48 NotRunning /*! Not turn */ = 0,
49 Running /*! Turn running */ = 1,
50 Paused /*! Turn paused */ = 2
53 bool isLoser() const { return loser_; }
54 int getTurn() const { return turn_; }
58 virtual void startTurn();
62 Player has done his move.
63 @return Locked turn information */
64 virtual TurnInformation* endTurn();
67 virtual void pauseTurn();
69 /*! Continue paused game */
70 virtual void continueTurn();
72 /*! Set another chess clock for connecting
73 @param another Clock of opposite player */
74 void setAnother( ChessClock* another);
76 /*! Get total time available
78 Time does't contain delays.
80 @return Time available in msecs */
81 virtual int getTimeAvailable();
88 /*! Refresh clock information */
89 virtual void repaintClock() = 0;
93 ChessClock* another_; /*! Another player's clock */
95 bool loser_; /*! Is player losed because of timeout */
96 int turn_; /*! Current turn */
97 RunningStatus status_;
98 TurnInformation* currentTurn_;
100 int timePlayed_; /*! Time played in this game */
101 int timeAvailableBeforeTurn_; /*! Time available for play BEFORE this turn!*/
103 bool isWhite_; /*! True if white player */
108 static const int UPDATEINTERVAL = 1000; /** Clock updating interval in msecs */
112 #endif // CHESSCLOCK_H