-rw-r--r-- | library/alarmserver.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/library/alarmserver.cpp b/library/alarmserver.cpp index a75fc7e..6f6f32d 100644 --- a/library/alarmserver.cpp +++ b/library/alarmserver.cpp @@ -313,25 +313,85 @@ void TimerReceiverObject::timerEvent( QTimerEvent * ) Scheduling an alarm using this class is important (rather just using a QTimer) since the machine may be asleep and needs to get woken up using the Linux kernel which implements this at the kernel level to minimize battery usage while asleep. + A small example on how to use AlarmServer. + + First we need to connect a slot the AppMessage QCOP call. appMessage + will be emitted if QPE/Application/appname gets called. + + \code + TestApp::TestApp(QWidget *parent, const char* name, WFlags fl ) + : QMainWindow(parent,name,fl){ + connect(qApp,SIGNAL(appMessage(const QCString&,const QByteArray&)), + this,SLOT(slotAppMessage(const QCString&,const QByteArray&))); + } + \endcode + + To add / delete an alarm, you can use the static method AlarmServer::addAlarm and + AlarmServer::deleteAlarm. Note that an old (expired) alarm will automatically be deleted + from the alarmserver list, but a change in timing will have the effect, that both + alarms will be emitted. So if you change an Alarm be sure to delete the old one! + @see addAlarm + + \code + QDateTime oldDt = oldAlarmDateTime(); + QPEApplication::execDialog(ourDlg); + QDateTime newDt = ourDlg->dateTime(); + if(newDt == oldDt ) return; + @slash* code is missing for unsetting an alarm *@slash + + AlarmServer::deleteAlarm(oldDt,"QPE/Application/appname","checkAlarm(QDateTime,int)",0); + AlarmServer::addAlarm( newDt,"QPE/AlarmServer/appname","checkAlarm(QDateTime,int)",0); + + \endcode + + Now once the Alarm is emitted you need to check the appMessage and then do what you want. + \code + void TestApp::slotAppMessage(const QCString& str, const QByteArray& ar ){ + QDataStream stream(ar,IO_ReadOnly); + if(str == "checkAlarm(QDateTime,int)" ){ + QDateTime dt; + int a; + stream >> dt >> a; + // fire up alarm + } + } + \endcode + \ingroup qtopiaemb \sa QCopEnvelope + @see QPEApplication::appMessage(const QCString&,const QByteArray&) + @see OPimMainWindow + @see ODevice::alarmSound() + @see Sound::soundAlarm() */ /*! Schedules an alarm to go off at (or soon after) time \a when. When the alarm goes off, the \link qcop.html QCop\endlink \a message will be sent to \a channel, with \a data as a parameter. If this function is called with exactly the same data as a previous call the subsequent call is ignored, so there is only ever one alarm with a given set of parameters. + Once an alarm is emitted. The \a channel with a \a message will be emitted + and data will be send. + The QDateTime and int are the two parameters included in the QCOP message. + You can specify channel, message and the integer parameter. QDateTime will be + the datetime of the QCop call. + + @param when The QDateTime of the alarm + @param channel The channel which gets called once the alarm is emitted + @param message The message to be send to the channel + @param data Additional data as integer + + @see QCopChannel \sa deleteAlarm() */ void AlarmServer::addAlarm ( QDateTime when, const QCString& channel, const QCString& message, int data) { if ( qApp->type() == QApplication::GuiServer ) { |