author | llornkcor <llornkcor> | 2002-03-15 04:29:42 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-03-15 04:29:42 (UTC) |
commit | a0d6c8fdac4e8644c31d1b2e2a321131be4b57c2 (patch) (unidiff) | |
tree | 319d9a01475596ccefa9765cc324485a4ce7e5aa | |
parent | 320291b5006c75e3e42ba1cbbac9639a54309553 (diff) | |
download | opie-a0d6c8fdac4e8644c31d1b2e2a321131be4b57c2.zip opie-a0d6c8fdac4e8644c31d1b2e2a321131be4b57c2.tar.gz opie-a0d6c8fdac4e8644c31d1b2e2a321131be4b57c2.tar.bz2 |
added simple 24 hr alarm features
-rw-r--r-- | noncore/tools/clock/clock.cpp | 313 | ||||
-rw-r--r-- | noncore/tools/clock/clock.h | 17 | ||||
-rw-r--r-- | noncore/tools/clock/clock.pro | 18 | ||||
-rw-r--r-- | noncore/tools/clock/setAlarm.cpp | 183 | ||||
-rw-r--r-- | noncore/tools/clock/setAlarm.h | 57 |
5 files changed, 498 insertions, 90 deletions
diff --git a/noncore/tools/clock/clock.cpp b/noncore/tools/clock/clock.cpp index ef93e11..d5d77bc 100644 --- a/noncore/tools/clock/clock.cpp +++ b/noncore/tools/clock/clock.cpp | |||
@@ -16,30 +16,39 @@ | |||
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 | 20 | ||
21 | #include "clock.h" | 21 | #include "clock.h" |
22 | #include "setAlarm.h" | ||
22 | 23 | ||
23 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
24 | #include <qpe/qcopenvelope_qws.h> | 25 | #include <qpe/qcopenvelope_qws.h> |
25 | #include <qpe/config.h> | 26 | #include <qpe/config.h> |
26 | #include <qpe/timestring.h> | 27 | #include <qpe/timestring.h> |
28 | #include <qpe/alarmserver.h> | ||
29 | #include <qpe/sound.h> | ||
30 | #include <qpe/resource.h> | ||
31 | #include <qsound.h> | ||
32 | #include <qtimer.h> | ||
27 | 33 | ||
28 | #include <qlcdnumber.h> | 34 | #include <qlcdnumber.h> |
35 | #include <qslider.h> | ||
29 | #include <qlabel.h> | 36 | #include <qlabel.h> |
30 | #include <qlayout.h> | 37 | #include <qlayout.h> |
31 | #include <qtimer.h> | 38 | #include <qtimer.h> |
32 | #include <qpushbutton.h> | 39 | #include <qpushbutton.h> |
33 | #include <qradiobutton.h> | 40 | #include <qradiobutton.h> |
34 | #include <qbuttongroup.h> | 41 | #include <qbuttongroup.h> |
35 | #include <qpainter.h> | 42 | #include <qpainter.h> |
43 | #include <qmessagebox.h> | ||
44 | #include <qdatetime.h> | ||
36 | 45 | ||
37 | #include <math.h> | 46 | #include <math.h> |
38 | 47 | ||
39 | const double deg2rad = 0.017453292519943295769;// pi/180 | 48 | const double deg2rad = 0.017453292519943295769; // pi/180 |
40 | const int sw_prec = 2; | 49 | const int sw_prec = 2; |
41 | 50 | ||
42 | static void toggleScreenSaver( bool on ) | 51 | static void toggleScreenSaver( bool on ) |
43 | { | 52 | { |
44 | QCopEnvelope e("QPE/System", "setScreenSaverMode(int)" ); | 53 | QCopEnvelope e("QPE/System", "setScreenSaverMode(int)" ); |
45 | e << (on ? QPEApplication::Enable: QPEApplication::DisableSuspend ); | 54 | e << (on ? QPEApplication::Enable: QPEApplication::DisableSuspend ); |
@@ -52,12 +61,15 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f ) | |||
52 | setMargin( 1 ); | 61 | setMargin( 1 ); |
53 | 62 | ||
54 | Config config( "qpe" ); | 63 | Config config( "qpe" ); |
55 | config.setGroup("Time"); | 64 | config.setGroup("Time"); |
56 | ampm = config.readBoolEntry( "AMPM", TRUE ); | 65 | ampm = config.readBoolEntry( "AMPM", TRUE ); |
57 | 66 | ||
67 | snoozeBtn = new QPushButton ( this); | ||
68 | snoozeBtn->setText( tr( "Snooze" ) ); | ||
69 | |||
58 | aclock = new AnalogClock( this ); | 70 | aclock = new AnalogClock( this ); |
59 | aclock->display( QTime::currentTime() ); | 71 | aclock->display( QTime::currentTime() ); |
60 | aclock->setLineWidth( 2 ); | 72 | aclock->setLineWidth( 2 ); |
61 | 73 | ||
62 | QHBox *hb = new QHBox( this ); | 74 | QHBox *hb = new QHBox( this ); |
63 | hb->setMargin( 0 ); | 75 | hb->setMargin( 0 ); |
@@ -95,82 +107,115 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f ) | |||
95 | grp->insert( swatchRB ); | 107 | grp->insert( swatchRB ); |
96 | 108 | ||
97 | connect( grp, SIGNAL(clicked(int)), this, SLOT(modeSelect(int)) ); | 109 | connect( grp, SIGNAL(clicked(int)), this, SLOT(modeSelect(int)) ); |
98 | grp->setButton( 0 ); | 110 | grp->setButton( 0 ); |
99 | 111 | ||
100 | set = new QPushButton ( controls ); | 112 | set = new QPushButton ( controls ); |
113 | set->setMaximumSize(50,30); | ||
101 | gl->addWidget( set, 0, 1 ); | 114 | gl->addWidget( set, 0, 1 ); |
102 | set->setText( tr( "Start" ) ); | 115 | set->setText( tr( "Start" ) ); |
103 | set->setEnabled( FALSE ); | 116 | set->setEnabled( FALSE ); |
104 | grp->insert( set ); | 117 | grp->insert( set ); |
105 | 118 | ||
106 | reset = new QPushButton ( controls ); | 119 | reset = new QPushButton ( controls ); |
107 | gl->addWidget( reset, 1, 1 ); | 120 | gl->addWidget( reset, 1, 1 ); |
108 | reset->setText( tr( "Reset" ) ); | 121 | reset->setText( tr( "Reset" ) ); |
109 | reset->setEnabled( FALSE ); | 122 | reset->setEnabled( FALSE ); |
110 | grp->insert( reset ); | 123 | grp->insert( reset ); |
111 | 124 | ||
125 | alarmOffBtn = new QPushButton ( controls ); | ||
126 | alarmOffBtn->setMaximumSize(60,30); | ||
127 | gl->addWidget( alarmOffBtn, 0, 2 ); | ||
128 | |||
129 | alarmBtn = new QPushButton ( controls ); | ||
130 | alarmBtn->setMaximumSize(60,30); | ||
131 | gl->addWidget( alarmBtn, 1, 2 ); | ||
132 | alarmBtn->setText( tr( "Set Alarm" ) ); | ||
133 | |||
112 | connect( set, SIGNAL( pressed() ), SLOT( slotSet() ) ); | 134 | connect( set, SIGNAL( pressed() ), SLOT( slotSet() ) ); |
113 | connect( reset, SIGNAL( clicked() ), SLOT( slotReset() ) ); | 135 | connect( reset, SIGNAL( clicked() ), SLOT( slotReset() ) ); |
114 | 136 | ||
137 | connect( alarmBtn, SIGNAL( clicked() ), SLOT( slotSetAlarm() ) ); | ||
138 | connect( snoozeBtn, SIGNAL( clicked() ), SLOT( slotSnooze() ) ); | ||
139 | connect( alarmOffBtn, SIGNAL( clicked() ), SLOT( slotToggleAlarm() ) ); | ||
140 | |||
141 | connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), | ||
142 | this, SLOT(appMessage(const QCString&, const QByteArray&)) ); | ||
143 | |||
115 | t = new QTimer( this ); | 144 | t = new QTimer( this ); |
116 | connect( t, SIGNAL( timeout() ), SLOT( updateClock() ) ); | 145 | connect( t, SIGNAL( timeout() ), SLOT( updateClock() ) ); |
117 | t->start( 1000 ); | 146 | t->start( 1000 ); |
118 | 147 | ||
119 | connect( qApp, SIGNAL( timeChanged() ), SLOT( updateClock() ) ); | 148 | connect( qApp, SIGNAL( timeChanged() ), SLOT( updateClock() ) ); |
120 | 149 | ||
121 | swatch_running = FALSE; | 150 | swatch_running = FALSE; |
122 | swatch_totalms = 0; | 151 | swatch_totalms = 0; |
123 | 152 | ||
124 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); | 153 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); |
125 | 154 | ||
155 | QString tmp = config.readEntry("clockAlarmHour", ""); | ||
156 | bool ok; | ||
157 | hour = tmp.toInt(&ok,10); | ||
158 | tmp = config.readEntry("clockAlarmMinute",""); | ||
159 | minute = tmp.toInt(&ok,10); | ||
160 | |||
161 | if( config.readEntry("clockAlarmSet","FALSE") == "TRUE") { | ||
162 | alarmOffBtn->setText( tr( "Alarm On" ) ); | ||
163 | alarmBool=TRUE; | ||
164 | snoozeBtn->show(); | ||
165 | } else { | ||
166 | alarmOffBtn->setText( tr( "Alarm Off" ) ); | ||
167 | alarmBool=FALSE; | ||
168 | snoozeBtn->hide(); | ||
169 | } | ||
170 | |||
126 | QTimer::singleShot( 0, this, SLOT(updateClock()) ); | 171 | QTimer::singleShot( 0, this, SLOT(updateClock()) ); |
127 | modeSelect(0); | 172 | modeSelect(0); |
128 | } | 173 | } |
129 | 174 | ||
130 | Clock::~Clock() | 175 | Clock::~Clock() |
131 | { | 176 | { |
132 | toggleScreenSaver( true ); | 177 | toggleScreenSaver( true ); |
133 | } | 178 | } |
134 | 179 | ||
135 | void Clock::updateClock() | 180 | void Clock::updateClock() |
136 | { | 181 | { |
137 | if ( clockRB->isChecked() ) { | 182 | if ( clockRB->isChecked() ) { |
138 | QTime tm = QDateTime::currentDateTime().time(); | 183 | QTime tm = QDateTime::currentDateTime().time(); |
139 | QString s; | 184 | QString s; |
140 | if ( ampm ) { | 185 | if ( ampm ) { |
141 | int hour = tm.hour(); | 186 | int hour = tm.hour(); |
142 | if (hour == 0) | 187 | if (hour == 0) |
143 | hour = 12; | 188 | hour = 12; |
144 | if (hour > 12) | 189 | if (hour > 12) |
145 | hour -= 12; | 190 | hour -= 12; |
146 | s.sprintf( "%2d%c%02d", hour, ':', tm.minute() ); | 191 | s.sprintf( "%2d%c%02d", hour, ':', tm.minute() ); |
147 | ampmLabel->setText( (tm.hour() >= 12) ? "PM" : "AM" ); | 192 | ampmLabel->setText( (tm.hour() >= 12) ? "PM" : "AM" ); |
148 | ampmLabel->show(); | 193 | ampmLabel->show(); |
149 | } else { | 194 | } else { |
150 | s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() ); | 195 | s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() ); |
151 | ampmLabel->hide(); | 196 | ampmLabel->hide(); |
152 | } | 197 | } |
153 | lcd->display( s ); | 198 | lcd->display( s ); |
154 | lcd->repaint( FALSE ); | 199 | lcd->repaint( FALSE ); |
155 | aclock->display( QTime::currentTime() ); | 200 | aclock->display( QTime::currentTime() ); |
156 | date->setText( TimeString::longDateString( QDate::currentDate() ) ); | 201 | date->setText( TimeString::longDateString( QDate::currentDate() ) ); |
157 | } else { | 202 | } else { |
158 | QTime swatch_time; | 203 | QTime swatch_time; |
159 | QString lcdtext; | 204 | QString lcdtext; |
160 | int totalms = swatch_totalms; | 205 | int totalms = swatch_totalms; |
161 | if ( swatch_running ) | 206 | if ( swatch_running ) |
162 | totalms += swatch_start.elapsed(); | 207 | totalms += swatch_start.elapsed(); |
163 | swatch_time = QTime(0,0,0).addMSecs(totalms); | 208 | swatch_time = QTime(0,0,0).addMSecs(totalms); |
164 | QString d = swatch_running ? QString(" ") | 209 | QString d = swatch_running ? QString(" ") |
165 | : QString::number(totalms%1000+1000); | 210 | : QString::number(totalms%1000+1000); |
166 | lcdtext = swatch_time.toString() + "." + d.right(3).left(sw_prec); | 211 | lcdtext = swatch_time.toString() + "." + d.right(3).left(sw_prec); |
167 | lcd->display( lcdtext ); | 212 | lcd->display( lcdtext ); |
168 | lcd->repaint( FALSE ); | 213 | lcd->repaint( FALSE ); |
169 | aclock->display( swatch_time ); | 214 | aclock->display( swatch_time ); |
170 | date->setText( TimeString::longDateString( QDate::currentDate() ) ); | 215 | date->setText( TimeString::longDateString( QDate::currentDate() ) ); |
171 | } | 216 | } |
172 | } | 217 | } |
173 | 218 | ||
174 | void Clock::changeClock( bool a ) | 219 | void Clock::changeClock( bool a ) |
175 | { | 220 | { |
176 | ampm = a; | 221 | ampm = a; |
@@ -183,61 +228,173 @@ void Clock::clearClock( void ) | |||
183 | aclock->display( QTime( 0,0,0 ) ); | 228 | aclock->display( QTime( 0,0,0 ) ); |
184 | } | 229 | } |
185 | 230 | ||
186 | void Clock::slotSet() | 231 | void Clock::slotSet() |
187 | { | 232 | { |
188 | if ( t->isActive() ) { | 233 | if ( t->isActive() ) { |
189 | swatch_totalms += swatch_start.elapsed(); | 234 | swatch_totalms += swatch_start.elapsed(); |
190 | set->setText( tr( "Start" ) ); | 235 | set->setText( tr( "Start" ) ); |
191 | t->stop(); | 236 | t->stop(); |
192 | swatch_running = FALSE; | 237 | swatch_running = FALSE; |
193 | toggleScreenSaver( TRUE ); | 238 | toggleScreenSaver( TRUE ); |
194 | updateClock(); | 239 | updateClock(); |
195 | } else { | 240 | } else { |
196 | swatch_start.start(); | 241 | swatch_start.start(); |
197 | set->setText( tr( "Stop" ) ); | 242 | set->setText( tr( "Stop" ) ); |
198 | t->start( 1000 ); | 243 | t->start( 1000 ); |
199 | swatch_running = TRUE; | 244 | swatch_running = TRUE; |
200 | // disable screensaver while stop watch is running | 245 | // disable screensaver while stop watch is running |
201 | toggleScreenSaver( FALSE ); | 246 | toggleScreenSaver( FALSE ); |
202 | } | 247 | } |
203 | } | 248 | } |
204 | 249 | ||
205 | void Clock::slotReset() | 250 | void Clock::slotReset() |
206 | { | 251 | { |
207 | t->stop(); | 252 | t->stop(); |
208 | swatch_start.start(); | 253 | swatch_start.start(); |
209 | swatch_totalms = 0; | 254 | swatch_totalms = 0; |
210 | 255 | ||
211 | if (swatch_running ) | 256 | if (swatch_running ) |
212 | t->start(1000); | 257 | t->start(1000); |
213 | 258 | ||
214 | updateClock(); | 259 | updateClock(); |
215 | } | 260 | } |
216 | 261 | ||
217 | void Clock::modeSelect( int m ) | 262 | void Clock::modeSelect( int m ) |
218 | { | 263 | { |
219 | if ( m ) { | 264 | if ( m ) { |
220 | lcd->setNumDigits( 8+1+sw_prec ); | 265 | lcd->setNumDigits( 8+1+sw_prec ); |
221 | lcd->setMinimumWidth( lcd->sizeHint().width() ); | 266 | lcd->setMinimumWidth( lcd->sizeHint().width() ); |
222 | set->setEnabled( TRUE ); | 267 | set->setEnabled( TRUE ); |
223 | reset->setEnabled( TRUE ); | 268 | reset->setEnabled( TRUE ); |
224 | ampmLabel->hide(); | 269 | ampmLabel->hide(); |
225 | 270 | ||
226 | if ( !swatch_running ) | 271 | if ( !swatch_running ) |
227 | t->stop(); | 272 | t->stop(); |
228 | } else { | 273 | } else { |
229 | lcd->setNumDigits( 5 ); | 274 | lcd->setNumDigits( 5 ); |
230 | lcd->setMinimumWidth( lcd->sizeHint().width() ); | 275 | lcd->setMinimumWidth( lcd->sizeHint().width() ); |
231 | set->setEnabled( FALSE ); | 276 | set->setEnabled( FALSE ); |
232 | reset->setEnabled( FALSE ); | 277 | reset->setEnabled( FALSE ); |
233 | t->start(1000); | 278 | t->start(1000); |
234 | } | 279 | } |
235 | updateClock(); | 280 | updateClock(); |
236 | } | 281 | } |
237 | 282 | ||
283 | //this sets the alarm time | ||
284 | void Clock::slotSetAlarm() | ||
285 | { | ||
286 | if( !snoozeBtn->isHidden()) | ||
287 | slotToggleAlarm(); | ||
288 | Set_Alarm *setAlarmDlg; | ||
289 | setAlarmDlg = new Set_Alarm(this,"SetAlarm", TRUE); | ||
290 | int result = setAlarmDlg->exec(); | ||
291 | if(result == 1) { | ||
292 | Config config( "qpe" ); | ||
293 | config.setGroup("Time"); | ||
294 | QString tmp; | ||
295 | hour = setAlarmDlg->Hour_Slider->value(); | ||
296 | minute = setAlarmDlg->Minute_Slider->value(); | ||
297 | snoozeTime=setAlarmDlg->SnoozeSlider->value(); | ||
298 | if(ampm) { | ||
299 | if(setAlarmDlg->Pm_RadioButton->isChecked() && hour < 12 ) | ||
300 | hour+=12; | ||
301 | } | ||
302 | config.writeEntry("clockAlarmHour", tmp.setNum( hour ),10); | ||
303 | config.writeEntry("clockAlarmMinute",tmp.setNum( minute ),10); | ||
304 | config.writeEntry("clockAlarmSnooze",tmp.setNum( snoozeTime ),10); | ||
305 | config.write(); | ||
306 | } | ||
307 | } | ||
308 | |||
309 | void Clock::slotSnooze() | ||
310 | { | ||
311 | bSound=FALSE; | ||
312 | int warn; | ||
313 | QTime t = QTime::currentTime(); | ||
314 | QDateTime whenl( when.date(), t.addSecs( snoozeTime*60)); | ||
315 | when=whenl; | ||
316 | AlarmServer::addAlarm( when, | ||
317 | "QPE/Application/clock", | ||
318 | "alarm(QDateTime,int)", warn ); | ||
319 | |||
320 | } | ||
321 | |||
322 | //toggles alarm on/off | ||
323 | void Clock::slotToggleAlarm() | ||
324 | { | ||
325 | Config config( "qpe" ); | ||
326 | config.setGroup("Time"); | ||
327 | if(alarmBool) { | ||
328 | config.writeEntry("clockAlarmSet","FALSE"); | ||
329 | alarmOffBtn->setText( tr( "Alarm Off" ) ); | ||
330 | snoozeBtn->hide(); | ||
331 | alarmBool=FALSE; | ||
332 | alarmOff(); | ||
333 | } else { | ||
334 | config.writeEntry("clockAlarmSet","TRUE"); | ||
335 | alarmOffBtn->setText( tr( "Alarm On" ) ); | ||
336 | snoozeBtn->show(); | ||
337 | alarmBool=TRUE; | ||
338 | alarmOn(); | ||
339 | } | ||
340 | config.write(); | ||
341 | } | ||
342 | |||
343 | void Clock::alarmOn() | ||
344 | { | ||
345 | QDate d = QDate::currentDate(); | ||
346 | QTime tm((int)hour,(int)minute,0); | ||
347 | qDebug("Time set "+tm.toString()); | ||
348 | QTime t = QTime::currentTime(); | ||
349 | if( t > tm) | ||
350 | d = d.addDays(1); | ||
351 | int warn; | ||
352 | QDateTime whenl(d,tm); | ||
353 | when=whenl; | ||
354 | AlarmServer::addAlarm( when, | ||
355 | "QPE/Application/clock", | ||
356 | "alarm(QDateTime,int)", warn ); | ||
357 | QMessageBox::message("Note","Alarm is set for:\n"+ whenl.toString()); | ||
358 | } | ||
359 | |||
360 | void Clock::alarmOff() | ||
361 | { | ||
362 | int warn; | ||
363 | bSound=FALSE; | ||
364 | AlarmServer::deleteAlarm( when, | ||
365 | "QPE/Application/clock", | ||
366 | "alarm(QDateTime,int)", warn ); | ||
367 | qDebug("Alarm Off "+ when.toString()); | ||
368 | |||
369 | } | ||
370 | |||
371 | void Clock::appMessage(const QCString& msg, const QByteArray& data) | ||
372 | { | ||
373 | int stopTimer = 0; | ||
374 | int timerStay = 5000; | ||
375 | bSound=TRUE; | ||
376 | if ( msg == "alarm(QDateTime,int)" ) { | ||
377 | Sound::soundAlarm(); | ||
378 | stopTimer = startTimer( timerStay); | ||
379 | } | ||
380 | } | ||
381 | |||
382 | void Clock::timerEvent( QTimerEvent *e ) | ||
383 | { | ||
384 | static int stop = 0; | ||
385 | if ( stop < 10 && bSound) { | ||
386 | Sound::soundAlarm(); | ||
387 | stop++; | ||
388 | } else { | ||
389 | stop = 0; | ||
390 | killTimer( e->timerId() ); | ||
391 | } | ||
392 | } | ||
393 | |||
394 | |||
238 | QSizePolicy AnalogClock::sizePolicy() const | 395 | QSizePolicy AnalogClock::sizePolicy() const |
239 | { | 396 | { |
240 | return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); | 397 | return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); |
241 | } | 398 | } |
242 | 399 | ||
243 | void AnalogClock::drawContents( QPainter *p ) | 400 | void AnalogClock::drawContents( QPainter *p ) |
@@ -258,48 +415,48 @@ void AnalogClock::drawContents( QPainter *p ) | |||
258 | QPoint s2( r.x() + r.width() / 2, r.y() + r.height() / 2 ); | 415 | QPoint s2( r.x() + r.width() / 2, r.y() + r.height() / 2 ); |
259 | 416 | ||
260 | QColor color( clear ? backgroundColor() : black ); | 417 | QColor color( clear ? backgroundColor() : black ); |
261 | QTime time = clear ? prevTime : currTime; | 418 | QTime time = clear ? prevTime : currTime; |
262 | 419 | ||
263 | if ( clear && prevTime.secsTo(currTime) > 1 ) { | 420 | if ( clear && prevTime.secsTo(currTime) > 1 ) { |
264 | p->eraseRect( rect() ); | 421 | p->eraseRect( rect() ); |
265 | return; | 422 | return; |
266 | } | 423 | } |
267 | 424 | ||
268 | if ( !clear ) { | 425 | if ( !clear ) { |
269 | // draw ticks | 426 | // draw ticks |
270 | p->setPen( QPen( color, 1 ) ); | 427 | p->setPen( QPen( color, 1 ) ); |
271 | for ( int i = 0; i < 12; i++ ) | 428 | for ( int i = 0; i < 12; i++ ) |
272 | p->drawLine( rotate( center, l1, i * 30 ), rotate( center, l2, i * 30 ) ); | 429 | p->drawLine( rotate( center, l1, i * 30 ), rotate( center, l2, i * 30 ) ); |
273 | } | 430 | } |
274 | 431 | ||
275 | if ( !clear || prevTime.minute() != currTime.minute() || | 432 | if ( !clear || prevTime.minute() != currTime.minute() || |
276 | prevTime.hour() != currTime.hour() ) { | 433 | prevTime.hour() != currTime.hour() ) { |
277 | // draw hour pointer | 434 | // draw hour pointer |
278 | h1 = rotate( center, h1, 30 * ( time.hour() % 12 ) + time.minute() / 2 ); | 435 | h1 = rotate( center, h1, 30 * ( time.hour() % 12 ) + time.minute() / 2 ); |
279 | h2 = rotate( center, h2, 30 * ( time.hour() % 12 ) + time.minute() / 2 ); | 436 | h2 = rotate( center, h2, 30 * ( time.hour() % 12 ) + time.minute() / 2 ); |
280 | p->setPen( QPen( color, 3 ) ); | 437 | p->setPen( QPen( color, 3 ) ); |
281 | p->drawLine( h1, h2 ); | 438 | p->drawLine( h1, h2 ); |
282 | } | 439 | } |
283 | 440 | ||
284 | if ( !clear || prevTime.minute() != currTime.minute() ) { | 441 | if ( !clear || prevTime.minute() != currTime.minute() ) { |
285 | // draw minute pointer | 442 | // draw minute pointer |
286 | m1 = rotate( center, m1, time.minute() * 6 ); | 443 | m1 = rotate( center, m1, time.minute() * 6 ); |
287 | m2 = rotate( center, m2, time.minute() * 6 ); | 444 | m2 = rotate( center, m2, time.minute() * 6 ); |
288 | p->setPen( QPen( color, 2 ) ); | 445 | p->setPen( QPen( color, 2 ) ); |
289 | p->drawLine( m1, m2 ); | 446 | p->drawLine( m1, m2 ); |
290 | } | 447 | } |
291 | 448 | ||
292 | // draw second pointer | 449 | // draw second pointer |
293 | s1 = rotate( center, s1, time.second() * 6 ); | 450 | s1 = rotate( center, s1, time.second() * 6 ); |
294 | s2 = rotate( center, s2, time.second() * 6 ); | 451 | s2 = rotate( center, s2, time.second() * 6 ); |
295 | p->setPen( QPen( color, 1 ) ); | 452 | p->setPen( QPen( color, 1 ) ); |
296 | p->drawLine( s1, s2 ); | 453 | p->drawLine( s1, s2 ); |
297 | 454 | ||
298 | if ( !clear ) | 455 | if ( !clear ) |
299 | prevTime = currTime; | 456 | prevTime = currTime; |
300 | } | 457 | } |
301 | 458 | ||
302 | void AnalogClock::display( const QTime& t ) | 459 | void AnalogClock::display( const QTime& t ) |
303 | { | 460 | { |
304 | currTime = t; | 461 | currTime = t; |
305 | clear = true; | 462 | clear = true; |
@@ -309,11 +466,11 @@ void AnalogClock::display( const QTime& t ) | |||
309 | } | 466 | } |
310 | 467 | ||
311 | QPoint AnalogClock::rotate( QPoint c, QPoint p, int a ) | 468 | QPoint AnalogClock::rotate( QPoint c, QPoint p, int a ) |
312 | { | 469 | { |
313 | double angle = deg2rad * ( - a + 180 ); | 470 | double angle = deg2rad * ( - a + 180 ); |
314 | double nx = c.x() - ( p.x() - c.x() ) * cos( angle ) - | 471 | double nx = c.x() - ( p.x() - c.x() ) * cos( angle ) - |
315 | ( p.y() - c.y() ) * sin( angle ); | 472 | ( p.y() - c.y() ) * sin( angle ); |
316 | double ny = c.y() - ( p.y() - c.y() ) * cos( angle ) + | 473 | double ny = c.y() - ( p.y() - c.y() ) * cos( angle ) + |
317 | ( p.x() - c.x() ) * sin( angle ); | 474 | ( p.x() - c.x() ) * sin( angle ); |
318 | return QPoint( nx, ny ); | 475 | return QPoint( nx, ny ); |
319 | } | 476 | } |
diff --git a/noncore/tools/clock/clock.h b/noncore/tools/clock/clock.h index 6dbebf7..9b756b5 100644 --- a/noncore/tools/clock/clock.h +++ b/noncore/tools/clock/clock.h | |||
@@ -25,20 +25,21 @@ | |||
25 | 25 | ||
26 | class QLCDNumber; | 26 | class QLCDNumber; |
27 | class QLabel; | 27 | class QLabel; |
28 | class QTimer; | 28 | class QTimer; |
29 | class QRadioButton; | 29 | class QRadioButton; |
30 | class QPushButton; | 30 | class QPushButton; |
31 | class QDateTime; | ||
31 | 32 | ||
32 | class AnalogClock : public QFrame | 33 | class AnalogClock : public QFrame |
33 | { | 34 | { |
34 | Q_OBJECT | 35 | Q_OBJECT |
35 | 36 | ||
36 | public: | 37 | public: |
37 | AnalogClock( QWidget * parent = 0, const char * name = 0 ) | 38 | AnalogClock( QWidget * parent = 0, const char * name = 0 ) |
38 | : QFrame( parent, name ), clear(false) {} | 39 | : QFrame( parent, name ), clear(false) {} |
39 | 40 | ||
40 | QSizePolicy sizePolicy() const; | 41 | QSizePolicy sizePolicy() const; |
41 | 42 | ||
42 | void display( const QTime& time ); | 43 | void display( const QTime& time ); |
43 | 44 | ||
44 | protected: | 45 | protected: |
@@ -56,28 +57,38 @@ class Clock : public QVBox | |||
56 | { | 57 | { |
57 | Q_OBJECT | 58 | Q_OBJECT |
58 | 59 | ||
59 | public: | 60 | public: |
60 | Clock( QWidget * parent = 0, const char * name = 0, WFlags f=0 ); | 61 | Clock( QWidget * parent = 0, const char * name = 0, WFlags f=0 ); |
61 | ~Clock(); | 62 | ~Clock(); |
62 | 63 | QDateTime when; | |
64 | bool bSound; | ||
65 | int hour, minute, snoozeTime; | ||
63 | private slots: | 66 | private slots: |
64 | void slotSet(); | 67 | void slotSet(); |
65 | void slotReset(); | 68 | void slotReset(); |
66 | void modeSelect(int); | 69 | void modeSelect(int); |
67 | void updateClock(); | 70 | void updateClock(); |
68 | void changeClock( bool ); | 71 | void changeClock( bool ); |
72 | void slotSetAlarm(); | ||
73 | void slotSnooze(); | ||
74 | void slotToggleAlarm(); | ||
75 | void alarmOn(); | ||
76 | void alarmOff(); | ||
77 | void appMessage(const QCString& msg, const QByteArray& data); | ||
78 | void timerEvent( QTimerEvent *e ); | ||
69 | 79 | ||
70 | private: | 80 | private: |
71 | void clearClock(); | 81 | void clearClock(); |
72 | 82 | ||
83 | bool alarmBool; | ||
73 | QTimer *t; | 84 | QTimer *t; |
74 | QLCDNumber *lcd; | 85 | QLCDNumber *lcd; |
75 | QLabel *date; | 86 | QLabel *date; |
76 | QLabel *ampmLabel; | 87 | QLabel *ampmLabel; |
77 | QPushButton *set, *reset; | 88 | QPushButton *set, *reset, *alarmBtn, *snoozeBtn, *alarmOffBtn; |
78 | QRadioButton *clockRB, *swatchRB; | 89 | QRadioButton *clockRB, *swatchRB; |
79 | AnalogClock *aclock; | 90 | AnalogClock *aclock; |
80 | QTime swatch_start; | 91 | QTime swatch_start; |
81 | int swatch_totalms; | 92 | int swatch_totalms; |
82 | bool swatch_running; | 93 | bool swatch_running; |
83 | bool ampm; | 94 | bool ampm; |
diff --git a/noncore/tools/clock/clock.pro b/noncore/tools/clock/clock.pro index ec27adc..10d375f 100644 --- a/noncore/tools/clock/clock.pro +++ b/noncore/tools/clock/clock.pro | |||
@@ -1,13 +1,13 @@ | |||
1 | TEMPLATE= app | 1 | TEMPLATE = app |
2 | CONFIG = qt warn_on release | 2 | CONFIG = qt warn_on release |
3 | DESTDIR = $(OPIEDIR)/bin | 3 | DESTDIR = $(OPIEDIR)/bin |
4 | HEADERS = clock.h | 4 | HEADERS = clock.h setAlarm.h |
5 | SOURCES = clock.cpp \ | 5 | SOURCES = clock.cpp setAlarm.cpp \ |
6 | main.cpp | 6 | main.cpp |
7 | INCLUDEPATH += $(OPIEDIR)/include | 7 | INCLUDEPATH += $(OPIEDIR)/include |
8 | DEPENDPATH+= $(OPIEDIR)/include | 8 | DEPENDPATH += $(OPIEDIR)/include |
9 | LIBS += -lqpe | 9 | LIBS += -lqpe |
10 | INTERFACES= | 10 | INTERFACES = |
11 | TARGET = clock | 11 | TARGET = clock |
12 | 12 | ||
13 | TRANSLATIONS = ../i18n/de/clock.ts | 13 | TRANSLATIONS = ../i18n/de/clock.ts |
diff --git a/noncore/tools/clock/setAlarm.cpp b/noncore/tools/clock/setAlarm.cpp new file mode 100644 index 0000000..01e52f6 --- a/dev/null +++ b/noncore/tools/clock/setAlarm.cpp | |||
@@ -0,0 +1,183 @@ | |||
1 | /*************************************************************************** | ||
2 | // setAlarm.cpp - description | ||
3 | // ------------------- | ||
4 | // Created: Wed Mar 13 19:47:24 2002 | ||
5 | // copyright : (C) 2002 by ljp | ||
6 | // email : ljp@llornkcor.com | ||
7 | // | ||
8 | *************************************************************************** | ||
9 | * This program 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 2 of the License, or * | ||
12 | * (at your option) any later version. * | ||
13 | ***************************************************************************/ | ||
14 | |||
15 | #include "setAlarm.h" | ||
16 | |||
17 | #include <qpe/config.h> | ||
18 | |||
19 | #include <qpe/qpeapplication.h> | ||
20 | #include <qstring.h> | ||
21 | #include <qlabel.h> | ||
22 | #include <qlcdnumber.h> | ||
23 | #include <qpushbutton.h> | ||
24 | #include <qradiobutton.h> | ||
25 | #include <qslider.h> | ||
26 | #include <qlayout.h> | ||
27 | #include <qvariant.h> | ||
28 | #include <qtooltip.h> | ||
29 | #include <qwhatsthis.h> | ||
30 | #include <qbuttongroup.h> | ||
31 | |||
32 | Set_Alarm::Set_Alarm( QWidget* parent, const char* name, bool modal, WFlags fl ) | ||
33 | : QDialog( parent, name, modal, fl ) | ||
34 | { | ||
35 | if ( !name ) | ||
36 | setName( "Set_Alarm" ); | ||
37 | resize( 240, 101 ); | ||
38 | setMaximumSize( QSize( 240, 320 ) ); | ||
39 | setCaption( tr( "Set Alarm" ) ); | ||
40 | connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); | ||
41 | |||
42 | Set_AlarmLayout = new QGridLayout( this ); | ||
43 | Set_AlarmLayout->setSpacing( 6 ); | ||
44 | Set_AlarmLayout->setMargin( 11 ); | ||
45 | |||
46 | TextLabel1 = new QLabel( this, "TextLabel1" ); | ||
47 | TextLabel1->setText( tr( "Hour" ) ); | ||
48 | |||
49 | Set_AlarmLayout->addWidget( TextLabel1, 0, 0 ); | ||
50 | |||
51 | TextLabel2 = new QLabel( this, "TextLabel2" ); | ||
52 | TextLabel2->setText( tr( "Minute" ) ); | ||
53 | |||
54 | Set_AlarmLayout->addMultiCellWidget( TextLabel2, 0, 0, 1, 2 ); | ||
55 | |||
56 | Hour_Slider = new QSlider( this, "Hour_Slider" ); | ||
57 | Hour_Slider->setPageStep( 1); | ||
58 | Hour_Slider->setOrientation( QSlider::Horizontal ); | ||
59 | connect(Hour_Slider, SIGNAL( valueChanged(int)),this,SLOT(slotChangeHour(int))); | ||
60 | |||
61 | Set_AlarmLayout->addWidget( Hour_Slider, 2, 0 ); | ||
62 | |||
63 | Hour_LCDNumber = new QLCDNumber( this, "Hour_LCDNumber" ); | ||
64 | Hour_LCDNumber->setFrameShape( QLCDNumber::Box ); | ||
65 | Hour_LCDNumber->setFrameShadow( QLCDNumber::Plain ); | ||
66 | Hour_LCDNumber->setSegmentStyle( QLCDNumber::Flat ); | ||
67 | |||
68 | Set_AlarmLayout->addWidget( Hour_LCDNumber, 1, 0 ); | ||
69 | |||
70 | Minute_Slider = new QSlider( this, "Minute_Slider" ); | ||
71 | Minute_Slider->setMaxValue( 59); | ||
72 | Minute_Slider->setOrientation( QSlider::Horizontal ); | ||
73 | connect(Minute_Slider, SIGNAL( valueChanged(int)),this,SLOT(slotChangeMinute(int))); | ||
74 | |||
75 | Set_AlarmLayout->addMultiCellWidget( Minute_Slider, 2, 2, 1, 2 ); | ||
76 | |||
77 | Minute_LCDNumber = new QLCDNumber( this, "Minute_LCDNumber" ); | ||
78 | Minute_LCDNumber->setFrameShape( QLCDNumber::Box ); | ||
79 | Minute_LCDNumber->setFrameShadow( QLCDNumber::Plain ); | ||
80 | Minute_LCDNumber->setSegmentStyle( QLCDNumber::Flat ); | ||
81 | |||
82 | Set_AlarmLayout->addMultiCellWidget( Minute_LCDNumber, 1, 1, 1, 2 ); | ||
83 | |||
84 | Am_RadioButton = new QRadioButton( this, "Am_RadioButton" ); | ||
85 | Am_RadioButton->setText( tr( "AM" ) ); | ||
86 | Am_RadioButton->setChecked(TRUE); | ||
87 | connect( Am_RadioButton, SIGNAL(toggled(bool)),this,SLOT( amButtonToggled(bool))); | ||
88 | |||
89 | Set_AlarmLayout->addMultiCellWidget( Am_RadioButton, 0, 1, 3, 4 ); | ||
90 | |||
91 | |||
92 | Pm_RadioButton = new QRadioButton( this, "Pm_RadioButton" ); | ||
93 | Pm_RadioButton->setText( tr( "PM" ) ); | ||
94 | connect( Pm_RadioButton, SIGNAL(toggled(bool)),this,SLOT( pmButtonToggled(bool))); | ||
95 | |||
96 | Set_AlarmLayout->addMultiCellWidget(Pm_RadioButton, 1, 2, 3, 4 ); | ||
97 | |||
98 | TextLabel3 = new QLabel( this, "TextLabel3" ); | ||
99 | TextLabel3->setText( tr( "Snooze Delay\n(minutes)" ) ); | ||
100 | |||
101 | Set_AlarmLayout->addMultiCellWidget( TextLabel3, 3, 3, 0, 1 ); | ||
102 | |||
103 | Snooze_LCDNumber = new QLCDNumber( this, "Snooze_LCDNumber" ); | ||
104 | Snooze_LCDNumber->setFrameShape( QLCDNumber::Box ); | ||
105 | Snooze_LCDNumber->setFrameShadow( QLCDNumber::Plain ); | ||
106 | Snooze_LCDNumber->setSegmentStyle( QLCDNumber::Flat ); | ||
107 | |||
108 | Set_AlarmLayout->addMultiCellWidget( Snooze_LCDNumber, 3, 3, 1, 2 ); | ||
109 | |||
110 | SnoozeSlider = new QSlider( this, "SnoozeSlider" ); | ||
111 | SnoozeSlider->setMaxValue( 60 ); | ||
112 | SnoozeSlider->setOrientation( QSlider::Horizontal ); | ||
113 | connect(SnoozeSlider, SIGNAL( valueChanged(int)),this,SLOT(slotChangeSnooze(int))); | ||
114 | |||
115 | Set_AlarmLayout->addMultiCellWidget( SnoozeSlider, 3, 3, 3, 4 ); | ||
116 | |||
117 | Config config( "qpe" ); | ||
118 | config.setGroup("Time"); | ||
119 | |||
120 | bool ok; | ||
121 | bool ampm = config.readBoolEntry( "AMPM", TRUE ); | ||
122 | QString alarmHour=config.readEntry("clockAlarmHour","8"); | ||
123 | int i_alarmHour = alarmHour.toInt(&ok,10); | ||
124 | QString alarmMinute=config.readEntry("clockAlarmMinute","0"); | ||
125 | QString snoozeTime=config.readEntry("clockAlarmSnooze","0"); | ||
126 | if(ampm) { | ||
127 | Hour_Slider->setMaxValue( 12); | ||
128 | Hour_Slider->setMinValue( 1); | ||
129 | |||
130 | if( i_alarmHour > 12) { | ||
131 | i_alarmHour = i_alarmHour - 12; | ||
132 | Pm_RadioButton->setChecked(TRUE); | ||
133 | } | ||
134 | Hour_Slider->setValue( i_alarmHour); | ||
135 | Minute_Slider->setValue( alarmMinute.toInt(&ok,10) ); | ||
136 | SnoozeSlider->setValue( snoozeTime.toInt(&ok,10) ); | ||
137 | } else { | ||
138 | Hour_Slider->setMaxValue( 23); | ||
139 | Hour_Slider->setMinValue( 1); | ||
140 | Hour_Slider->setValue( i_alarmHour); | ||
141 | Minute_Slider->setValue( alarmMinute.toInt(&ok,10) ); | ||
142 | SnoozeSlider->setValue( snoozeTime.toInt(&ok,10) ); | ||
143 | Am_RadioButton->hide(); | ||
144 | Pm_RadioButton->hide(); | ||
145 | } | ||
146 | // signals and slots connections | ||
147 | } | ||
148 | |||
149 | Set_Alarm::~Set_Alarm() | ||
150 | { | ||
151 | |||
152 | } | ||
153 | |||
154 | void Set_Alarm::slotChangeHour(int hour) | ||
155 | { | ||
156 | Hour_LCDNumber->display(hour); | ||
157 | } | ||
158 | |||
159 | void Set_Alarm::slotChangeMinute(int minute) | ||
160 | { | ||
161 | Minute_LCDNumber->display(minute); | ||
162 | } | ||
163 | |||
164 | void Set_Alarm::slotChangeSnooze(int minute) | ||
165 | { | ||
166 | Snooze_LCDNumber->display(minute); | ||
167 | } | ||
168 | |||
169 | void Set_Alarm::amButtonToggled(bool b) | ||
170 | { | ||
171 | if ( b) | ||
172 | Pm_RadioButton->setChecked(FALSE); | ||
173 | } | ||
174 | |||
175 | void Set_Alarm::pmButtonToggled(bool b) | ||
176 | { | ||
177 | if (b) | ||
178 | Am_RadioButton->setChecked(FALSE); | ||
179 | } | ||
180 | |||
181 | void Set_Alarm::cleanUp() | ||
182 | { | ||
183 | } | ||
diff --git a/noncore/tools/clock/setAlarm.h b/noncore/tools/clock/setAlarm.h new file mode 100644 index 0000000..7d63237 --- a/dev/null +++ b/noncore/tools/clock/setAlarm.h | |||
@@ -0,0 +1,57 @@ | |||
1 | /*************************************************************************** | ||
2 | // setAlarm.h - description | ||
3 | // ------------------- | ||
4 | // Created: Wed Mar 13 19:47:24 2002 | ||
5 | // copyright : (C) 2002 by ljp | ||
6 | // email : ljp@llornkcor.com | ||
7 | // | ||
8 | *************************************************************************** | ||
9 | * This program 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 2 of the License, or * | ||
12 | * (at your option) any later version. * | ||
13 | ***************************************************************************/ | ||
14 | |||
15 | #ifndef SET_ALARM_H | ||
16 | #define SET_ALARM_H | ||
17 | |||
18 | #include <qvariant.h> | ||
19 | #include <qdialog.h> | ||
20 | |||
21 | class QVBoxLayout; | ||
22 | class QHBoxLayout; | ||
23 | class QGridLayout; | ||
24 | class QLCDNumber; | ||
25 | class QLabel; | ||
26 | class QRadioButton; | ||
27 | class QSlider; | ||
28 | class QButtonGroup; | ||
29 | |||
30 | class Set_Alarm : public QDialog | ||
31 | { | ||
32 | Q_OBJECT | ||
33 | |||
34 | public: | ||
35 | Set_Alarm( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); | ||
36 | ~Set_Alarm(); | ||
37 | |||
38 | QLabel *TextLabel1, *TextLabel2, *TextLabel3; | ||
39 | QSlider *Hour_Slider, *Minute_Slider, *SnoozeSlider; | ||
40 | QLCDNumber *Hour_LCDNumber, *Minute_LCDNumber, *Snooze_LCDNumber; | ||
41 | |||
42 | QRadioButton* Am_RadioButton; | ||
43 | |||
44 | QRadioButton* Pm_RadioButton; | ||
45 | QButtonGroup *ButtonGroup1; | ||
46 | protected slots: | ||
47 | void slotChangeHour(int); | ||
48 | void slotChangeMinute(int); | ||
49 | void slotChangeSnooze(int); | ||
50 | void amButtonToggled(bool); | ||
51 | void pmButtonToggled(bool); | ||
52 | void cleanUp(); | ||
53 | protected: | ||
54 | QGridLayout* Set_AlarmLayout; | ||
55 | }; | ||
56 | |||
57 | #endif // SET_ALARM_H | ||