diff --git a/src/libtomahawk/AclRegistry.cpp b/src/libtomahawk/AclRegistry.cpp index 8171a664f..e7161bd23 100644 --- a/src/libtomahawk/AclRegistry.cpp +++ b/src/libtomahawk/AclRegistry.cpp @@ -31,6 +31,43 @@ #include "jobview/JobStatusModel.h" +QDataStream& operator<<( QDataStream &out, const ACLRegistry::User &user ) +{ + out << ACLUSERVERSION; + out << user.uuid; + out << user.knownDbids.length(); + foreach( QString knownDbid, user.knownDbids ) + out << knownDbid; + out << user.knownAccountIds.length(); + foreach( QString knownAccount, user.knownAccountIds ) + out << user.knownAccountIds; + out << (int)( user.acl ); + return out; +} + +QDataStream& operator>>( QDataStream &in, ACLRegistry::User &user ) +{ + int ver; + in >> ver; + if ( ver == ACLUSERVERSION ) + { + in >> user.uuid; + int dbidsLength; + in >> dbidsLength; + for ( int i = 0; i < dbidsLength; i++ ) + in >> user.knownDbids; + int accountsLength; + in >> accountsLength; + for ( int i = 0; i < accountsLength; i++ ) + in >> user.knownAccountIds; + int aclIn; + in >> aclIn; + user.acl = (ACLRegistry::ACL)( aclIn ); + } + return in; +} + + ACLRegistry* ACLRegistry::s_instance = 0; ACLRegistry* @@ -49,6 +86,7 @@ ACLRegistry::ACLRegistry( QObject* parent ) s_instance = this; qRegisterMetaType< ACLRegistry::ACL >( "ACLRegistry::ACL" ); qRegisterMetaType< ACLRegistry::User >( "ACLRegistry::User" ); + qRegisterMetaTypeStreamOperators< ACLRegistry::User >( "ACLRegistry::User" ); load(); } diff --git a/src/libtomahawk/AclRegistry.h b/src/libtomahawk/AclRegistry.h index 96e655e6f..c6e61211a 100644 --- a/src/libtomahawk/AclRegistry.h +++ b/src/libtomahawk/AclRegistry.h @@ -30,6 +30,8 @@ #include "HeadlessCheck.h" #include "DllMacro.h" +#define ACLUSERVERSION 1 + class AclJobItem; class DLLEXPORT ACLRegistry : public QObject @@ -51,7 +53,7 @@ public: QString uuid; QStringList knownDbids; QStringList knownAccountIds; - ACL acl; + ACLRegistry::ACL acl; User() : uuid( QUuid::createUuid().toString() )