KIMAP2

metadatajobbase.h
1 /*
2  Copyright (c) 2009 Andras Mantia <[email protected]>
3 
4  This library is free software; you can redistribute it and/or modify it
5  under the terms of the GNU Library General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or (at your
7  option) any later version.
8 
9  This library is distributed in the hope that it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12  License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to the
16  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  02110-1301, USA.
18 */
19 
20 #ifndef KIMAP2_METADATAJOBBASE_H
21 #define KIMAP2_METADATAJOBBASE_H
22 
23 #include "kimap2_export.h"
24 
25 #include "job.h"
26 
27 namespace KIMAP2
28 {
29 
30 class Session;
31 struct Message;
32 class MetaDataJobBasePrivate;
33 
34 /**
35  * Base class for jobs that operate on mailbox metadata
36  *
37  * Provides support for the IMAP METADATA extension; both the
38  * final RFC version
39  * (<a href="http://tools.ietf.org/html/rfc5464">RFC 5464</a>)
40  * and the older, incompatible draft version (known as ANNOTATEMORE)
41  * (<a
42  * href="http://tools.ietf.org/html/draft-daboo-imap-annotatemore-07"
43  * >draft-daboo-imap-annotatemore-07</a>).
44  *
45  * This class cannot be used directly, you must subclass it and reimplement
46  * at least the doStart() method.
47 */
48 class KIMAP2_EXPORT MetaDataJobBase : public Job
49 {
50  Q_OBJECT
51  Q_DECLARE_PRIVATE(MetaDataJobBase)
52 
53  friend class SessionPrivate;
54 
55 public:
56  explicit MetaDataJobBase(Session *session);
57  virtual ~MetaDataJobBase();
58 
59  /**
60  * Represents the capability level of the server.
61  */
63  /**
64  * Used to indicate that the server supports the RFC 5464 version
65  * of the extension.
66  *
67  * This corresponds to the METADATA server capability.
68  */
69  Metadata = 0,
70  /**
71  * Used to indicate that the server supports the
72  * draft-daboo-imap-annotatemore-07 version of the extension.
73  *
74  * This corresponds to the ANNOTATEMORE server capability.
75  */
76  Annotatemore
77  };
78 
79  /**
80  * Set the mailbox to act on
81  *
82  * This may be an empty string, in which case metadata for the
83  * server (rather than a specific mailbox) will be retrieved.
84  *
85  * @param mailBox the name of an existing mailbox, or an empty string
86  */
87  void setMailBox(const QString &mailBox);
88  /**
89  * The mailbox that will be acted upon.
90  *
91  * If this is an empty string, server metadata will be retrieved.
92  *
93  * @return a mailbox name, or an empty string
94  */
95  QString mailBox() const;
96 
97  /**
98  * Set what version of the metadata extension to be compatible with.
99  *
100  * This will determine the commands that will be sent to the server.
101  *
102  * The draft for the metadata extension changed in an incompatible
103  * way between versions 7 and 8, and some servers support version 7.
104  * It should be possible to check which version the server supports
105  * using CapabilityJob: servers implementing
106  * draft-daboo-imap-annotatemore-07 should advertise the
107  * ANNOTATEMORE capability, whereas servers implementing the final
108  * RFC 5464 should advertise the METADATA capability.
109  *
110  * The default mode is Metadata.
111  *
112  * @param capability the version of the extension implemented by the server
113  */
114  void setServerCapability(ServerCapability capability);
115  /**
116  * The version of the metadata extension that will be used.
117  */
118  ServerCapability serverCapability() const;
119 
120 protected:
121  MetaDataJobBase(JobPrivate &dd);
122 
123 };
124 
125 }
126 
127 #endif
ServerCapability
Represents the capability level of the server.
Definition: acl.cpp:25
Base class for jobs that operate on mailbox metadata.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Nov 29 2021 23:00:39 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.