Updated the web pages
[chessclock] / classes / clockswidget.h
1  /**************************************************************************
2
3     Chess Clock
4
5     Copyright (c) Arto Hyvättinen 2010
6
7     This file is part of Chess Clock software.
8
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.
13
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.
18
19
20 **************************************************************************/
21
22 #ifndef CLOCKSWIDGET_H
23 #define CLOCKSWIDGET_H
24
25 #include <QWidget>
26 #include <QTime>
27
28 class QHBoxLayout;
29 class QVBoxLayout;
30 class QLabel;
31 class TurnInformation;
32 class QToolButton;
33 class ScreenLitKeeper;
34
35 class ChessClock;
36
37 /*! Widget with two clocks
38
39     @author Arto Hyvättinen
40     @date 2010-08-14
41
42     Central widget of Chess Clock.
43     Needed to create new ClocksWidget to
44     every new game.
45
46   */
47 class ClocksWidget : public QWidget
48 {
49     Q_OBJECT
50 public:
51     ClocksWidget(ChessClock* white, ChessClock* black, QWidget *parent = 0);
52     ~ClocksWidget();
53     bool isPlayStarted()  { return (status_!=Welcome); }
54
55 protected:
56     void mouseReleaseEvent(QMouseEvent *event);
57     bool eventFilter(QObject *obj, QEvent *event);
58
59
60 signals:
61    void TurnFinished(TurnInformation* turnInfo);
62    void ClickedWhenStopped();
63
64 public slots:
65    /*! Pause game */
66     void pause();
67     /*! End the game */
68     void stopPlay();
69     /*! Not to keep screen lit */
70     void saveScreen();
71
72 protected:
73     ChessClock* white_;
74     ChessClock* black_;
75
76     QLabel* pauseLabel_;
77     QLabel* welcomeLabel_;
78     QToolButton* pauseButton_;
79     ScreenLitKeeper* keeper_;
80
81     enum GameStatus {
82         Stopped  /*! Not running */,
83         WhiteTurn,
84         BlackTurn,
85         WhitePause,
86         BlackPause,
87         Welcome
88         };
89
90     GameStatus status_;
91     QTime delayTimer_; /*! To avoid double clicks */
92
93     int recentX;
94     int recentY;
95
96     static int const CLICKDELAY = 1500 ; /*! Click delay in msecs */
97
98
99
100 };
101
102 #endif // CLOCKSWIDGET_H