summaryrefslogtreecommitdiff
path: root/library/alarmserver.cpp
authorzecke <zecke>2002-09-10 12:09:49 (UTC)
committer zecke <zecke>2002-09-10 12:09:49 (UTC)
commit6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4 (patch) (side-by-side diff)
tree6ebc93c6432f4ed9d00ef1448b6a047ef522a79a /library/alarmserver.cpp
parentd10cddb3c9ce75bc90b14add14bc133737fe35aa (diff)
downloadopie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.zip
opie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.tar.gz
opie-6b77a1cdb9536b1c135eb86d53a6b2c22c19b0a4.tar.bz2
Qtopia1-6 merge
still to test bic changes to be resolved more changes to be made?
Diffstat (limited to 'library/alarmserver.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/alarmserver.cpp53
1 files changed, 40 insertions, 13 deletions
diff --git a/library/alarmserver.cpp b/library/alarmserver.cpp
index a1a7142..1ee05c6 100644
--- a/library/alarmserver.cpp
+++ b/library/alarmserver.cpp
@@ -1,7 +1,7 @@
/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
+** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
@@ -194,6 +194,8 @@ void TimerReceiverObject::resetTimer()
int total_written;
QDateTime nearest = TimeConversion::fromUTC(nearestTimerEvent->UTCtime);
QDateTime now = QDateTime::currentDateTime();
+ if ( nearest < now )
+ nearest = now;
int secs = TimeConversion::secsTo( now, nearest );
if ( secs > maxsecs ) {
// too far for millisecond timing
@@ -245,10 +247,12 @@ void TimerReceiverObject::timerEvent( QTimerEvent * )
if (nearestTimerEvent) {
if ( nearestTimerEvent->UTCtime
<= TimeConversion::toUTC(QDateTime::currentDateTime()) ) {
+#ifndef QT_NO_COP
QCopEnvelope e( nearestTimerEvent->channel,
nearestTimerEvent->message );
e << TimeConversion::fromUTC( nearestTimerEvent->UTCtime )
<< nearestTimerEvent->data;
+#endif
timerEventList.remove( nearestTimerEvent );
needSave = TRUE;
}
@@ -262,16 +266,31 @@ void TimerReceiverObject::timerEvent( QTimerEvent * )
/*!
\class AlarmServer alarmserver.h
- \brief The AlarmServer class provides alarms to be scheduled.
+ \brief The AlarmServer class allows alarms to be scheduled and unscheduled.
+
+ Applications can schedule alarms with addAlarm() and can
+ unschedule alarms with deleteAlarm(). When the time for an alarm
+ to go off is reached the specified \link qcop.html QCop\endlink
+ message is sent on the specified channel (optionally with
+ additional data).
+
+ 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.
- Applications which wish to be informed when a certain time instant
- passes use the functions of AlarmServer to request so.
+ \ingroup qtopiaemb
+ \sa QCopEnvelope
*/
/*!
- Schedules an alarm for \a when. Soon after this time,
- \a message will be sent to \a channel, with \a data as
- a parameter. \a message must be of the form "someMessage(int)".
+ 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.
\sa deleteAlarm()
*/
@@ -312,19 +331,25 @@ void AlarmServer::addAlarm ( QDateTime when, const QCString& channel,
if ( needSave )
saveState();
} else {
+#ifndef QT_NO_COP
QCopEnvelope e( "QPE/System", "addAlarm(QDateTime,QCString,QCString,int)" );
e << when << channel << message << data;
+#endif
}
}
/*!
- Deletes previously scheduled alarms which match \a when, \a channel, \a message,
- and \a data.
+ Deletes previously scheduled alarms which match \a when, \a channel,
+ \a message, and \a data.
- Passing null values for \a when, \a channel, or \a message indicates "any".
- Passing -1 for \a data indicates "any".
+ Passing null values for \a when, \a channel, or for the \link
+ qcop.html QCop\endlink \a message, acts as a wildcard meaning "any".
+ Similarly, passing -1 for \a data indicates "any".
+
+ If there is no matching alarm, nothing happens.
+
+ \sa addAlarm()
- \sa deleteAlarm()
*/
void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QCString& message, int data)
{
@@ -359,8 +384,10 @@ void AlarmServer::deleteAlarm (QDateTime when, const QCString& channel, const QC
if ( needSave )
saveState();
} else {
+#ifndef QT_NO_COP
QCopEnvelope e( "QPE/System", "deleteAlarm(QDateTime,QCString,QCString,int)" );
e << when << channel << message << data;
+#endif
}
}