Active Topics

 


Reply
Thread Tools
jflatt's Avatar
Posts: 534 | Thanked: 723 times | Joined on Oct 2009
#1
This will listen on D-Bus for an incoming call on my N900, and transmit a message over UDP broadcast for MythTV to display onscreen.

Code:
#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"
 

The Following 2 Users Say Thank You to jflatt For This Useful Post:
Reply


 
Forum Jump


All times are GMT. The time now is 19:18.