File indexing completed on 2024-05-12 05:17:21
0001 /* 0002 Copyright (c) 2009 Andras Mantia <amantia@kde.org> 0003 0004 This library is free software; you can redistribute it and/or modify it 0005 under the terms of the GNU Library General Public License as published by 0006 the Free Software Foundation; either version 2 of the License, or (at your 0007 option) any later version. 0008 0009 This library is distributed in the hope that it will be useful, but WITHOUT 0010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0011 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 0012 License for more details. 0013 0014 You should have received a copy of the GNU Library General Public License 0015 along with this library; see the file COPYING.LIB. If not, write to the 0016 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 0017 02110-1301, USA. 0018 */ 0019 0020 #ifndef KIMAP2_ACLJOBBASE_H 0021 #define KIMAP2_ACLJOBBASE_H 0022 0023 #include "kimap2_export.h" 0024 0025 #include "acl.h" 0026 #include "job.h" 0027 0028 namespace KIMAP2 0029 { 0030 0031 class Session; 0032 struct Message; 0033 class AclJobBasePrivate; 0034 0035 /** 0036 * Base class for jobs that operate on mailbox ACLs 0037 * 0038 * Provides support for the IMAP ACL extension, as defined by 0039 * <a href="http://www.apps.ietf.org/rfc/rfc4314.html" title="IMAP ACL extension">RFC 4314</a>. 0040 * 0041 * This class cannot be used directly, you must subclass it and reimplement 0042 * at least the doStart() method. 0043 */ 0044 class KIMAP2_EXPORT AclJobBase : public Job 0045 { 0046 Q_OBJECT 0047 Q_DECLARE_PRIVATE(AclJobBase) 0048 0049 friend class SessionPrivate; 0050 0051 public: 0052 AclJobBase(Session *session); 0053 virtual ~AclJobBase(); 0054 0055 /** 0056 * Used when subclassing to specify how the ACL will be modified. 0057 */ 0058 enum AclModifier { 0059 Add = 0, 0060 Remove, 0061 Change 0062 }; 0063 0064 /** 0065 * Set the mailbox to act on 0066 * 0067 * @param mailBox the name of an existing mailbox 0068 */ 0069 void setMailBox(const QString &mailBox); 0070 /** 0071 * The mailbox that will be acted upon. 0072 */ 0073 QString mailBox() const; 0074 0075 protected: 0076 explicit AclJobBase(JobPrivate &dd); 0077 0078 }; 0079 0080 } 0081 0082 #endif