25 #include "mimehdrline.h"
28 #include <kimap/rfccodecs.h>
29 using namespace KIMAP;
42 virtual void outputHeader (
mimeIO &);
43 virtual void outputPart (
mimeIO &);
46 QByteArray outputParameter (QHash < QString, QString > &);
52 bool parseHeader (
mimeIO &);
54 QString getDispositionParm (
const QByteArray&);
55 void setDispositionParm (
const QByteArray&,
const QString&);
56 QHashIterator < QString, QString > getDispositionIterator ();
58 QString getTypeParm (
const QByteArray&);
59 void setTypeParm (
const QByteArray&,
const QString&);
60 QHashIterator < QString, QString > getTypeIterator ();
63 void serialize(QDataStream& stream);
65 const QByteArray& getType ()
69 void setType (
const QByteArray& _str)
74 const QByteArray& getDescription ()
76 return _contentDescription;
78 void setDescription(
const QByteArray& _str )
80 _contentDescription = _str;
83 const QByteArray& getDisposition ()
85 return _contentDisposition;
87 void setDisposition(
const QByteArray& _str )
89 _contentDisposition = _str;
92 const QByteArray& getEncoding ()
94 return _contentEncoding;
96 void setEncoding (
const QByteArray &_str )
98 _contentEncoding = _str;
101 const QByteArray& getMD5 ()
105 void setMD5 (
const QByteArray & _str)
110 const QByteArray& getID ()
114 void setID (
const QByteArray & _str)
119 unsigned long getLength ()
121 return contentLength;
123 void setLength (
unsigned long _len)
125 contentLength = _len;
128 const QString & getPartSpecifier ()
130 return partSpecifier;
132 void setPartSpecifier (
const QString & _str)
134 partSpecifier = _str;
137 QListIterator < mimeHdrLine *> getOriginalIterator ();
138 QListIterator < mimeHdrLine *> getAdditionalIterator ();
139 void setContent (
const QByteArray &aContent)
141 mimeContent = aContent;
143 QByteArray getContent ()
148 QByteArray getBody ()
150 return preMultipartBody + postMultipartBody;
152 QByteArray getPreBody ()
154 return preMultipartBody;
156 void setPreBody (QByteArray & inBody)
158 preMultipartBody = inBody;
161 QByteArray getPostBody ()
163 return postMultipartBody;
165 void setPostBody (QByteArray & inBody)
167 postMultipartBody = inBody;
168 contentLength = inBody.length ();
173 return nestedMessage;
175 void setNestedMessage (
mimeHeader * inPart,
bool destroy =
true)
177 if (nestedMessage && destroy)
178 delete nestedMessage;
179 nestedMessage = inPart;
185 nestedParts.append (inPart);
187 QListIterator < mimeHeader *> getNestedIterator ()
189 return QListIterator < mimeHeader *> (nestedParts);
193 void clearNestedParts ()
195 nestedParts.clear ();
199 void clearTypeParameters ()
205 void clearDispositionParameters ()
207 dispositionList.clear ();
213 #ifdef KMAIL_COMPATIBLE
216 return contentLength;
220 return nestedParts.count ();
225 (*ret) = nestedParts.at (which);
226 return nestedParts.at (which);
228 void write (
const QString &)
233 return QString (contentType.left (contentType.find (
'/')));
235 void setTypeStr (
const QString & _str)
237 contentType = QByteArray (_str.toLatin1 ()) +
"/" + subtypeStr ().toLatin1 ();
239 QString subtypeStr ()
241 return QString (contentType.
242 right (contentType.length () - contentType.find (
'/') -
245 void setSubtypeStr (
const QString & _str)
247 contentType = QByteArray (typeStr ().toLatin1 ()) +
"/" + _str.toLatin1 ();
251 return QString (getEncoding ());
253 void setCteStr (
const QString & _str)
255 setEncoding (_str.toLatin1 ());
257 QString contentDisposition ()
259 return QString (_contentDisposition);
263 return QString (postMultipartBody);
267 return getTypeParm (
"charset");
269 QString bodyDecoded ();
270 void setBodyEncoded (
const QByteArray &);
271 void setBodyEncodedBinary (
const QByteArray &);
272 QByteArray bodyDecodedBinary ();
275 return QString (getTypeParm (
"name"));
277 void setName (
const QString & _str)
279 setTypeParm (
"name", _str);
283 return QString (getDispositionParm (
"filename"));
285 QString contentDescription ()
287 return QString (RfcCodecs::decodeRFC2047String (_contentDescription));
289 void setContentDescription (
const QString & _str)
291 _contentDescription = RfcCodecs::encodeRFC2047String (_str).toLatin1 ();
295 return QString (contentMD5);
298 QString magicSetType (
bool aAutoDecode =
true);
299 QString headerAsString ();
304 void fromString (
const QByteArray &)
307 void setContentDisposition (
const QString & _str)
309 setDisposition (_str.toLatin1 ());
314 static void addParameter (
const QByteArray&, QHash < QString, QString > &);
315 static QString getParameter (
const QByteArray&, QHash < QString, QString > &);
316 static void setParameter (
const QByteArray&,
const QString&, QHash < QString, QString > &);
318 QList < mimeHdrLine *> originalHdrLines;
321 QList < mimeHdrLine *> additionalHdrLines;
322 QHash < QString, QString > typeList;
323 QHash < QString, QString > dispositionList;
324 QByteArray _contentType;
325 QByteArray _contentDisposition;
326 QByteArray _contentEncoding;
327 QByteArray _contentDescription;
328 QByteArray _contentID;
329 QByteArray _contentMD5;
330 unsigned int contentLength;
331 QByteArray mimeContent;
332 QByteArray preMultipartBody;
333 QByteArray postMultipartBody;
335 QList < mimeHeader *> nestedParts;
336 QString partSpecifier;