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,296 +1,296 @@
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 //