最近我在做Qtopia4上的一个闹钟功能,基本了解了其中的原理,自己总结了一下,不过这里好像不能发附件,所以没有办法传上来。
那就简单的说一下:
服务端有一个记录所有闹钟的list,根据list中闹钟项查找到最近将发生的闹钟,然后根据其时间设置一个计时器,到这个闹钟提示时间触发时间消息,然后在timerEvent函数中来发送一个Qcop信号(由用户应用程序接收并且做闹钟的提醒处理),并且在List中将这个闹钟项删除,继续设置下一个最近将发生的闹钟的计时器。
客户端应用程序(也就是需要自己动手写的程序),通过Qtopia::addAlarm(....)添加闹钟事件,在你的程序中建立这么一个链接:connect(qApp, SIGNAL(appMessage(...)), ths, SLOT(appMessage(...)));然后再槽appMessage中判断如下:
void ClockMain::appMessage( const QString &msg, const QByteArray &data )
{
if ( msg == "alarm(QDateTime,int)" ) {
QDataStream ds(data);
QDateTime when;
int t;
ds >> when >> t;
//这里实现闹钟提醒的功能代码
}
}
你可以参考如下几个函数:
void Qtopia::addAlarm ( QDateTime when, const QString & channel, const QString & msg, int data )
void Qtopia::deleteAlarm ( QDateTime when, const QString & channel, const QString & msg, int data )
还有AlarmServerService 的说明,
或者你可以直接参考Qtopia下面的Clock程序,在目录QTOPIA_DIR/src/application/clock中
还有什么疑问可以给我发邮件
jekouwnag@gmail.com