#include <QCoreApplication> #include <QDBusConnection> #include <QDBusMessage> #include <QHostAddress> #include <QUdpSocket> #include <QDateTime> class Handler : public QObject { Q_OBJECT private: static const QHostAddress address; static const int port; public: Handler() : QObject() {} public slots: void handleCall(const QDBusMessage& msg) { const QString message = QString( "<mythnotify version=\"1\">\n" " <container name=\"notify_cid_info\">\n" " <textarea name=\"notify_cid_line\">\n" " <value>Line Number: %1</value>\n" " </textarea>\n" " <textarea name=\"notify_cid_name\">\n" " <value>Call From: %2</value>\n" " </textarea>\n" " <textarea name=\"notify_cid_num\">\n" " <value>Phone Number: %3</value>\n" " </textarea>\n" " <textarea name=\"notify_cid_dt\">\n" " <value>Date: %4</value>\n" " </textarea>\n" " </container>\n" "</mythnotify>") .arg("1") .arg(msg.arguments().at(0).toString()) .arg(msg.arguments().at(1).toString()) .arg(QDateTime::currentDateTime().toString(Qt::DefaultLocaleLongDate)); QByteArray datagram = message.toUtf8(); QUdpSocket *sock = new QUdpSocket(); sock->writeDatagram(datagram.constData(), datagram.length(), address, port); sock->deleteLater(); } }; const QHostAddress Handler::address = QHostAddress::Broadcast; const int Handler::port = 6948; int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); static const QString service = "com.nokia.csd.Call"; static const QString path = "/com/nokia/csd/call"; static const QString interface = "com.nokia.csd.Call"; static const QString name = "Coming"; Handler callHandler; static QDBusConnection conn = QDBusConnection::systemBus(); conn.connect(service, path, interface, name, &callHandler, SLOT(handleCall(const QDBusMessage&))); return app.exec(); } #include "main.moc"