Help with QtDBUS

Jaroslav Reznik jreznik at
Thu Aug 20 16:15:37 BST 2009

I'm trying to help PolicyKit-KDE guys with PolicyKit 1 KDE Authentication 
Agent as in Fedora 12 PolicyKit 1 is going to be default one. And we don't 
want to use Gnome one to not mess our KDE. I'd like to help as this evil comes 
from our Desktop team :-)

But I hit problems with QtBus (yes, I have to admit I'm not DBUS expert at all 

The BeginAuthentication method has 'sssa{ss}sa(sa{sv})' signature, see [1]. 
I'm trying to implement it in QtDBus. This is part of my code (I'd like to 
branch old code in SVN tomorrow).

So I have this slot
void BeginAuthentication(const QString &action_id, const QString &message, 
const QString &icon_name, const QMap<QString, QString> &details, const QString 
&cookie, const QList<Identity> &identities);

This is Identity structure - a(sa{sv})
struct Identity
    QString subject_kind;
    QVariantMap subject_details;


And marshaling code (for >> nearly same):
QDBusArgument &operator<<(QDBusArgument &argument, const Identity &identity)
    argument << identity.subject_kind;
    argument << identity.subject_details;    

    return argument;

But I've got UnknowMethod Error from PK1 daemon - Method "BeginAuthentication" 
with signature "sssa{ss}sa(sa{sv})" on interface 
"org.freedesktop.PolicyKit1.AuthenticationAgent" doesn't exist.

What I have to do to use these complex types - a{ss} and a(sa{sv})? I have no 
problems with calling simple CancelAuthentication method (just one string 


Jaroslav Řezník <jreznik at>
Associate Software Engineer - Base Operating Systems Brno

Office: +420 532 294 275
Mobile: +420 731 455 332
Red Hat, Inc.                     
>> Visit to unsubscribe <<

More information about the kde-core-devel mailing list