[Kde-pim] Running KMail and calling via D-Bus

Volker Krause vkrause at kde.org
Sun Aug 2 16:56:46 BST 2009


On Sunday 02 August 2009 13:30:31 David Jarvie wrote:
> Can anybody help resolve this D-Bus problem with KMail?
>
> KAlarm has functions to invoke KMail and issue a D-Bus call to show a mail.
> The problem is that if KMail isn't already running, the D-Bus call doesn't
> work when called immediately after starting up KMail, since the relevant
> D-Bus interface is not immediately available. I've experimented with
> various tweaks, and compared the code to other places in kdepim, but still
> can't think of any other way of doing it except to introduce timer-based
> calls to wait for the D- Bus interface to become active. Yet other
> applications (KOrganizer etc) don't seem to have this problem (or do they
> just ignore it?).

IIRC KDBusServiceStarter is used there, not sure if that really waits until 
the corresponding service is available though. If you want to be really sure 
that KMail has been started, listening to the serviceOwnerChanged() signal 
might help.

> The relevant code is below. If kmail wasn't running before this is called,
> it always returns with the "KMail not yet available" debug message. If
> called when kmail is already running, it succeeds.
>
> if (KToolInvocation::startServiceByDesktopName("kmail"))
> {
>      kError() << "Couldn't start kmail";
>      return false;
> }
> org::kde::kmail::kmail kmail("org.kde.kmail", "/KMail",
>                                               
> QDBusConnection::sessionBus()); if (!kmail.isValid())
> {
>     kDebug() << "KMail not yet available:" << kmail.lastError().message();
>     return false;
> }
> QDBusReply<bool> reply = kmail.showMail(serialNumber, QString());
> if (!reply.isValid())
>     kError() << "kmail D-Bus call failed:" << reply.error().message();
> else if (!reply.value())
>     kDebug() << "function error";

regards
Volker
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20090802/5517749b/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list