summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/clock/clock.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/tools/clock/clock.cpp b/noncore/tools/clock/clock.cpp
index ad422a6..e681650 100644
--- a/noncore/tools/clock/clock.cpp
+++ b/noncore/tools/clock/clock.cpp
@@ -1,488 +1,488 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20// changes added and Copyright (C) by L. J. Potter <ljp@llornkcor.com> 2002 20// changes added and Copyright (C) by L. J. Potter <ljp@llornkcor.com> 2002
21// changes added and Copyright (C) by Holger Freyther 2004 21// changes added and Copyright (C) by Holger Freyther 2004
22 22
23#include "clock.h" 23#include "clock.h"
24 24
25#include "analogclock.h" 25#include "analogclock.h"
26 26
27#include <qtabwidget.h> 27#include <qtabwidget.h>
28 28
29#include <opie2/ofiledialog.h> 29#include <opie2/ofiledialog.h>
30 30
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#include <qpe/qcopenvelope_qws.h> 32#include <qpe/qcopenvelope_qws.h>
33#include <qpe/config.h> 33#include <qpe/config.h>
34#include <qpe/timestring.h> 34#include <qpe/timestring.h>
35#include <qpe/alarmserver.h> 35#include <qpe/alarmserver.h>
36#include <qpe/sound.h> 36#include <qpe/sound.h>
37#include <qpe/resource.h> 37#include <qpe/resource.h>
38#include <qsound.h> 38#include <qsound.h>
39#include <qtimer.h> 39#include <qtimer.h>
40 40
41 41
42 42
43#include <qlcdnumber.h> 43#include <qlcdnumber.h>
44#include <qslider.h> 44#include <qslider.h>
45#include <qlabel.h> 45#include <qlabel.h>
46#include <qtimer.h> 46#include <qtimer.h>
47#include <qpushbutton.h> 47#include <qpushbutton.h>
48#include <qtoolbutton.h> 48#include <qtoolbutton.h>
49#include <qpainter.h> 49#include <qpainter.h>
50#include <qmessagebox.h> 50#include <qmessagebox.h>
51#include <qdatetime.h> 51#include <qdatetime.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qcombobox.h> 53#include <qcombobox.h>
54#include <qcheckbox.h> 54#include <qcheckbox.h>
55#include <qgroupbox.h> 55#include <qgroupbox.h>
56#include <qlayout.h> 56#include <qlayout.h>
57#include <qhbox.h> 57#include <qhbox.h>
58#include <qlineedit.h> 58#include <qlineedit.h>
59 59
60static const int sw_prec = 2; 60static const int sw_prec = 2;
61static const int magic_daily = 2292922; 61static const int magic_daily = 2292922;
62static const int magic_countdown = 2292923; 62static const int magic_countdown = 2292923;
63static const int magic_snooze = 2292924; 63static const int magic_snooze = 2292924;
64static const int magic_playmp = 2292925; 64static const int magic_playmp = 2292925;
65 65
66#include <math.h> 66#include <math.h>
67#include <unistd.h> 67#include <unistd.h>
68#include <sys/types.h> 68#include <sys/types.h>
69 69
70#include <pthread.h> 70#include <pthread.h>
71 71
72 72
73static void toggleScreenSaver( bool on ) 73static void toggleScreenSaver( bool on )
74{ 74{
75 QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" ); 75 QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" );
76 e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend ); 76 e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend );
77} 77}
78 78
79static void startPlayer() 79static void startPlayer()
80{ 80{
81 Config config( "qpe" ); 81 Config config( "qpe" );
82 config.setGroup( "Time" ); 82 config.setGroup( "Time" );
83 sleep(15); 83 sleep(15);
84 QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" ); 84 QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" );
85 e << config.readEntry( "mp3File", "" ); 85 e << config.readEntry( "mp3File", "" );
86} 86}
87 87
88class MySpinBox : public QSpinBox 88class MySpinBox : public QSpinBox
89{ 89{
90public: 90public:
91 QLineEdit *lineEdit() const { 91 QLineEdit *lineEdit() const {
92 return editor(); 92 return editor();
93 } 93 }
94}; 94};
95 95
96// 96//
97// 97//
98// 98//
99AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal, 99AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal,
100 const QString &txt) : 100 const QString &txt) :
101 AlarmDlgBase(parent, name, modal) 101 AlarmDlgBase(parent, name, modal)
102{ 102{
103 setCaption( tr("Clock") ); 103 setCaption( tr("Clock") );
104 pixmap->setPixmap( Resource::loadPixmap("alarmbell") ); 104 pixmap->setPixmap( Resource::loadPixmap("clock/alarmbell") );
105 alarmDlgLabel->setText(txt); 105 alarmDlgLabel->setText(txt);
106 106
107 connect(snoozeTime, SIGNAL(valueChanged(int)), this, 107 connect(snoozeTime, SIGNAL(valueChanged(int)), this,
108 SLOT(changePrompt(int))); 108 SLOT(changePrompt(int)));
109 connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze())); 109 connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze()));
110} 110}
111 111
112// 112//
113// 113//
114// 114//
115void 115void
116AlarmDlg::setText(const QString &txt) 116AlarmDlg::setText(const QString &txt)
117{ 117{
118 alarmDlgLabel->setText(txt); 118 alarmDlgLabel->setText(txt);
119} 119}
120 120
121// 121//
122// 122//
123// 123//
124void 124void
125AlarmDlg::checkSnooze(void) 125AlarmDlg::checkSnooze(void)
126{ 126{
127 // 127 //
128 // Ensure we have only one snooze alarm. 128 // Ensure we have only one snooze alarm.
129 // 129 //
130 AlarmServer::deleteAlarm(QDateTime(), "QPE/Application/clock", 130 AlarmServer::deleteAlarm(QDateTime(), "QPE/Application/clock",
131 "alarm(QDateTime,int)", magic_snooze); 131 "alarm(QDateTime,int)", magic_snooze);
132 132
133 if (snoozeTime->value() > 0) { 133 if (snoozeTime->value() > 0) {
134 QDateTime wake = QDateTime::currentDateTime(); 134 QDateTime wake = QDateTime::currentDateTime();
135 wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes 135 wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes
136 136
137 AlarmServer::addAlarm(wake, "QPE/Application/clock", 137 AlarmServer::addAlarm(wake, "QPE/Application/clock",
138 "alarm(QDateTime,int)", magic_snooze); 138 "alarm(QDateTime,int)", magic_snooze);
139 } 139 }
140 accept(); 140 accept();
141} 141}
142 142
143 143
144 144
145void 145void
146AlarmDlg::changePrompt(int mins) 146AlarmDlg::changePrompt(int mins)
147{ 147{
148 cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") ); 148 cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") );
149} 149}
150 150
151 151
152 152
153Clock::Clock( QWidget * parent, const char *, WFlags f ) 153Clock::Clock( QWidget * parent, const char *, WFlags f )
154 : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr 154 : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr
155{ 155{
156 alarmDlg = 0; 156 alarmDlg = 0;
157 swLayout = 0; 157 swLayout = 0;
158 dayBtn = new QToolButton * [7]; 158 dayBtn = new QToolButton * [7];
159 159
160 Config config( "qpe" ); 160 Config config( "qpe" );
161 config.setGroup("Time"); 161 config.setGroup("Time");
162 ampm = config.readBoolEntry( "AMPM", TRUE ); 162 ampm = config.readBoolEntry( "AMPM", TRUE );
163 onMonday = config.readBoolEntry( "MONDAY" ); 163 onMonday = config.readBoolEntry( "MONDAY" );
164 164
165 connect( tabs, SIGNAL(currentChanged(QWidget*)), 165 connect( tabs, SIGNAL(currentChanged(QWidget*)),
166 this, SLOT(tabChanged(QWidget*)) ); 166 this, SLOT(tabChanged(QWidget*)) );
167 167
168 analogStopwatch = new AnalogClock( swFrame ); 168 analogStopwatch = new AnalogClock( swFrame );
169 stopwatchLcd = new QLCDNumber( swFrame ); 169 stopwatchLcd = new QLCDNumber( swFrame );
170 stopwatchLcd->setFrameStyle( QFrame::NoFrame ); 170 stopwatchLcd->setFrameStyle( QFrame::NoFrame );
171 stopwatchLcd->setSegmentStyle( QLCDNumber::Flat ); 171 stopwatchLcd->setSegmentStyle( QLCDNumber::Flat );
172 stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) ); 172 stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) );
173 173
174 analogClock->display( QTime::currentTime() ); 174 analogClock->display( QTime::currentTime() );
175 clockLcd->setNumDigits( 5 ); 175 clockLcd->setNumDigits( 5 );
176 clockLcd->setFixedWidth( clockLcd->sizeHint().width() ); 176 clockLcd->setFixedWidth( clockLcd->sizeHint().width() );
177 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); 177 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) );
178 if ( qApp->desktop()->width() < 200 ) 178 if ( qApp->desktop()->width() < 200 )
179 date->setFont( QFont(date->font().family(), 14, QFont::Bold) ); 179 date->setFont( QFont(date->font().family(), 14, QFont::Bold) );
180 if ( qApp->desktop()->height() > 240 ) { 180 if ( qApp->desktop()->height() > 240 ) {
181 clockLcd->setFixedHeight( 30 ); 181 clockLcd->setFixedHeight( 30 );
182 stopwatchLcd->setFixedHeight( 30 ); 182 stopwatchLcd->setFixedHeight( 30 );
183 } 183 }
184 184
185 connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) ); 185 connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) );
186 connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) ); 186 connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) );
187 187
188 t = new QTimer( this ); 188 t = new QTimer( this );
189 connect( t, SIGNAL(timeout()), SLOT(updateClock()) ); 189 connect( t, SIGNAL(timeout()), SLOT(updateClock()) );
190 t->start( 1000 ); 190 t->start( 1000 );
191 191
192 applyAlarmTimer = new QTimer( this ); 192 applyAlarmTimer = new QTimer( this );
193 connect( applyAlarmTimer, SIGNAL(timeout()), 193 connect( applyAlarmTimer, SIGNAL(timeout()),
194 this, SLOT(applyDailyAlarm()) ); 194 this, SLOT(applyDailyAlarm()) );
195 195
196 alarmt = new QTimer( this ); 196 alarmt = new QTimer( this );
197 connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) ); 197 connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) );
198 198
199 connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) ); 199 connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) );
200 connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) ); 200 connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) );
201 201
202 swatch_running = FALSE; 202 swatch_running = FALSE;
203 swatch_totalms = 0; 203 swatch_totalms = 0;
204 swatch_currLap = 0; 204 swatch_currLap = 0;
205 swatch_dispLap = 0; 205 swatch_dispLap = 0;
206 stopwatchLcd->setNumDigits( 8+1+sw_prec ); 206 stopwatchLcd->setNumDigits( 8+1+sw_prec );
207 stopwatchLcd->display( "00:00:00.00" ); 207 stopwatchLcd->display( "00:00:00.00" );
208 208
209 QVBoxLayout *lvb = new QVBoxLayout( lapFrame ); 209 QVBoxLayout *lvb = new QVBoxLayout( lapFrame );
210 nextLapBtn = new QToolButton( UpArrow, lapFrame ); 210 nextLapBtn = new QToolButton( UpArrow, lapFrame );
211 connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) ); 211 connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) );
212 nextLapBtn->setAccel( Key_Up ); 212 nextLapBtn->setAccel( Key_Up );
213 lvb->addWidget( nextLapBtn ); 213 lvb->addWidget( nextLapBtn );
214 prevLapBtn = new QToolButton( DownArrow, lapFrame ); 214 prevLapBtn = new QToolButton( DownArrow, lapFrame );
215 connect( prevLapBtn, SIGNAL(clicked()), this, SLOT(prevLap()) ); 215 connect( prevLapBtn, SIGNAL(clicked()), this, SLOT(prevLap()) );
216 prevLapBtn->setAccel( Key_Down ); 216 prevLapBtn->setAccel( Key_Down );
217 prevLapBtn->setMinimumWidth( 15 ); 217 prevLapBtn->setMinimumWidth( 15 );
218 lvb->addWidget( prevLapBtn ); 218 lvb->addWidget( prevLapBtn );
219 prevLapBtn->setEnabled( FALSE ); 219 prevLapBtn->setEnabled( FALSE );
220 nextLapBtn->setEnabled( FALSE ); 220 nextLapBtn->setEnabled( FALSE );
221 221
222 reset->setEnabled( FALSE ); 222 reset->setEnabled( FALSE );
223 223
224 lapLcd->setNumDigits( 8+1+sw_prec ); 224 lapLcd->setNumDigits( 8+1+sw_prec );
225 lapLcd->display( "00:00:00.00" ); 225 lapLcd->display( "00:00:00.00" );
226 226
227 splitLcd->setNumDigits( 8+1+sw_prec ); 227 splitLcd->setNumDigits( 8+1+sw_prec );
228 splitLcd->display( "00:00:00.00" ); 228 splitLcd->display( "00:00:00.00" );
229 229
230 lapNumLcd->display( 1 ); 230 lapNumLcd->display( 1 );
231 231
232 lapTimer = new QTimer( this ); 232 lapTimer = new QTimer( this );
233 connect( lapTimer, SIGNAL(timeout()), this, SLOT(lapTimeout()) ); 233 connect( lapTimer, SIGNAL(timeout()), this, SLOT(lapTimeout()) );
234 234
235 for (uint s = 0; s < swatch_splitms.count(); s++ ) 235 for (uint s = 0; s < swatch_splitms.count(); s++ )
236 swatch_splitms[(int)s] = 0; 236 swatch_splitms[(int)s] = 0;
237 237
238 connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); 238 connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) );
239 239
240 cdGroup->hide(); // XXX implement countdown timer. 240 cdGroup->hide(); // XXX implement countdown timer.
241 241
242 connect( dailyHour, SIGNAL(valueChanged(int)), this, SLOT(scheduleApplyDailyAlarm()) ); 242 connect( dailyHour, SIGNAL(valueChanged(int)), this, SLOT(scheduleApplyDailyAlarm()) );
243 connect( dailyMinute, SIGNAL(valueChanged(int)), this, SLOT(setDailyMinute(int)) ); 243 connect( dailyMinute, SIGNAL(valueChanged(int)), this, SLOT(setDailyMinute(int)) );
244 connect( dailyAmPm, SIGNAL(activated(int)), this, SLOT(setDailyAmPm(int)) ); 244 connect( dailyAmPm, SIGNAL(activated(int)), this, SLOT(setDailyAmPm(int)) );
245 connect( dailyEnabled, SIGNAL(toggled(bool)), this, SLOT(enableDaily(bool)) ); 245 connect( dailyEnabled, SIGNAL(toggled(bool)), this, SLOT(enableDaily(bool)) );
246 cdLcd->display( "00:00" ); 246 cdLcd->display( "00:00" );
247 247
248 dailyMinute->setValidator(0); 248 dailyMinute->setValidator(0);
249 249
250 Config cConfig( "Clock" ); // No tr 250 Config cConfig( "Clock" ); // No tr
251 cConfig.setGroup( "Daily Alarm" ); 251 cConfig.setGroup( "Daily Alarm" );
252 252
253 QStringList days; 253 QStringList days;
254 days.append( tr("Mon", "Monday") ); 254 days.append( tr("Mon", "Monday") );
255 days.append( tr("Tue", "Tuesday") ); 255 days.append( tr("Tue", "Tuesday") );
256 days.append( tr("Wed", "Wednesday") ); 256 days.append( tr("Wed", "Wednesday") );
257 days.append( tr("Thu", "Thursday") ); 257 days.append( tr("Thu", "Thursday") );
258 days.append( tr("Fri", "Friday") ); 258 days.append( tr("Fri", "Friday") );
259 days.append( tr("Sat", "Saturday") ); 259 days.append( tr("Sat", "Saturday") );
260 days.append( tr("Sun", "Sunday") ); 260 days.append( tr("Sun", "Sunday") );
261 261
262 int i; 262 int i;
263 QHBoxLayout *hb = new QHBoxLayout( daysFrame ); 263 QHBoxLayout *hb = new QHBoxLayout( daysFrame );
264 for ( i = 0; i < 7; i++ ) { 264 for ( i = 0; i < 7; i++ ) {
265 dayBtn[i] = new QToolButton( daysFrame ); 265 dayBtn[i] = new QToolButton( daysFrame );
266 hb->addWidget( dayBtn[i] ); 266 hb->addWidget( dayBtn[i] );
267 dayBtn[i]->setToggleButton( TRUE ); 267 dayBtn[i]->setToggleButton( TRUE );
268 dayBtn[i]->setOn( TRUE ); 268 dayBtn[i]->setOn( TRUE );
269 dayBtn[i]->setFocusPolicy( StrongFocus ); 269 dayBtn[i]->setFocusPolicy( StrongFocus );
270 connect( dayBtn[i], SIGNAL(toggled(bool)), this, SLOT(scheduleApplyDailyAlarm()) ); 270 connect( dayBtn[i], SIGNAL(toggled(bool)), this, SLOT(scheduleApplyDailyAlarm()) );
271 } 271 }
272 272
273 for ( i = 0; i < 7; i++ ) 273 for ( i = 0; i < 7; i++ )
274 dayBtn[dayBtnIdx(i+1)]->setText( days[i] ); 274 dayBtn[dayBtnIdx(i+1)]->setText( days[i] );
275 275
276 QStringList exclDays = cConfig.readListEntry( "ExcludeDays", ',' ); 276 QStringList exclDays = cConfig.readListEntry( "ExcludeDays", ',' );
277 QStringList::Iterator it; 277 QStringList::Iterator it;
278 for ( it = exclDays.begin(); it != exclDays.end(); ++it ) { 278 for ( it = exclDays.begin(); it != exclDays.end(); ++it ) {
279 int d = (*it).toInt(); 279 int d = (*it).toInt();
280 if ( d >= 1 && d <= 7 ) 280 if ( d >= 1 && d <= 7 )
281 dayBtn[dayBtnIdx(d)]->setOn( FALSE ); 281 dayBtn[dayBtnIdx(d)]->setOn( FALSE );
282 } 282 }
283 283
284 bool alarm = cConfig.readBoolEntry("Enabled", FALSE); 284 bool alarm = cConfig.readBoolEntry("Enabled", FALSE);
285 bool sound = cConfig.readBoolEntry("SoundEnabled", FALSE ); 285 bool sound = cConfig.readBoolEntry("SoundEnabled", FALSE );
286 dailyEnabled->setChecked( alarm ); 286 dailyEnabled->setChecked( alarm );
287 sndGroup->setEnabled( alarm ); 287 sndGroup->setEnabled( alarm );
288 sndCheck->setChecked( sound ); 288 sndCheck->setChecked( sound );
289 sndChoose->setEnabled( sound ); 289 sndChoose->setEnabled( sound );
290 sndFileName->setEnabled( sound ); 290 sndFileName->setEnabled( sound );
291 291
292 // FIXME ODP migrate to own config class.. merge config options 292 // FIXME ODP migrate to own config class.. merge config options
293 Config cfg_qpe( "qpe" ); 293 Config cfg_qpe( "qpe" );
294 cfg_qpe.setGroup( "Time" ); 294 cfg_qpe.setGroup( "Time" );
295 sndFileName->setText( cfg_qpe.readEntry( "mp3File" ) ); 295 sndFileName->setText( cfg_qpe.readEntry( "mp3File" ) );
296 // 296 //
297 297
298 int m = cConfig.readNumEntry( "Minute", 0 ); 298 int m = cConfig.readNumEntry( "Minute", 0 );
299 dailyMinute->setValue( m ); 299 dailyMinute->setValue( m );
300// dailyMinute->setPrefix( m <= 9 ? "0" : "" ); 300// dailyMinute->setPrefix( m <= 9 ? "0" : "" );
301 int h = cConfig.readNumEntry( "Hour", 7 ); 301 int h = cConfig.readNumEntry( "Hour", 7 );
302 if ( ampm ) { 302 if ( ampm ) {
303 if (h > 12) { 303 if (h > 12) {
304 h -= 12; 304 h -= 12;
305 dailyAmPm->setCurrentItem( 1 ); 305 dailyAmPm->setCurrentItem( 1 );
306 } 306 }
307 if (h == 0) h = 12; 307 if (h == 0) h = 12;
308 dailyHour->setMinValue( 1 ); 308 dailyHour->setMinValue( 1 );
309 dailyHour->setMaxValue( 12 ); 309 dailyHour->setMaxValue( 12 );
310 } else { 310 } else {
311 dailyAmPm->hide(); 311 dailyAmPm->hide();
312 } 312 }
313 dailyHour->setValue( h ); 313 dailyHour->setValue( h );
314 314
315 connect( ((MySpinBox*)dailyHour)->lineEdit(), SIGNAL(textChanged(const QString&)), 315 connect( ((MySpinBox*)dailyHour)->lineEdit(), SIGNAL(textChanged(const QString&)),
316 this, SLOT(dailyEdited()) ); 316 this, SLOT(dailyEdited()) );
317 connect( ((MySpinBox*)dailyMinute)->lineEdit(), SIGNAL(textChanged(const QString&)), 317 connect( ((MySpinBox*)dailyMinute)->lineEdit(), SIGNAL(textChanged(const QString&)),
318 this, SLOT(dailyEdited()) ); 318 this, SLOT(dailyEdited()) );
319 319
320#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 320#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
321 connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), 321 connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
322 this, SLOT(appMessage(const QCString&,const QByteArray&)) ); 322 this, SLOT(appMessage(const QCString&,const QByteArray&)) );
323#endif 323#endif
324 324
325 QTimer::singleShot( 0, this, SLOT(updateClock()) ); 325 QTimer::singleShot( 0, this, SLOT(updateClock()) );
326 swFrame->installEventFilter( this ); 326 swFrame->installEventFilter( this );
327 327
328 init = TRUE; 328 init = TRUE;
329} 329}
330 330
331Clock::~Clock() 331Clock::~Clock()
332{ 332{
333 toggleScreenSaver( true ); 333 toggleScreenSaver( true );
334 delete [] dayBtn; 334 delete [] dayBtn;
335} 335}
336 336
337void Clock::updateClock() 337void Clock::updateClock()
338{ 338{
339 if ( tabs->currentPageIndex() == 0 ) { 339 if ( tabs->currentPageIndex() == 0 ) {
340 QTime tm = QDateTime::currentDateTime().time(); 340 QTime tm = QDateTime::currentDateTime().time();
341 QString s; 341 QString s;
342 if ( ampm ) { 342 if ( ampm ) {
343 int hour = tm.hour(); 343 int hour = tm.hour();
344 if (hour == 0) 344 if (hour == 0)
345 hour = 12; 345 hour = 12;
346 if (hour > 12) 346 if (hour > 12)
347 hour -= 12; 347 hour -= 12;
348 s.sprintf( "%2d%c%02d", hour, ':', tm.minute() ); 348 s.sprintf( "%2d%c%02d", hour, ':', tm.minute() );
349 clockAmPm->setText( (tm.hour() >= 12) ? "PM" : "AM" ); 349 clockAmPm->setText( (tm.hour() >= 12) ? "PM" : "AM" );
350 clockAmPm->show(); 350 clockAmPm->show();
351 } else { 351 } else {
352 s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() ); 352 s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() );
353 clockAmPm->hide(); 353 clockAmPm->hide();
354 } 354 }
355 clockLcd->display( s ); 355 clockLcd->display( s );
356 clockLcd->repaint( FALSE ); 356 clockLcd->repaint( FALSE );
357 analogClock->display( QTime::currentTime() ); 357 analogClock->display( QTime::currentTime() );
358 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); 358 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) );
359 } else if ( tabs->currentPageIndex() == 1 ) { 359 } else if ( tabs->currentPageIndex() == 1 ) {
360 int totalms = swatch_totalms; 360 int totalms = swatch_totalms;
361 if ( swatch_running ) 361 if ( swatch_running )
362 totalms += swatch_start.elapsed(); 362 totalms += swatch_start.elapsed();
363 setSwatchLcd( stopwatchLcd, totalms, !swatch_running ); 363 setSwatchLcd( stopwatchLcd, totalms, !swatch_running );
364 QTime swatch_time = QTime(0,0,0).addMSecs(totalms); 364 QTime swatch_time = QTime(0,0,0).addMSecs(totalms);
365 analogStopwatch->display( swatch_time ); 365 analogStopwatch->display( swatch_time );
366 if ( swatch_dispLap == swatch_currLap ) { 366 if ( swatch_dispLap == swatch_currLap ) {
367 swatch_splitms[swatch_currLap] = swatch_totalms; 367 swatch_splitms[swatch_currLap] = swatch_totalms;
368 if ( swatch_running ) 368 if ( swatch_running )
369 swatch_splitms[swatch_currLap] += swatch_start.elapsed(); 369 swatch_splitms[swatch_currLap] += swatch_start.elapsed();
370 updateLap(); 370 updateLap();
371 } 371 }
372 } else if ( tabs->currentPageIndex() == 2 ) { 372 } else if ( tabs->currentPageIndex() == 2 ) {
373 // nothing. 373 // nothing.
374 } 374 }
375} 375}
376 376
377void Clock::changeClock( bool a ) 377void Clock::changeClock( bool a )
378{ 378{
379 if ( ampm != a ) { 379 if ( ampm != a ) {
380 int minute = dailyMinute->value(); 380 int minute = dailyMinute->value();
381 int hour = dailyHour->value(); 381 int hour = dailyHour->value();
382 if ( ampm ) { 382 if ( ampm ) {
383 if (hour == 12) 383 if (hour == 12)
384 hour = 0; 384 hour = 0;
385 if (dailyAmPm->currentItem() == 1 ) 385 if (dailyAmPm->currentItem() == 1 )
386 hour += 12; 386 hour += 12;
387 dailyHour->setMinValue( 0 ); 387 dailyHour->setMinValue( 0 );
388 dailyHour->setMaxValue( 23 ); 388 dailyHour->setMaxValue( 23 );
389 dailyAmPm->hide(); 389 dailyAmPm->hide();
390 } else { 390 } else {
391 if (hour > 12) { 391 if (hour > 12) {
392 hour -= 12; 392 hour -= 12;
393 dailyAmPm->setCurrentItem( 1 ); 393 dailyAmPm->setCurrentItem( 1 );
394 } 394 }
395 if (hour == 0) hour = 12; 395 if (hour == 0) hour = 12;
396 dailyHour->setMinValue( 1 ); 396 dailyHour->setMinValue( 1 );
397 dailyHour->setMaxValue( 12 ); 397 dailyHour->setMaxValue( 12 );
398 dailyAmPm->show(); 398 dailyAmPm->show();
399 } 399 }
400 dailyMinute->setValue( minute ); 400 dailyMinute->setValue( minute );
401 dailyHour->setValue( hour ); 401 dailyHour->setValue( hour );
402 } 402 }
403 ampm = a; 403 ampm = a;
404 updateClock(); 404 updateClock();
405} 405}
406 406
407void Clock::stopStartStopWatch() 407void Clock::stopStartStopWatch()
408{ 408{
409 if ( swatch_running ) { 409 if ( swatch_running ) {
410 swatch_totalms += swatch_start.elapsed(); 410 swatch_totalms += swatch_start.elapsed();
411 swatch_splitms[swatch_currLap] = swatch_totalms; 411 swatch_splitms[swatch_currLap] = swatch_totalms;
412 stopStart->setText( tr("Start") ); 412 stopStart->setText( tr("Start") );
413 reset->setText( tr("Reset") ); 413 reset->setText( tr("Reset") );
414 reset->setEnabled( TRUE ); 414 reset->setEnabled( TRUE );
415 t->stop(); 415 t->stop();
416 swatch_running = FALSE; 416 swatch_running = FALSE;
417 toggleScreenSaver( TRUE ); 417 toggleScreenSaver( TRUE );
418 updateClock(); 418 updateClock();
419 } else { 419 } else {
420 swatch_start.start(); 420 swatch_start.start();
421 stopStart->setText( tr("Stop") ); 421 stopStart->setText( tr("Stop") );
422 reset->setText( tr("Lap/Split") ); 422 reset->setText( tr("Lap/Split") );
423 reset->setEnabled( swatch_currLap < 98 ); 423 reset->setEnabled( swatch_currLap < 98 );
424 t->start( 1000 ); 424 t->start( 1000 );
425 swatch_running = TRUE; 425 swatch_running = TRUE;
426 // disable screensaver while stop watch is running 426 // disable screensaver while stop watch is running
427 toggleScreenSaver( FALSE ); 427 toggleScreenSaver( FALSE );
428 } 428 }
429 swatch_dispLap = swatch_currLap; 429 swatch_dispLap = swatch_currLap;
430 updateLap(); 430 updateLap();
431 prevLapBtn->setEnabled( swatch_dispLap ); 431 prevLapBtn->setEnabled( swatch_dispLap );
432 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); 432 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap );
433 stopStart->setAccel( Key_Return ); 433 stopStart->setAccel( Key_Return );
434} 434}
435 435
436void Clock::resetStopWatch() 436void Clock::resetStopWatch()
437{ 437{
438 if ( swatch_running ) { 438 if ( swatch_running ) {
439 swatch_splitms[swatch_currLap] = swatch_totalms+swatch_start.elapsed(); 439 swatch_splitms[swatch_currLap] = swatch_totalms+swatch_start.elapsed();
440 swatch_dispLap = swatch_currLap; 440 swatch_dispLap = swatch_currLap;
441 if ( swatch_currLap < 98 ) // allow up to 99 laps 441 if ( swatch_currLap < 98 ) // allow up to 99 laps
442 swatch_currLap++; 442 swatch_currLap++;
443 reset->setEnabled( swatch_currLap < 98 ); 443 reset->setEnabled( swatch_currLap < 98 );
444 updateLap(); 444 updateLap();
445 lapTimer->start( 2000, TRUE ); 445 lapTimer->start( 2000, TRUE );
446 } else { 446 } else {
447 swatch_start.start(); 447 swatch_start.start();
448 swatch_totalms = 0; 448 swatch_totalms = 0;
449 swatch_currLap = 0; 449 swatch_currLap = 0;
450 swatch_dispLap = 0; 450 swatch_dispLap = 0;
451 for ( uint i = 0; i < swatch_splitms.count(); i++ ) 451 for ( uint i = 0; i < swatch_splitms.count(); i++ )
452 swatch_splitms[(int)i] = 0; 452 swatch_splitms[(int)i] = 0;
453 updateLap(); 453 updateLap();
454 updateClock(); 454 updateClock();
455 reset->setText( tr("Lap/Split") ); 455 reset->setText( tr("Lap/Split") );
456 reset->setEnabled( FALSE ); 456 reset->setEnabled( FALSE );
457 } 457 }
458 prevLapBtn->setEnabled( swatch_dispLap ); 458 prevLapBtn->setEnabled( swatch_dispLap );
459 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); 459 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap );
460} 460}
461 461
462void Clock::prevLap() 462void Clock::prevLap()
463{ 463{
464 if ( swatch_dispLap > 0 ) { 464 if ( swatch_dispLap > 0 ) {
465 swatch_dispLap--; 465 swatch_dispLap--;
466 updateLap(); 466 updateLap();
467 prevLapBtn->setEnabled( swatch_dispLap ); 467 prevLapBtn->setEnabled( swatch_dispLap );
468 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); 468 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap );
469 } 469 }
470} 470}
471 471
472void Clock::nextLap() 472void Clock::nextLap()
473{ 473{
474 if ( swatch_dispLap < swatch_currLap ) { 474 if ( swatch_dispLap < swatch_currLap ) {
475 swatch_dispLap++; 475 swatch_dispLap++;
476 updateLap(); 476 updateLap();
477 prevLapBtn->setEnabled( swatch_dispLap ); 477 prevLapBtn->setEnabled( swatch_dispLap );
478 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); 478 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap );
479 } 479 }
480} 480}
481 481
482void Clock::lapTimeout() 482void Clock::lapTimeout()
483{ 483{
484 swatch_dispLap = swatch_currLap; 484 swatch_dispLap = swatch_currLap;
485 updateLap(); 485 updateLap();
486 prevLapBtn->setEnabled( swatch_dispLap ); 486 prevLapBtn->setEnabled( swatch_dispLap );
487 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); 487 nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap );
488} 488}