KIMAP Library
getacljob.cpp
00001 /* 00002 Copyright (c) 2009 Andras Mantia <amantia@kde.org> 00003 00004 This library is free software; you can redistribute it and/or modify it 00005 under the terms of the GNU Library General Public License as published by 00006 the Free Software Foundation; either version 2 of the License, or (at your 00007 option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, but WITHOUT 00010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00011 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00012 License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to the 00016 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 00017 02110-1301, USA. 00018 */ 00019 00020 #include "getacljob.h" 00021 00022 #include <KDE/KLocale> 00023 #include <KDE/KDebug> 00024 00025 #include "acljobbase_p.h" 00026 #include "message_p.h" 00027 #include "session_p.h" 00028 #include "rfccodecs.h" 00029 00030 namespace KIMAP 00031 { 00032 class GetAclJobPrivate : public AclJobBasePrivate 00033 { 00034 public: 00035 GetAclJobPrivate( Session *session, const QString& name ) : AclJobBasePrivate(session, name) {} 00036 ~GetAclJobPrivate() { } 00037 00038 QMap<QByteArray, Acl::Rights> userRights; 00039 }; 00040 } 00041 00042 using namespace KIMAP; 00043 00044 GetAclJob::GetAclJob( Session *session ) 00045 : AclJobBase( *new GetAclJobPrivate(session, i18n("GetAcl") )) 00046 { 00047 } 00048 00049 GetAclJob::~GetAclJob() 00050 { 00051 } 00052 00053 void GetAclJob::doStart() 00054 { 00055 Q_D(GetAclJob); 00056 00057 d->tags << d->sessionInternal()->sendCommand( "GETACL", '\"' + KIMAP::encodeImapFolderName( d->mailBox.toUtf8() ) + '\"'); 00058 } 00059 00060 void GetAclJob::handleResponse( const Message &response ) 00061 { 00062 Q_D(GetAclJob); 00063 // kDebug() << response.toString(); 00064 00065 if (handleErrorReplies(response) == NotHandled) { 00066 if ( response.content.size() >= 4 00067 && response.content[1].toString() == "ACL" ) { 00068 int i = 3; 00069 while ( i < response.content.size() - 1 ) { 00070 QByteArray id = response.content[i].toString(); 00071 QByteArray rights = response.content[i + 1].toString(); 00072 d->userRights[id] = Acl::rightsFromString(rights); 00073 i += 2; 00074 } 00075 } 00076 } 00077 } 00078 00079 QList<QByteArray> GetAclJob::identifiers() const 00080 { 00081 Q_D(const GetAclJob); 00082 return d->userRights.keys(); 00083 } 00084 00085 bool GetAclJob::hasRightEnabled(const QByteArray &identifier, Acl::Right right) const 00086 { 00087 Q_D(const GetAclJob); 00088 if (d->userRights.contains(identifier)) 00089 { 00090 Acl::Rights rights = d->userRights[identifier]; 00091 return rights & right; 00092 } 00093 00094 return false; 00095 } 00096 00097 Acl::Rights GetAclJob::rights(const QByteArray &identifier) const 00098 { 00099 Q_D(const GetAclJob); 00100 Acl::Rights result; 00101 if (d->userRights.contains(identifier)) 00102 { 00103 result = d->userRights[identifier]; 00104 } 00105 return result; 00106 } 00107 00108 QMap<QByteArray, Acl::Rights> GetAclJob::allRights() const 00109 { 00110 Q_D(const GetAclJob); 00111 return d->userRights; 00112 } 00113 00114 #include "getacljob.moc"
This file is part of the KDE documentation.
Documentation copyright © 1996-2012 The KDE developers.
Generated on Thu May 10 2012 22:17:14 by doxygen 1.8.0 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2012 The KDE developers.
Generated on Thu May 10 2012 22:17:14 by doxygen 1.8.0 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.