Ping Class Reference

#include <complexping.h>

Inheritance diagram for Ping:

Inheritance graph
[legend]
Collaboration diagram for Ping:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 31 of file complexping.h.

Public Slots

void start (const QString &, const QString &, const QString &)

Public Attributes

QFile qstdin
QDBusInterfaceiface


Member Function Documentation

void Ping::start ( const QString ,
const QString ,
const QString  
) [slot]

Definition at line 35 of file complexping.cpp.

References QDBusAbstractInterface::call(), QObject::connect(), QString::fromLocal8Bit(), iface, QCoreApplication::instance(), QString::isEmpty(), QVariant::isNull(), QDBusError::isValid(), QDBusAbstractInterface::isValid(), QDBusReply< T >::isValid(), QDBusAbstractInterface::lastError(), message, QDBusError::message(), QString::mid(), name, QFile::open(), printf, QObject::property(), qstdin, QCoreApplication::quit(), QIODevice::readLine(), QIODevice::ReadOnly, SERVICE_NAME, QDBusConnection::sessionBus(), QObject::setProperty(), SIGNAL, SLOT, QString::startsWith(), QVariant::toString(), and QDBusReply< T >::value().

00036 {
00037     Q_UNUSED(oldValue);
00038 
00039     if (name != SERVICE_NAME || newValue.isEmpty())
00040         return;
00041 
00042     // open stdin for reading
00043     qstdin.open(stdin, QIODevice::ReadOnly);
00044 
00045     // find our remote
00046     iface = new QDBusInterface(SERVICE_NAME, "/", "com.trolltech.QtDBus.ComplexPong.Pong",
00047                                QDBusConnection::sessionBus(), this);
00048     if (!iface->isValid()) {
00049         fprintf(stderr, "%s\n",
00050                 qPrintable(QDBusConnection::sessionBus().lastError().message()));
00051         QCoreApplication::instance()->quit();
00052     }
00053 
00054     connect(iface, SIGNAL(aboutToQuit()), QCoreApplication::instance(), SLOT(quit()));
00055 
00056     while (true) {
00057         printf("Ask your question: ");
00058 
00059         QString line = QString::fromLocal8Bit(qstdin.readLine()).trimmed();
00060         if (line.isEmpty()) {
00061             iface->call("quit");
00062             return;
00063         } else if (line == "value") {
00064             QVariant reply = iface->property("value");
00065             if (!reply.isNull())
00066                 printf("value = %s\n", qPrintable(reply.toString()));
00067         } else if (line.startsWith("value=")) {
00068             iface->setProperty("value", line.mid(6));            
00069         } else {
00070             QDBusReply<QDBusVariant> reply = iface->call("query", line);
00071             if (reply.isValid())
00072                 printf("Reply was: %s\n", qPrintable(reply.value().variant().toString()));
00073         }
00074 
00075         if (iface->lastError().isValid())
00076             fprintf(stderr, "Call failed: %s\n", qPrintable(iface->lastError().message()));
00077     }
00078 }    


Member Data Documentation

QFile Ping::qstdin

Definition at line 37 of file complexping.h.

Referenced by start().

QDBusInterface* Ping::iface

Definition at line 38 of file complexping.h.

Referenced by start().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 15:34:39 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1