-rw-r--r-- | kalarmd/simplealarmdaemonimpl.cpp | 108 | ||||
-rw-r--r-- | kalarmd/simplealarmdaemonimpl.h | 35 |
2 files changed, 125 insertions, 18 deletions
diff --git a/kalarmd/simplealarmdaemonimpl.cpp b/kalarmd/simplealarmdaemonimpl.cpp index 50c4605..ec7f730 100644 --- a/kalarmd/simplealarmdaemonimpl.cpp +++ b/kalarmd/simplealarmdaemonimpl.cpp | |||
@@ -1,114 +1,120 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the KOrganizer alarm daemon. | 2 | This file is part of the KOrganizer alarm daemon. |
3 | Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "simplealarmdaemonimpl.h" | 24 | #include "simplealarmdaemonimpl.h" |
25 | 25 | ||
26 | #include "alarmdialog.h" | 26 | #include "alarmdialog.h" |
27 | #include <qpopupmenu.h> | 27 | #include <qpopupmenu.h> |
28 | #include <qapp.h> | 28 | #include <qapp.h> |
29 | #include <qdir.h> | 29 | #include <qdir.h> |
30 | #include <qfile.h> | 30 | #include <qfile.h> |
31 | #include <qhbox.h> | 31 | #include <qhbox.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qfile.h> | 33 | #include <qfile.h> |
34 | #include <qdatetime.h> | ||
35 | #include <qpushbutton.h> | ||
34 | #include <qlayout.h> | 36 | #include <qlayout.h> |
35 | #include <qlineedit.h> | 37 | #include <qlineedit.h> |
36 | #include <qdialog.h> | 38 | #include <qdialog.h> |
39 | #define protected public | ||
37 | #include <qspinbox.h> | 40 | #include <qspinbox.h> |
41 | #undef protected | ||
38 | #include <qtextstream.h> | 42 | #include <qtextstream.h> |
39 | #include <qtopia/qcopenvelope_qws.h> | 43 | #include <qtopia/qcopenvelope_qws.h> |
40 | #include <qtopia/alarmserver.h> | 44 | #include <qtopia/alarmserver.h> |
41 | 45 | ||
42 | #include <stdlib.h> | 46 | #include <stdlib.h> |
43 | #include <stdio.h> | 47 | #include <stdio.h> |
44 | #include <unistd.h> | 48 | #include <unistd.h> |
45 | 49 | ||
46 | 50 | ||
47 | SimpleAlarmDaemonImpl::SimpleAlarmDaemonImpl( QWidget *parent ) | 51 | SimpleAlarmDaemonImpl::SimpleAlarmDaemonImpl( QWidget *parent ) |
48 | : QLabel( parent ) | 52 | : QLabel( parent ) |
49 | { | 53 | { |
50 | mAlarmDialog = new AlarmDialog( 0 ); | 54 | mAlarmDialog = new AlarmDialog( 0 ); |
51 | mPopUp = new QPopupMenu( this ); | 55 | mPopUp = new QPopupMenu( this ); |
52 | mPopUp->insertItem( "What's Next?", this, SLOT ( showWN() ) ); | 56 | mPopUp->insertItem( "What's Next?", this, SLOT ( showWN() ) ); |
53 | mPopUp->insertItem( "Next Days!", this, SLOT ( showKO() ) ); | 57 | mPopUp->insertItem( "Next Days!", this, SLOT ( showKO() ) ); |
54 | mPopUp->insertSeparator(); | 58 | mPopUp->insertSeparator(); |
55 | mPopUp->insertItem( "What's Todo?", this, SLOT ( showTodo() ) ); | 59 | mPopUp->insertItem( "What's Todo?", this, SLOT ( showTodo() ) ); |
56 | mPopUp->insertSeparator(); | 60 | mPopUp->insertSeparator(); |
57 | mPopUp->insertItem( "Addresses", this, SLOT ( showAdd() ) ); | 61 | mPopUp->insertItem( "Addresses", this, SLOT ( showAdd() ) ); |
58 | mPopUp->insertSeparator(); | 62 | mPopUp->insertSeparator(); |
59 | mPopUp->insertItem( "Edit Journal", this, SLOT ( writeJournal() ) ); | 63 | mPopUp->insertItem( "Edit Journal", this, SLOT ( writeJournal() ) ); |
60 | mPopUp->insertItem( "New Event", this, SLOT ( newEvent() ) ); | 64 | mPopUp->insertItem( "New Event", this, SLOT ( newEvent() ) ); |
61 | mPopUp->insertItem( "New Todo", this, SLOT ( newTodo() ) ); | 65 | mPopUp->insertItem( "New Todo", this, SLOT ( newTodo() ) ); |
62 | mPopUp->insertItem( "New Mail", this, SLOT ( newMail() ) ); | 66 | mPopUp->insertItem( "New Mail", this, SLOT ( newMail() ) ); |
63 | mPopUp->insertSeparator(); | 67 | mPopUp->insertSeparator(); |
64 | mPopUp->insertItem( "Multi Sync", this, SLOT ( ringSync() ) ); | 68 | mPopUp->insertItem( "Multi Sync", this, SLOT ( ringSync() ) ); |
65 | mTimerPopUp = new QPopupMenu( this ); | 69 | mTimerPopUp = new QPopupMenu( this ); |
66 | 70 | QFont fon = mTimerPopUp->font(); | |
71 | fon.setPointSize( fon.pointSize() *3/2 ); | ||
72 | mTimerPopUp->setFont( fon ); | ||
67 | mBeepPopUp = new QPopupMenu( this ); | 73 | mBeepPopUp = new QPopupMenu( this ); |
68 | mSoundPopUp = new QPopupMenu( this ); | 74 | mSoundPopUp = new QPopupMenu( this ); |
69 | mPausePopUp = new QPopupMenu( this ); | 75 | mPausePopUp = new QPopupMenu( this ); |
70 | QPopupMenu* savePopUp = new QPopupMenu( this ); | 76 | QPopupMenu* savePopUp = new QPopupMenu( this ); |
71 | savePopUp->insertItem( "Save", 0 ); | 77 | savePopUp->insertItem( "Save", 0 ); |
72 | savePopUp->insertItem( "Load", 1 ); | 78 | savePopUp->insertItem( "Load", 1 ); |
73 | mSoundPopUp->insertItem( "Buzzer", 0 ); | 79 | mSoundPopUp->insertItem( "Buzzer", 0 ); |
74 | mSoundPopUp->insertItem( "Wav file", 1 ); | 80 | mSoundPopUp->insertItem( "Wav file", 1 ); |
75 | mPausePopUp->insertItem( " 1 sec", 1 ); | 81 | mPausePopUp->insertItem( " 1 sec", 1 ); |
76 | mPausePopUp->insertItem( " 2 sec", 2 ); | 82 | mPausePopUp->insertItem( " 2 sec", 2 ); |
77 | mPausePopUp->insertItem( " 3 sec", 3 ); | 83 | mPausePopUp->insertItem( " 3 sec", 3 ); |
78 | mPausePopUp->insertItem( " 5 sec", 5 ); | 84 | mPausePopUp->insertItem( " 5 sec", 5 ); |
79 | mPausePopUp->insertItem( "10 sec", 10 ); | 85 | mPausePopUp->insertItem( "10 sec", 10 ); |
80 | mPausePopUp->insertItem( "30 sec", 30 ); | 86 | mPausePopUp->insertItem( "30 sec", 30 ); |
81 | mPausePopUp->insertItem( " 1 min", 60 ); | 87 | mPausePopUp->insertItem( " 1 min", 60 ); |
82 | mPausePopUp->insertItem( " 5 min", 300 ); | 88 | mPausePopUp->insertItem( " 5 min", 300 ); |
83 | mPausePopUp->insertItem( "10 min", 600 ); | 89 | mPausePopUp->insertItem( "10 min", 600 ); |
84 | mSuspendPopUp = new QPopupMenu( this ); | 90 | mSuspendPopUp = new QPopupMenu( this ); |
85 | mSuspendPopUp->insertItem( "Off", 0 ); | 91 | mSuspendPopUp->insertItem( "Off", 0 ); |
86 | mSuspendPopUp->insertItem( " 1x", 1 ); | 92 | mSuspendPopUp->insertItem( " 1x", 1 ); |
87 | mSuspendPopUp->insertItem( " 2x", 2 ); | 93 | mSuspendPopUp->insertItem( " 2x", 2 ); |
88 | mSuspendPopUp->insertItem( " 3x", 3 ); | 94 | mSuspendPopUp->insertItem( " 3x", 3 ); |
89 | mSuspendPopUp->insertItem( " 5x", 5 ); | 95 | mSuspendPopUp->insertItem( " 5x", 5 ); |
90 | mSuspendPopUp->insertItem( "10x", 10 ); | 96 | mSuspendPopUp->insertItem( "10x", 10 ); |
91 | mSuspendPopUp->insertItem( "20x", 20 ); | 97 | mSuspendPopUp->insertItem( "20x", 20 ); |
92 | mSuspendPopUp->insertItem( "30x", 30 ); | 98 | mSuspendPopUp->insertItem( "30x", 30 ); |
93 | mBeepPopUp->insertItem( "Auto suspend",mSuspendPopUp ); | 99 | mBeepPopUp->insertItem( "Auto suspend",mSuspendPopUp ); |
94 | mBeepPopUp->insertItem( "Beep interval",mPausePopUp ); | 100 | mBeepPopUp->insertItem( "Beep interval",mPausePopUp ); |
95 | mBeepPopUp->insertItem( "Replay",mSoundPopUp ); | 101 | mBeepPopUp->insertItem( "Replay",mSoundPopUp ); |
96 | mBeepPopUp->insertItem( "Config",savePopUp ); | 102 | mBeepPopUp->insertItem( "Config",savePopUp ); |
97 | mBeepPopUp->insertItem( "300", 300 ); | 103 | mBeepPopUp->insertItem( "300", 300 ); |
98 | mBeepPopUp->insertItem( "180", 180 ); | 104 | mBeepPopUp->insertItem( "180", 180 ); |
99 | mBeepPopUp->insertItem( "60", 60 ); | 105 | mBeepPopUp->insertItem( "60", 60 ); |
100 | mBeepPopUp->insertItem( "30", 30 ); | 106 | mBeepPopUp->insertItem( "30", 30 ); |
101 | mBeepPopUp->insertItem( "10", 10 ); | 107 | mBeepPopUp->insertItem( "10", 10 ); |
102 | mBeepPopUp->insertItem( "3", 3 ); | 108 | mBeepPopUp->insertItem( "3", 3 ); |
103 | mBeepPopUp->insertItem( "1", 1 ); | 109 | mBeepPopUp->insertItem( "1", 1 ); |
104 | mBeepPopUp->insertItem( "Off", 0 ); | 110 | mBeepPopUp->insertItem( "Off", 0 ); |
105 | mBeepPopUp->setCheckable( true ); | 111 | mBeepPopUp->setCheckable( true ); |
106 | mPopUp->insertSeparator(); | 112 | mPopUp->insertSeparator(); |
107 | mPopUp->insertItem( "Play beeps", mBeepPopUp ); | 113 | mPopUp->insertItem( "Play beeps", mBeepPopUp ); |
108 | mPopUp->insertSeparator(); | 114 | mPopUp->insertSeparator(); |
109 | mPopUp->insertItem( "Timer", mTimerPopUp ); | 115 | mPopUp->insertItem( "Timer", mTimerPopUp ); |
110 | mPopUp->insertSeparator(); | 116 | mPopUp->insertSeparator(); |
111 | mPopUp->insertItem( "Simulate", this, SLOT ( simulate() ) ); | 117 | mPopUp->insertItem( "Simulate", this, SLOT ( simulate() ) ); |
112 | 118 | ||
113 | mPopUp->resize( mPopUp->sizeHint() ); | 119 | mPopUp->resize( mPopUp->sizeHint() ); |
114 | mPlayBeeps = 60; | 120 | mPlayBeeps = 60; |
@@ -310,273 +316,341 @@ void SimpleAlarmDaemonImpl::recieve( const QCString& msg, const QByteArray& ) | |||
310 | 316 | ||
311 | //qDebug("+++++++system command %s ",tempfilename.latin1() ); | 317 | //qDebug("+++++++system command %s ",tempfilename.latin1() ); |
312 | } | 318 | } |
313 | if ( mess.left( 11 ) == "audio_alarm") { | 319 | if ( mess.left( 11 ) == "audio_alarm") { |
314 | bool error = false; | 320 | bool error = false; |
315 | int len = mess.mid( 11 ).find("+++"); | 321 | int len = mess.mid( 11 ).find("+++"); |
316 | if ( len < 2 ) | 322 | if ( len < 2 ) |
317 | error = true; | 323 | error = true; |
318 | else { | 324 | else { |
319 | tempfilename = mess.mid( 11, len ); | 325 | tempfilename = mess.mid( 11, len ); |
320 | if ( !QFile::exists( tempfilename ) ) | 326 | if ( !QFile::exists( tempfilename ) ) |
321 | error = true; | 327 | error = true; |
322 | } | 328 | } |
323 | if ( ! error ) { | 329 | if ( ! error ) { |
324 | filename = tempfilename; | 330 | filename = tempfilename; |
325 | } | 331 | } |
326 | mAlarmMessage = mess.mid( 11+len+3+9 ); | 332 | mAlarmMessage = mess.mid( 11+len+3+9 ); |
327 | //qDebug("audio file command %s ",tempfilename.latin1() ); | 333 | //qDebug("audio file command %s ",tempfilename.latin1() ); |
328 | } | 334 | } |
329 | if ( mess.left( 9 ) == "cal_alarm") { | 335 | if ( mess.left( 9 ) == "cal_alarm") { |
330 | mAlarmMessage = mess.mid( 9 ) ; | 336 | mAlarmMessage = mess.mid( 9 ) ; |
331 | } | 337 | } |
332 | 338 | ||
333 | writeFile(); | 339 | writeFile(); |
334 | startAlarm( mAlarmMessage, filename ); | 340 | startAlarm( mAlarmMessage, filename ); |
335 | 341 | ||
336 | } | 342 | } |
337 | 343 | ||
338 | int SimpleAlarmDaemonImpl::getFileNameLen( QString mess ) | 344 | int SimpleAlarmDaemonImpl::getFileNameLen( QString mess ) |
339 | { | 345 | { |
340 | return 0; | 346 | return 0; |
341 | } | 347 | } |
342 | void SimpleAlarmDaemonImpl::startAlarm( QString mess, QString filename ) | 348 | void SimpleAlarmDaemonImpl::startAlarm( QString mess, QString filename ) |
343 | { | 349 | { |
344 | //mAlarmDialog->show(); | 350 | //mAlarmDialog->show(); |
345 | //mAlarmDialog->raise(); | 351 | //mAlarmDialog->raise(); |
346 | mAlarmDialog->eventNotification( mess, mPlayBeeps, filename, wavAlarm,mPausePlay ,mSuspend ); | 352 | mAlarmDialog->eventNotification( mess, mPlayBeeps, filename, wavAlarm,mPausePlay ,mSuspend ); |
347 | } | 353 | } |
348 | 354 | ||
349 | 355 | ||
350 | void SimpleAlarmDaemonImpl::fillTimerPopUp() | 356 | void SimpleAlarmDaemonImpl::fillTimerPopUp() |
351 | { | 357 | { |
352 | 358 | ||
353 | // qDebug(" timer %d %d ",mTimerPopupConf, mTimerTime ); | 359 | // qDebug(" timer %d %d ",mTimerPopupConf, mTimerTime ); |
354 | if ( mTimerPopupConf == mTimerTime ) { | 360 | if ( mTimerPopupConf == mTimerTime ) { |
355 | if ( mTimerTime ) { | 361 | if ( mTimerTime ) { |
356 | int secs = QDateTime::currentDateTime().secsTo ( mRunningTimer ); | 362 | int secs = QDateTime::currentDateTime().secsTo ( mRunningTimer ); |
357 | QTime t ( secs/3600, (secs/60)%60, secs%60 ); | 363 | QTime t ( secs/3600, (secs/60)%60, secs%60 ); |
358 | mTimerPopUp->changeItem ( 1 , t.toString()); | 364 | mTimerPopUp->changeItem ( 1 , t.toString() + " (remaining time)"); |
359 | } | 365 | } |
360 | else { | 366 | else { |
361 | QString text = mCustomText.stripWhiteSpace (); | 367 | QString text = mCustomText.stripWhiteSpace (); |
362 | int in = text.find( " " ); | 368 | int in = text.find( " " ); |
363 | text = text.left ( in ); | 369 | text = text.left ( in ); |
364 | mTimerPopUp->changeItem ( 3, text ); | 370 | mTimerPopUp->changeItem ( 3, text ); |
365 | } | 371 | } |
366 | return; | 372 | return; |
367 | } | 373 | } |
368 | mTimerPopupConf = mTimerTime; | 374 | mTimerPopupConf = mTimerTime; |
369 | mTimerPopUp->clear(); | 375 | mTimerPopUp->clear(); |
370 | if ( mTimerTime ) { | 376 | if ( mTimerTime ) { |
371 | int secs = QDateTime::currentDateTime().secsTo ( mRunningTimer ); | 377 | int secs = QDateTime::currentDateTime().secsTo ( mRunningTimer ); |
372 | QTime t ( secs/3600, (secs/60)%60, secs%60 ); | 378 | QTime t ( secs/3600, (secs/60)%60, secs%60 ); |
373 | mTimerPopUp->insertItem( "Stop", 0 ); | 379 | |
374 | mTimerPopUp->insertItem( t.toString(),1); | 380 | |
381 | mTimerPopUp->insertItem( "Stop timer "+ mRunningTimerText , 0 ); | ||
382 | mTimerPopUp->insertItem( t.toString() + " (remaining time)",1); | ||
383 | mTimerPopUp->insertItem( mRunningTimer.time().toString() + " (alarm time)",2); | ||
375 | } else { | 384 | } else { |
376 | 385 | ||
377 | QString fileName = QDir::homeDirPath() +"/.kopialarmtimerrc"; | 386 | QString fileName = QDir::homeDirPath() +"/.kopialarmtimerrc"; |
378 | QFile file( fileName ); | 387 | QFile file( fileName ); |
379 | if( !QFile::exists( fileName) ) { | 388 | if( !QFile::exists( fileName) ) { |
380 | // write defaults | 389 | // write defaults |
381 | if (!file.open( IO_WriteOnly ) ) { | 390 | if (!file.open( IO_WriteOnly ) ) { |
382 | return; | 391 | return; |
383 | } | 392 | } |
384 | QString configString ; | 393 | QString configString ; |
385 | configString += "#config file for kopi alarm timer\n"; | 394 | configString += "#config file for kopi alarm timer\n"; |
386 | configString += "#format: <Text for popup menu>;<timer countdown in minutes>\n"; | 395 | configString += "#format: <Text for popup menu>;<timer countdown in minutes>\n"; |
387 | configString += "#NOTE: minimum value for timer are 3 minutes!\n"; | 396 | configString += "#NOTE: minimum value for timer are 3 minutes!\n"; |
388 | configString += "24 h; 1440\n"; | 397 | configString += "24 h; 1440\n"; |
389 | configString += " 8 h; 480\n"; | 398 | configString += " 8 h; 480\n"; |
390 | configString += " 5 h; 300\n"; | 399 | configString += " 5 h; 300\n"; |
391 | configString += " 1 h; 60\n"; | 400 | configString += " 1 h; 60\n"; |
392 | configString += "30 min; 30\n"; | 401 | configString += "30 min; 30\n"; |
393 | configString += "15 min; 15\n"; | 402 | configString += "15 min; 15\n"; |
394 | configString += "SEPARATOR\n"; | 403 | configString += "SEPARATOR\n"; |
395 | configString += "Pizza; 22\n"; | 404 | configString += "Pizza; 22\n"; |
396 | configString += "Nap; 45\n"; | 405 | configString += "Nap; 45\n"; |
397 | configString += "Tea; 5\n"; | 406 | configString += "Tea; 5\n"; |
398 | QTextStream ts( &file ); | 407 | QTextStream ts( &file ); |
399 | ts << configString ; | 408 | ts << configString ; |
400 | file.close(); | 409 | file.close(); |
401 | } | 410 | } |
402 | 411 | ||
403 | if (!file.open( IO_ReadOnly ) ) { | 412 | if (!file.open( IO_ReadOnly ) ) { |
404 | return ; | 413 | return ; |
405 | } | 414 | } |
406 | QString line; | 415 | QString line; |
407 | bool ok; | 416 | bool ok; |
408 | while ( file.readLine( line, 1024 ) > 0 ) { | 417 | while ( file.readLine( line, 1024 ) > 0 ) { |
409 | //qDebug("read %s ", line.latin1()); | 418 | //qDebug("read %s ", line.latin1()); |
410 | if ( line.left(1 ) != "#" ) { | 419 | if ( line.left(1 ) != "#" ) { |
411 | // no comment | 420 | // no comment |
412 | if ( line.left(9 ) == "SEPARATOR" ) { | 421 | if ( line.left(9 ) == "SEPARATOR" ) { |
413 | mTimerPopUp->insertSeparator(); | 422 | mTimerPopUp->insertSeparator(); |
414 | } else { | 423 | } else { |
415 | QStringList li = QStringList::split(";",line); | 424 | QStringList li = QStringList::split(";",line); |
416 | ok = false; | 425 | ok = false; |
417 | if ( li.count() == 2 ) { | 426 | if ( li.count() == 2 ) { |
418 | int val = li[1].toInt( &ok ); | 427 | int val = li[1].toInt( &ok ); |
419 | if ( ok && val > 2 ) { | 428 | if ( ok && val > 2 ) { |
420 | mTimerPopUp->insertItem( li[0], val); | 429 | mTimerPopUp->insertItem( li[0], val); |
421 | } | 430 | } |
422 | } | 431 | } |
423 | } | 432 | } |
424 | } | 433 | } |
425 | } | 434 | } |
426 | file.close(); | 435 | file.close(); |
427 | #if 0 | 436 | #if 0 |
428 | mTimerPopUp->insertItem( "24 h", 1440 ); | 437 | mTimerPopUp->insertItem( "24 h", 1440 ); |
429 | // mTimerPopUp->insertItem( i18n("12 h"), 720 ); | 438 | // mTimerPopUp->insertItem( i18n("12 h"), 720 ); |
430 | mTimerPopUp->insertItem( " 8 h", 480 ); | 439 | mTimerPopUp->insertItem( " 8 h", 480 ); |
431 | mTimerPopUp->insertItem( " 5 h", 300 ); | 440 | mTimerPopUp->insertItem( " 5 h", 300 ); |
432 | // mTimerPopUp->insertItem( i18n(" 2 h"), 120 ); | 441 | // mTimerPopUp->insertItem( i18n(" 2 h"), 120 ); |
433 | mTimerPopUp->insertItem( " 1 h", 60 ); | 442 | mTimerPopUp->insertItem( " 1 h", 60 ); |
434 | mTimerPopUp->insertItem( "30 min", 30 ); | 443 | mTimerPopUp->insertItem( "30 min", 30 ); |
435 | mTimerPopUp->insertItem( "15 min", 15 ); | 444 | mTimerPopUp->insertItem( "15 min", 15 ); |
436 | mTimerPopUp->insertItem( "10 min", 10 ); | 445 | mTimerPopUp->insertItem( "10 min", 10 ); |
437 | //mTimerPopUp->insertItem( " 5 min", 5 ); | 446 | //mTimerPopUp->insertItem( " 5 min", 5 ); |
438 | mTimerPopUp->insertSeparator(); | 447 | mTimerPopUp->insertSeparator(); |
439 | mTimerPopUp->insertItem( "Pizza", 22 ); | 448 | mTimerPopUp->insertItem( "Pizza", 22 ); |
440 | mTimerPopUp->insertItem( "Nap", 45 ); | 449 | mTimerPopUp->insertItem( "Nap", 45 ); |
441 | mTimerPopUp->insertItem( "Tea", 5 ); | 450 | mTimerPopUp->insertItem( "Tea", 5 ); |
442 | #endif | 451 | #endif |
443 | QString text = mCustomText.stripWhiteSpace (); | 452 | QString text = mCustomText.stripWhiteSpace (); |
444 | int in = text.find( " " ); | 453 | int in = text.find( " " ); |
445 | text = text.left ( in ); | 454 | text = text.left ( in ); |
446 | mTimerPopUp->insertItem( text, 3 ); | 455 | mTimerPopUp->insertItem( text, 3 ); |
447 | mTimerPopUp->insertSeparator(); | 456 | mTimerPopUp->insertSeparator(); |
448 | mTimerPopUp->insertItem( "Customize", 2 ); | 457 | mTimerPopUp->insertItem( "Customize", 2 ); |
449 | } | 458 | } |
450 | 459 | ||
451 | } | 460 | } |
452 | 461 | ||
453 | void SimpleAlarmDaemonImpl::showTimer() | 462 | void SimpleAlarmDaemonImpl::showTimer() |
454 | { | 463 | { |
455 | fillTimerPopUp(); | 464 | fillTimerPopUp(); |
456 | } | 465 | } |
457 | 466 | ||
458 | void SimpleAlarmDaemonImpl::confTimer( int time ) | 467 | void SimpleAlarmDaemonImpl::confTimer( int time ) |
459 | { | 468 | { |
460 | //qDebug("impleAlarmDaemonImpl::confTimer() %d ", time ); | 469 | //qDebug("impleAlarmDaemonImpl::confTimer() %d ", time ); |
461 | int minutes = time; | 470 | int minutes = time; |
462 | if ( minutes == 0 ) { | 471 | if ( minutes == 0 ) { |
463 | if ( ! mTimerTime ) | 472 | if ( ! mTimerTime ) |
464 | return; | 473 | return; |
465 | 474 | ||
466 | QDialog dia ( 0, ("Stop Timer" ), true ); | 475 | QDialog dia ( 0, ("Stop Timer" ), true ); |
467 | QLabel lab (("Really stop the timer?"), &dia ); | 476 | QLabel lab (("Really stop the timer?\n\n"+ mRunningTimerText+"\n"), &dia ); |
477 | lab.setAlignment( AlignCenter ); | ||
468 | dia.setCaption(("KO/Pi Timer Stop" )); | 478 | dia.setCaption(("KO/Pi Timer Stop" )); |
469 | QVBoxLayout lay( &dia ); | 479 | QVBoxLayout lay( &dia ); |
480 | lay.addWidget( &lab); | ||
481 | QPushButton ok ( "Stop timer!", &dia); | ||
482 | QFont fo = dia.font(); | ||
483 | fo.setPointSize( 36 ); | ||
484 | ok.setFont( fo ); | ||
485 | lay.addWidget( &ok); | ||
486 | connect ( &ok, SIGNAL (clicked()), &dia, SLOT ( accept() ) ); | ||
487 | QPushButton con ( "Continue timer!", &dia); | ||
488 | fo.setPointSize( 36 ); | ||
489 | con.setFont( fo ); | ||
490 | lay.addWidget( &con); | ||
491 | connect ( &con, SIGNAL (clicked()), &dia, SLOT ( reject() ) ); | ||
470 | lay.setMargin(5); | 492 | lay.setMargin(5); |
471 | lay.setSpacing(5); | 493 | lay.setSpacing(5); |
472 | lay.addWidget( &lab); | 494 | dia.resize(dia.sizeHint() ); |
473 | dia.resize( 200, dia.sizeHint().height() ); | ||
474 | 495 | ||
475 | if ( !dia.exec() ) | 496 | if ( !dia.exec() ) |
476 | return; | 497 | return; |
477 | 498 | ||
478 | AlarmServer::deleteAlarm ( mRunningTimer,"koalarm" , timerMesssage.latin1() ); | 499 | AlarmServer::deleteAlarm ( mRunningTimer,"koalarm" , timerMesssage.latin1() ); |
479 | mTimerTime = 0; | 500 | mTimerTime = 0; |
480 | return; | 501 | return; |
481 | } | 502 | } |
482 | if ( mTimerTime ) | 503 | if ( mTimerTime ) |
483 | return; | 504 | return; |
484 | if ( minutes == 1 ) { | 505 | if ( minutes == 1 ) { |
485 | return; | 506 | return; |
486 | } | 507 | } |
487 | QString mess = "timer_alarm"; | 508 | QString mess = "timer_alarm"; |
488 | mess += ("Timer Alarm!\n"); | 509 | mess += ("Timer Alarm!\n"); |
489 | if ( minutes == 22 ) | 510 | if ( minutes == 22 ) { |
490 | mess += ( "Pizza is ready"); | 511 | mess += ( "Pizza is ready"); |
491 | else if ( minutes == 45 ) | 512 | mRunningTimerText = "Pizza"; |
513 | } | ||
514 | else if ( minutes == 45 ) { | ||
492 | mess += ( "Please wake up!"); | 515 | mess += ( "Please wake up!"); |
493 | else if ( minutes == 5 ) | 516 | mRunningTimerText = "Nap"; |
517 | } | ||
518 | else if ( minutes == 5 ) { | ||
494 | mess += ( "Tea is ready"); | 519 | mess += ( "Tea is ready"); |
520 | mRunningTimerText = "Tea"; | ||
521 | } | ||
495 | else if ( minutes == 3 ) { | 522 | else if ( minutes == 3 ) { |
496 | mess += mCustomText; | 523 | mess += mCustomText; |
497 | minutes = mCustomMinutes ; | 524 | minutes = mCustomMinutes ; |
525 | mRunningTimerText = mCustomText.stripWhiteSpace (); | ||
526 | int in = mRunningTimerText.find( " " ); | ||
527 | mRunningTimerText = mRunningTimerText.left ( in ); | ||
498 | } | 528 | } |
499 | else { | 529 | else { |
500 | if ( minutes == 2 ) { | 530 | if ( minutes == 2 ) { |
501 | // ask time | 531 | // ask time |
502 | QDialog dia ( 0, ("Customize Timer" ), true ); | 532 | QDialog dia ( 0, ("Customize Timer" ), true ); |
503 | QLabel lab (("Message Text:"), &dia ); | 533 | QLabel lab (("Message Text:"), &dia ); |
504 | dia.setCaption(("KO/Pi Timer" )); | 534 | dia.setCaption(("KO/Pi Timer" )); |
505 | QVBoxLayout lay( &dia ); | 535 | QVBoxLayout lay( &dia ); |
506 | lay.setMargin(5); | 536 | lay.setMargin(5); |
507 | lay.setSpacing(5); | 537 | lay.setSpacing(5); |
508 | lay.addWidget( &lab); | 538 | lay.addWidget( &lab); |
509 | QLineEdit lEdit( mCustomText, &dia ); | 539 | QLineEdit lEdit( mCustomText, &dia ); |
510 | lay.addWidget( &lEdit); | 540 | lay.addWidget( &lEdit); |
511 | QLabel lab2 (("Countdown time (1 min - 24 h):"), &dia ); | 541 | QLabel lab2 (("Countdown time (1 min - 24 h):"), &dia ); |
512 | lay.addWidget( &lab2); | 542 | lay.addWidget( &lab2); |
543 | QHBox hbox1 ( &dia ); | ||
544 | lay.addWidget( &hbox1); | ||
545 | QLabel lab3 (("Hours"), &hbox1 ); | ||
546 | QLabel lab4 (("Minutes"), &hbox1 ); | ||
513 | QHBox hbox ( &dia ); | 547 | QHBox hbox ( &dia ); |
514 | QLabel lab3 (("h:"), &hbox ); | ||
515 | QSpinBox spinh( 0, 24, 1,& hbox ); | 548 | QSpinBox spinh( 0, 24, 1,& hbox ); |
516 | QLabel lab4 ((" min:"), &hbox ); | 549 | QFont fo = dia.font(); |
550 | fo.setPointSize( 36 ); | ||
517 | QSpinBox spinm( 0, 59, 1,&hbox ); | 551 | QSpinBox spinm( 0, 59, 1,&hbox ); |
552 | spinm.setFont( fo ); | ||
553 | spinh.setFont( fo ); | ||
554 | spinh.setButtonSymbols( QSpinBox::PlusMinus ); | ||
555 | spinm.setButtonSymbols( QSpinBox::PlusMinus ); | ||
556 | spinh.upButton ()->setFixedSize( QSize( 48, 30 )); | ||
557 | spinh.downButton ()->setFixedSize( QSize( 48, 30 )); | ||
558 | //spinh.editor ()->setFixedSize( QSize( 50, 100 )); | ||
559 | spinh.setFixedSize( 100,62 ); | ||
560 | spinm.upButton ()->setFixedSize( QSize( 48, 30 )); | ||
561 | spinm.downButton ()->setFixedSize( QSize( 48, 30 )); | ||
562 | spinm.downButton ()->setGeometry( 50,50,50,50); | ||
563 | spinm.setSuffix( " m" ); | ||
564 | spinh.setSuffix( " h" ); | ||
565 | spinm.setWrapping ( true ); | ||
566 | //spinm.editor ()->setFixedSize( QSize( 50, 100 )); | ||
567 | spinm.setLineStep( 1 ); | ||
568 | spinm.setFixedSize( 110,62 ); | ||
569 | lay.addWidget( &hbox); | ||
570 | QLabel lab5 ("Timer fires at:", &dia ); | ||
571 | lab5.setAlignment( AlignCenter ); | ||
572 | lay.addWidget( &lab5); | ||
573 | KODateLabel dl ( &dia ); | ||
574 | dl.setAlignment( AlignCenter ); | ||
575 | dl.setFont( fo ); | ||
576 | connect ( &spinh, SIGNAL ( valueChanged (int)), &dl, SLOT ( slot_hours( int ) ) ); | ||
577 | connect ( &spinm, SIGNAL ( valueChanged (int)), &dl, SLOT ( slot_minutes( int ) ) ); | ||
578 | lay.addWidget( &dl); | ||
518 | spinh.setValue( mCustomMinutes/60 ); | 579 | spinh.setValue( mCustomMinutes/60 ); |
519 | spinm.setValue( mCustomMinutes%60 ); | 580 | spinm.setValue( mCustomMinutes%60 ); |
520 | lay.addWidget( &hbox); | 581 | QPushButton ok ( "Start timer", &dia); |
582 | ok.setFont( fo ); | ||
583 | lay.addWidget( &ok); | ||
584 | connect ( &ok, SIGNAL (clicked()), &dia, SLOT ( accept() ) ); | ||
521 | dia.resize( dia.sizeHint().width(), dia.sizeHint().height() ); | 585 | dia.resize( dia.sizeHint().width(), dia.sizeHint().height() ); |
586 | |||
522 | if ( !dia.exec() ) | 587 | if ( !dia.exec() ) |
523 | return; | 588 | return; |
524 | mCustomText = lEdit.text(); | 589 | mCustomText = lEdit.text(); |
525 | mCustomMinutes = spinh.value()*60+spinm.value(); | 590 | mCustomMinutes = spinh.value()*60+spinm.value(); |
526 | if ( mCustomMinutes == 0 ) | 591 | if ( mCustomMinutes == 0 ) |
527 | mCustomMinutes = 1; | 592 | mCustomMinutes = 1; |
528 | if ( mCustomMinutes > 1440 ) | 593 | if ( mCustomMinutes > 1440 ) |
529 | mCustomMinutes = 1440; | 594 | mCustomMinutes = 1440; |
530 | mess += mCustomText; | 595 | mess += mCustomText; |
531 | minutes = mCustomMinutes; | 596 | minutes = mCustomMinutes; |
597 | mRunningTimerText = mCustomText.stripWhiteSpace (); | ||
598 | int in = mRunningTimerText.find( " " ); | ||
599 | mRunningTimerText = mRunningTimerText.left ( in ); | ||
532 | } | 600 | } |
533 | else | 601 | else { |
534 | mess+= QString::number ( minutes ) + ( " minutes are past!"); | 602 | mess+= QString::number ( minutes ) + ( " minutes are past!"); |
603 | int min = minutes; | ||
604 | if ( min % 60 == 0 ) | ||
605 | mRunningTimerText = QString::number ( min/60 ) + ( " hours"); | ||
606 | else | ||
607 | mRunningTimerText = QString::number ( minutes ) + ( " minutes"); | ||
608 | } | ||
535 | } | 609 | } |
536 | //minutes = 1; | 610 | //minutes = 1; |
537 | mRunningTimer = QDateTime::currentDateTime().addSecs( minutes * 60 ); | 611 | mRunningTimer = QDateTime::currentDateTime().addSecs( minutes * 60 ); |
538 | timerMesssage = mess; | 612 | timerMesssage = mess; |
539 | AlarmServer::addAlarm ( mRunningTimer,"koalarm",timerMesssage.latin1()); | 613 | AlarmServer::addAlarm ( mRunningTimer,"koalarm",timerMesssage.latin1()); |
540 | mTimerTime = 1; | 614 | mTimerTime = 1; |
541 | } | 615 | } |
542 | 616 | ||
543 | void SimpleAlarmDaemonImpl::writeFile() | 617 | void SimpleAlarmDaemonImpl::writeFile() |
544 | { | 618 | { |
545 | QCopEnvelope e("QPE/Application/kopi", "-writeFile"); | 619 | QCopEnvelope e("QPE/Application/kopi", "-writeFile"); |
546 | } | 620 | } |
547 | void SimpleAlarmDaemonImpl::showWN() | 621 | void SimpleAlarmDaemonImpl::showWN() |
548 | { | 622 | { |
549 | QCopEnvelope e("QPE/Application/kopi", "-showWN"); | 623 | QCopEnvelope e("QPE/Application/kopi", "-showWN"); |
550 | } | 624 | } |
551 | void SimpleAlarmDaemonImpl::newTodo() | 625 | void SimpleAlarmDaemonImpl::newTodo() |
552 | { | 626 | { |
553 | QCopEnvelope e("QPE/Application/kopi", "-newTodo"); | 627 | QCopEnvelope e("QPE/Application/kopi", "-newTodo"); |
554 | } | 628 | } |
555 | 629 | ||
556 | void SimpleAlarmDaemonImpl::newEvent() | 630 | void SimpleAlarmDaemonImpl::newEvent() |
557 | { | 631 | { |
558 | QCopEnvelope e("QPE/Application/kopi", "-newEvent"); | 632 | QCopEnvelope e("QPE/Application/kopi", "-newEvent"); |
559 | 633 | ||
560 | } | 634 | } |
561 | void SimpleAlarmDaemonImpl::newMail() | 635 | void SimpleAlarmDaemonImpl::newMail() |
562 | { | 636 | { |
563 | QCopEnvelope e("QPE/Application/ompi", "newMail()"); | 637 | QCopEnvelope e("QPE/Application/ompi", "newMail()"); |
564 | } | 638 | } |
565 | void SimpleAlarmDaemonImpl::showAdd() | 639 | void SimpleAlarmDaemonImpl::showAdd() |
566 | { | 640 | { |
567 | QCopEnvelope e("QPE/Application/kapi", "raise()"); | 641 | QCopEnvelope e("QPE/Application/kapi", "raise()"); |
568 | } | 642 | } |
569 | void SimpleAlarmDaemonImpl::ringSync() | 643 | void SimpleAlarmDaemonImpl::ringSync() |
570 | { | 644 | { |
571 | QCopEnvelope e("QPE/Application/kopi", "-ringSync"); | 645 | QCopEnvelope e("QPE/Application/kopi", "-ringSync"); |
572 | 646 | ||
573 | } | 647 | } |
574 | void SimpleAlarmDaemonImpl::newCountdown() | 648 | void SimpleAlarmDaemonImpl::newCountdown() |
575 | { | 649 | { |
576 | //recieve("cal_alarm", 10 ); | 650 | //recieve("cal_alarm", 10 ); |
577 | } | 651 | } |
578 | void SimpleAlarmDaemonImpl::simulate() | 652 | void SimpleAlarmDaemonImpl::simulate() |
579 | { | 653 | { |
580 | writeFile(); | 654 | writeFile(); |
581 | QString filename = getenv("QPEDIR") ; | 655 | QString filename = getenv("QPEDIR") ; |
582 | filename += "/pics/kdepim/korganizer/koalarm.wav"; | 656 | filename += "/pics/kdepim/korganizer/koalarm.wav"; |
diff --git a/kalarmd/simplealarmdaemonimpl.h b/kalarmd/simplealarmdaemonimpl.h index 32a3867..cbdba47 100644 --- a/kalarmd/simplealarmdaemonimpl.h +++ b/kalarmd/simplealarmdaemonimpl.h | |||
@@ -1,86 +1,119 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the KOrganizer alarm daemon. | 2 | This file is part of the KOrganizer alarm daemon. |
3 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | #ifndef SIMPLEALARMDAEMONIMPL_H | 23 | #ifndef SIMPLEALARMDAEMONIMPL_H |
24 | #define SIMPLEALARMDAEMONIMPL_H | 24 | #define SIMPLEALARMDAEMONIMPL_H |
25 | 25 | ||
26 | //#include "simplealarmdaemon.h" | 26 | //#include "simplealarmdaemon.h" |
27 | #include <qdatetime.h> | 27 | #include <qdatetime.h> |
28 | #include <qlabel.h> | 28 | #include <qlabel.h> |
29 | #include <qtimer.h> | ||
29 | 30 | ||
30 | class QLabel; | 31 | class QLabel; |
31 | class QTimer; | 32 | class QTimer; |
32 | class QPopupMenu; | 33 | class QPopupMenu; |
33 | class AlarmDialog; | 34 | class AlarmDialog; |
34 | class SimpleAlarmDaemonImpl : public QLabel | 35 | class SimpleAlarmDaemonImpl : public QLabel |
35 | { | 36 | { |
36 | Q_OBJECT | 37 | Q_OBJECT |
37 | public: | 38 | public: |
38 | SimpleAlarmDaemonImpl( QWidget *parent = 0 ); | 39 | SimpleAlarmDaemonImpl( QWidget *parent = 0 ); |
39 | 40 | ||
40 | ~SimpleAlarmDaemonImpl(); | 41 | ~SimpleAlarmDaemonImpl(); |
41 | 42 | ||
42 | protected slots: | 43 | protected slots: |
43 | void recieve( const QCString& msg, const QByteArray& data ); | 44 | void recieve( const QCString& msg, const QByteArray& data ); |
44 | void newTodo(); | 45 | void newTodo(); |
45 | void newEvent(); | 46 | void newEvent(); |
46 | void newCountdown(); | 47 | void newCountdown(); |
47 | void simulate(); | 48 | void simulate(); |
48 | void showKO(); | 49 | void showKO(); |
49 | void showWN(); | 50 | void showWN(); |
50 | void showAdd(); | 51 | void showAdd(); |
51 | void newMail(); | 52 | void newMail(); |
52 | void ringSync(); | 53 | void ringSync(); |
53 | void showTodo(); | 54 | void showTodo(); |
54 | void writeFile(); | 55 | void writeFile(); |
55 | void writeJournal(); | 56 | void writeJournal(); |
56 | void slotPlayBeep( int ); | 57 | void slotPlayBeep( int ); |
57 | void showTimer( ); | 58 | void showTimer( ); |
58 | void confPause( int ); | 59 | void confPause( int ); |
59 | void confTimer( int ); | 60 | void confTimer( int ); |
60 | void saveSlot( int ); | 61 | void saveSlot( int ); |
61 | void confSuspend( int ); | 62 | void confSuspend( int ); |
62 | void confSound( int num ); | 63 | void confSound( int num ); |
63 | void startAlarm(QString mess, QString fn ); | 64 | void startAlarm(QString mess, QString fn ); |
64 | 65 | ||
65 | protected: | 66 | protected: |
66 | void mousePressEvent( QMouseEvent * ); | 67 | void mousePressEvent( QMouseEvent * ); |
67 | 68 | ||
68 | private: | 69 | private: |
69 | AlarmDialog *mAlarmDialog; | 70 | AlarmDialog *mAlarmDialog; |
70 | int mPlayBeeps; | 71 | int mPlayBeeps; |
71 | int mPausePlay; | 72 | int mPausePlay; |
72 | int mSuspend; | 73 | int mSuspend; |
73 | QString mAlarmMessage; | 74 | QString mAlarmMessage; |
74 | int mTimerTime; | 75 | int mTimerTime; |
75 | int getFileNameLen( QString ); | 76 | int getFileNameLen( QString ); |
76 | QPopupMenu* mPopUp, *mBeepPopUp, *mTimerPopUp, *mSoundPopUp,*mPausePopUp,*mSuspendPopUp; | 77 | QPopupMenu* mPopUp, *mBeepPopUp, *mTimerPopUp, *mSoundPopUp,*mPausePopUp,*mSuspendPopUp; |
77 | QDateTime mRunningTimer; | 78 | QDateTime mRunningTimer; |
78 | void fillTimerPopUp(); | 79 | void fillTimerPopUp(); |
79 | QString timerMesssage; | 80 | QString timerMesssage; |
80 | QString mCustomText; | 81 | QString mCustomText; |
82 | QString mRunningTimerText; | ||
81 | int mCustomMinutes; | 83 | int mCustomMinutes; |
82 | int mTimerPopupConf; | 84 | int mTimerPopupConf; |
83 | bool wavAlarm; | 85 | bool wavAlarm; |
84 | }; | 86 | }; |
85 | 87 | class KODateLabel : public QLabel | |
88 | { | ||
89 | Q_OBJECT | ||
90 | public: | ||
91 | KODateLabel( QWidget *parent=0, const char *name=0 ) : | ||
92 | QLabel( parent, name ) | ||
93 | { | ||
94 | hour = 0; | ||
95 | minutes = 0; | ||
96 | QTimer * ti = new QTimer( this ); | ||
97 | connect ( ti, SIGNAL ( timeout () ), this, SLOT ( updateText() )); | ||
98 | ti->start( 1000 ); | ||
99 | |||
100 | } | ||
101 | public slots: | ||
102 | void slot_minutes( int m ) | ||
103 | { | ||
104 | minutes = m; updateText(); | ||
105 | } | ||
106 | void slot_hours( int h ) | ||
107 | { | ||
108 | hour = h; updateText(); | ||
109 | } | ||
110 | private slots: | ||
111 | void updateText() | ||
112 | { | ||
113 | QDateTime dt = QDateTime::currentDateTime(); | ||
114 | dt = dt.addSecs( minutes * 60 + hour * 3600 ); | ||
115 | setText( dt.time().toString() ); | ||
116 | } | ||
117 | int hour, minutes; | ||
118 | }; | ||
86 | #endif | 119 | #endif |