diff --git a/kimap/getacljob.cpp b/kimap/getacljob.cpp index c82b16820..b851869b2 100644 --- a/kimap/getacljob.cpp +++ b/kimap/getacljob.cpp @@ -1,108 +1,114 @@ /* Copyright (c) 2009 Andras Mantia This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "getacljob.h" #include #include #include "acljobbase_p.h" #include "message_p.h" #include "session_p.h" #include "rfccodecs.h" namespace KIMAP { class GetAclJobPrivate : public AclJobBasePrivate { public: GetAclJobPrivate( Session *session, const QString& name ) : AclJobBasePrivate(session, name) {} ~GetAclJobPrivate() { } QMap userRights; }; } using namespace KIMAP; GetAclJob::GetAclJob( Session *session ) : AclJobBase( *new GetAclJobPrivate(session, i18n("GetAcl") )) { } GetAclJob::~GetAclJob() { } void GetAclJob::doStart() { Q_D(GetAclJob); d->tag = d->sessionInternal()->sendCommand( "GETACL", '\"' + KIMAP::encodeImapFolderName( d->mailBox.toUtf8() ) + '\"'); } void GetAclJob::handleResponse( const Message &response ) { Q_D(GetAclJob); // kDebug() << response.toString(); if (handleErrorReplies(response) == NotHandled) { if ( response.content.size() >= 4 && response.content[1].toString() == "ACL" ) { int i = 3; while ( i < response.content.size() - 1 ) { QByteArray id = response.content[i].toString(); QByteArray rights = response.content[i + 1].toString(); d->userRights[id] = Acl::rightsFromString(rights); i += 2; } } } } QList GetAclJob::identifiers() const { Q_D(const GetAclJob); return d->userRights.keys(); } bool GetAclJob::hasRightEnabled(const QByteArray &identifier, Acl::Right right) const { Q_D(const GetAclJob); if (d->userRights.contains(identifier)) { Acl::Rights rights = d->userRights[identifier]; return rights & right; } return false; } Acl::Rights GetAclJob::rights(const QByteArray &identifier) const { Q_D(const GetAclJob); Acl::Rights result; if (d->userRights.contains(identifier)) { result = d->userRights[identifier]; } return result; } +QMap GetAclJob::allRights() const +{ + Q_D(const GetAclJob); + return d->userRights; +} + #include "getacljob.moc" diff --git a/kimap/getacljob.h b/kimap/getacljob.h index 6669f3c46..b45dc41d5 100644 --- a/kimap/getacljob.h +++ b/kimap/getacljob.h @@ -1,57 +1,59 @@ /* Copyright (c) 2009 Andras Mantia This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KIMAP_GETACLJOB_H #define KIMAP_GETACLJOB_H #include "kimap_export.h" #include "acljobbase.h" namespace KIMAP { class Session; class Message; class GetAclJobPrivate; class KIMAP_EXPORT GetAclJob : public AclJobBase { Q_OBJECT Q_DECLARE_PRIVATE(GetAclJob) friend class SessionPrivate; public: explicit GetAclJob( Session *session ); virtual ~GetAclJob(); QList identifiers() const; bool hasRightEnabled(const QByteArray &identifier, Acl::Right right) const; Acl::Rights rights(const QByteArray &identifier) const; + QMap allRights() const; + protected: virtual void doStart(); virtual void handleResponse(const Message &response); }; } #endif