annotate examples/widgets/analogclock/AnalogClock.d @ 282:256ab6cb8e85

Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
author eldar
date Fri, 16 Oct 2009 02:43:59 +0000
parents 1d272f0bfefa
children 7a3c43424dca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /****************************************************************************
e78566595089 initial import
mandel
parents:
diff changeset
2 **
e78566595089 initial import
mandel
parents:
diff changeset
3 ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
e78566595089 initial import
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
e78566595089 initial import
mandel
parents:
diff changeset
5 **
e78566595089 initial import
mandel
parents:
diff changeset
6 ** This file is part of the example classes of the Qt Toolkit.
e78566595089 initial import
mandel
parents:
diff changeset
7 **
e78566595089 initial import
mandel
parents:
diff changeset
8 ** Commercial Usage
e78566595089 initial import
mandel
parents:
diff changeset
9 ** Licensees holding valid Qt Commercial licenses may use this file in
e78566595089 initial import
mandel
parents:
diff changeset
10 ** accordance with the Qt Commercial License Agreement provided with the
e78566595089 initial import
mandel
parents:
diff changeset
11 ** Software or, alternatively, in accordance with the terms contained in
e78566595089 initial import
mandel
parents:
diff changeset
12 ** a written agreement between you and Nokia.
e78566595089 initial import
mandel
parents:
diff changeset
13 **
e78566595089 initial import
mandel
parents:
diff changeset
14 **
e78566595089 initial import
mandel
parents:
diff changeset
15 ** GNU General Public License Usage
e78566595089 initial import
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU
e78566595089 initial import
mandel
parents:
diff changeset
17 ** General Public License versions 2.0 or 3.0 as published by the Free
e78566595089 initial import
mandel
parents:
diff changeset
18 ** Software Foundation and appearing in the file LICENSE.GPL included in
e78566595089 initial import
mandel
parents:
diff changeset
19 ** the packaging of this file. Please review the following information
e78566595089 initial import
mandel
parents:
diff changeset
20 ** to ensure GNU General Public Licensing requirements will be met:
e78566595089 initial import
mandel
parents:
diff changeset
21 ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
e78566595089 initial import
mandel
parents:
diff changeset
22 ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
e78566595089 initial import
mandel
parents:
diff changeset
23 ** exception, Nokia gives you certain additional rights. These rights
e78566595089 initial import
mandel
parents:
diff changeset
24 ** are described in the Nokia Qt GPL Exception version 1.3, included in
e78566595089 initial import
mandel
parents:
diff changeset
25 ** the file GPL_EXCEPTION.txt in this package.
e78566595089 initial import
mandel
parents:
diff changeset
26 **
e78566595089 initial import
mandel
parents:
diff changeset
27 ** Qt for Windows(R) Licensees
e78566595089 initial import
mandel
parents:
diff changeset
28 ** As a special exception, Nokia, as the sole copyright holder for Qt
e78566595089 initial import
mandel
parents:
diff changeset
29 ** Designer, grants users of the Qt/Eclipse Integration plug-in the
e78566595089 initial import
mandel
parents:
diff changeset
30 ** right for the Qt/Eclipse Integration to link to functionality
e78566595089 initial import
mandel
parents:
diff changeset
31 ** provided by Qt Designer and its related libraries.
e78566595089 initial import
mandel
parents:
diff changeset
32 **
e78566595089 initial import
mandel
parents:
diff changeset
33 ** If you are unsure which license is appropriate for your use, please
e78566595089 initial import
mandel
parents:
diff changeset
34 ** contact the sales department at qt-sales@nokia.com.
e78566595089 initial import
mandel
parents:
diff changeset
35 **
e78566595089 initial import
mandel
parents:
diff changeset
36 ****************************************************************************/
e78566595089 initial import
mandel
parents:
diff changeset
37
e78566595089 initial import
mandel
parents:
diff changeset
38 module AnalogClock;
e78566595089 initial import
mandel
parents:
diff changeset
39
e78566595089 initial import
mandel
parents:
diff changeset
40 import qt.core.QPoint;
e78566595089 initial import
mandel
parents:
diff changeset
41 import qt.core.QTime;
e78566595089 initial import
mandel
parents:
diff changeset
42 import qt.core.QTimer;
e78566595089 initial import
mandel
parents:
diff changeset
43
e78566595089 initial import
mandel
parents:
diff changeset
44 import qt.gui.QWidget;
e78566595089 initial import
mandel
parents:
diff changeset
45 import qt.gui.QPolygon;
e78566595089 initial import
mandel
parents:
diff changeset
46 import qt.gui.QColor;
e78566595089 initial import
mandel
parents:
diff changeset
47 import qt.gui.QPaintEvent;
e78566595089 initial import
mandel
parents:
diff changeset
48 import qt.gui.QPainter;
e78566595089 initial import
mandel
parents:
diff changeset
49
e78566595089 initial import
mandel
parents:
diff changeset
50
e78566595089 initial import
mandel
parents:
diff changeset
51 class AnalogClock : public QWidget
e78566595089 initial import
mandel
parents:
diff changeset
52 {
e78566595089 initial import
mandel
parents:
diff changeset
53 public:
e78566595089 initial import
mandel
parents:
diff changeset
54 this(QWidget parent = null)
e78566595089 initial import
mandel
parents:
diff changeset
55 {
e78566595089 initial import
mandel
parents:
diff changeset
56 super(parent);
e78566595089 initial import
mandel
parents:
diff changeset
57 auto timer = new QTimer(this);
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 192
diff changeset
58 connect!("timeout")(timer, &this.update);
1
e78566595089 initial import
mandel
parents:
diff changeset
59 timer.start(1000);
e78566595089 initial import
mandel
parents:
diff changeset
60 setWindowTitle("Analog Clock");
e78566595089 initial import
mandel
parents:
diff changeset
61 resize(200, 200);
e78566595089 initial import
mandel
parents:
diff changeset
62 }
e78566595089 initial import
mandel
parents:
diff changeset
63
e78566595089 initial import
mandel
parents:
diff changeset
64 void paintEvent(QPaintEvent event)
e78566595089 initial import
mandel
parents:
diff changeset
65 {
192
1d272f0bfefa more D2 fixed
eldar
parents: 5
diff changeset
66 const QPoint[3] hourHand = [
1
e78566595089 initial import
mandel
parents:
diff changeset
67 QPoint(7, 8),
e78566595089 initial import
mandel
parents:
diff changeset
68 QPoint(-7, 8),
e78566595089 initial import
mandel
parents:
diff changeset
69 QPoint(0, -40)
5
834feae7809b Fix include paths in CMake script.
SokoL_SD
parents: 4
diff changeset
70 ];
192
1d272f0bfefa more D2 fixed
eldar
parents: 5
diff changeset
71 const QPoint[3] minuteHand = [
1
e78566595089 initial import
mandel
parents:
diff changeset
72 QPoint(7, 8),
e78566595089 initial import
mandel
parents:
diff changeset
73 QPoint(-7, 8),
e78566595089 initial import
mandel
parents:
diff changeset
74 QPoint(0, -70)
5
834feae7809b Fix include paths in CMake script.
SokoL_SD
parents: 4
diff changeset
75 ];
1
e78566595089 initial import
mandel
parents:
diff changeset
76
e78566595089 initial import
mandel
parents:
diff changeset
77 scope hourColor = new QColor(127, 0, 127);
e78566595089 initial import
mandel
parents:
diff changeset
78 scope minuteColor = new QColor(0, 127, 127, 191);
e78566595089 initial import
mandel
parents:
diff changeset
79
e78566595089 initial import
mandel
parents:
diff changeset
80 int side = qMin(width(), height());
e78566595089 initial import
mandel
parents:
diff changeset
81 QTime time = QTime.currentTime();
e78566595089 initial import
mandel
parents:
diff changeset
82
e78566595089 initial import
mandel
parents:
diff changeset
83 // !! it is important that QPainter object should be scoped
e78566595089 initial import
mandel
parents:
diff changeset
84 // !! in order to be destroyed after painting
e78566595089 initial import
mandel
parents:
diff changeset
85 scope painter = new QPainter(this);
e78566595089 initial import
mandel
parents:
diff changeset
86
e78566595089 initial import
mandel
parents:
diff changeset
87 painter.setRenderHint(QPainter.Antialiasing);
e78566595089 initial import
mandel
parents:
diff changeset
88 painter.translate(width() / 2, height() / 2);
e78566595089 initial import
mandel
parents:
diff changeset
89 painter.scale(side / 200.0, side / 200.0);
e78566595089 initial import
mandel
parents:
diff changeset
90
e78566595089 initial import
mandel
parents:
diff changeset
91 painter.setPen(Qt.NoPen);
e78566595089 initial import
mandel
parents:
diff changeset
92 painter.setBrush(hourColor);
e78566595089 initial import
mandel
parents:
diff changeset
93
e78566595089 initial import
mandel
parents:
diff changeset
94 painter.save();
e78566595089 initial import
mandel
parents:
diff changeset
95 painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
e78566595089 initial import
mandel
parents:
diff changeset
96 painter.drawConvexPolygon(hourHand);
e78566595089 initial import
mandel
parents:
diff changeset
97 painter.restore();
e78566595089 initial import
mandel
parents:
diff changeset
98
e78566595089 initial import
mandel
parents:
diff changeset
99 painter.setPen(hourColor);
e78566595089 initial import
mandel
parents:
diff changeset
100
e78566595089 initial import
mandel
parents:
diff changeset
101 for (int i = 0; i < 12; ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
102 painter.drawLine(88, 0, 96, 0);
e78566595089 initial import
mandel
parents:
diff changeset
103 painter.rotate(30.0);
e78566595089 initial import
mandel
parents:
diff changeset
104 }
e78566595089 initial import
mandel
parents:
diff changeset
105
e78566595089 initial import
mandel
parents:
diff changeset
106 painter.setPen(Qt.NoPen);
e78566595089 initial import
mandel
parents:
diff changeset
107 painter.setBrush(minuteColor);
e78566595089 initial import
mandel
parents:
diff changeset
108
e78566595089 initial import
mandel
parents:
diff changeset
109 painter.save();
e78566595089 initial import
mandel
parents:
diff changeset
110 painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
e78566595089 initial import
mandel
parents:
diff changeset
111 painter.drawConvexPolygon(minuteHand);
e78566595089 initial import
mandel
parents:
diff changeset
112 painter.restore();
e78566595089 initial import
mandel
parents:
diff changeset
113
e78566595089 initial import
mandel
parents:
diff changeset
114 painter.setPen(minuteColor);
e78566595089 initial import
mandel
parents:
diff changeset
115
e78566595089 initial import
mandel
parents:
diff changeset
116 for (int j = 0; j < 60; ++j) {
e78566595089 initial import
mandel
parents:
diff changeset
117 if ((j % 5) != 0)
e78566595089 initial import
mandel
parents:
diff changeset
118 painter.drawLine(92, 0, 96, 0);
e78566595089 initial import
mandel
parents:
diff changeset
119 painter.rotate(6.0);
e78566595089 initial import
mandel
parents:
diff changeset
120 }
e78566595089 initial import
mandel
parents:
diff changeset
121 }
e78566595089 initial import
mandel
parents:
diff changeset
122 }