40 #ifndef __KMIME_HEADERS_H__
41 #define __KMIME_HEADERS_H__
43 #include "kmime_export.h"
44 #include "kmime_header_parsing.h"
46 #include <QtCore/QString>
47 #include <QtCore/QStringList>
48 #include <QtCore/QRegExp>
49 #include <QtCore/QDateTime>
50 #include <QtCore/QMap>
51 #include <QtCore/QList>
52 #include <QtCore/QByteArray>
54 #include <kdatetime.h>
64 enum contentCategory {
74 enum contentEncoding {
86 enum contentDisposition {
95 static const QByteArray Latin1(
"ISO-8859-1" );
99 #define kmime_mk_trivial_ctor( subclass ) \
101 explicit subclass( Content *parent = 0 ); \
102 subclass( Content *parent, const QByteArray &s ); \
103 subclass( Content *parent, const QString &s, const QByteArray &charset ); \
106 #define kmime_mk_dptr_ctor( subclass ) \
108 explicit subclass( subclass##Private *d, KMime::Content *parent = 0 );
110 #define kmime_mk_trivial_ctor_with_name( subclass ) \
111 kmime_mk_trivial_ctor( subclass ) \
112 const char *type() const; \
113 static const char *staticType();
130 typedef QList<KMime::Headers::Base*>
List;
156 virtual void from7BitString(
const QByteArray &s ) = 0;
162 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const = 0;
167 QByteArray rfc2047Charset()
const;
173 void setRFC2047Charset(
const QByteArray &cs );
178 QByteArray defaultCharset()
const;
183 bool forceDefaultCharset()
const;
190 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b ) = 0;
199 virtual QString asUnicodeString()
const = 0;
204 virtual void clear() = 0;
209 virtual bool isEmpty()
const = 0;
214 virtual const char *type()
const;
219 bool is(
const char *t )
const;
224 bool isMimeHeader()
const;
229 bool isXHeader()
const;
235 QByteArray typeIntro()
const;
239 kmime_mk_dptr_ctor(
Base )
243 Q_DECLARE_PRIVATE(
Base)
255 class UnstructuredPrivate;
281 virtual void from7BitString(
const QByteArray &s );
282 virtual QByteArray as7BitString(
bool withHeaderType=
true )
const;
284 virtual void fromUnicodeString(
const QString &s,
285 const QByteArray &b );
286 virtual QString asUnicodeString()
const;
288 virtual void clear();
290 virtual bool isEmpty()
const;
297 class StructuredPrivate;
337 virtual void from7BitString(
const QByteArray &s );
338 virtual QString asUnicodeString()
const;
339 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
350 virtual bool parse(
const char* &scursor,
const char *
const send,
351 bool isCRLF =
false ) = 0;
362 class AddressPrivate;
383 class MailboxListPrivate;
398 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
399 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
400 virtual QString asUnicodeString()
const;
402 virtual void clear();
403 virtual bool isEmpty()
const;
417 void addAddress(
const QByteArray &address,
418 const QString &displayName = QString() );
423 QList<QByteArray> addresses()
const;
430 QStringList displayNames()
const;
438 QStringList prettyAddresses()
const;
443 Types::Mailbox::List mailboxes()
const;
446 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
453 class SingleMailboxPrivate;
465 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
471 class AddressListPrivate;
491 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
492 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
493 virtual QString asUnicodeString()
const;
495 virtual void clear();
496 virtual bool isEmpty()
const;
510 void addAddress(
const QByteArray &address,
const QString &displayName = QString() );
515 QList<QByteArray> addresses()
const;
521 QStringList displayNames()
const;
528 QStringList prettyAddresses()
const;
533 Types::Mailbox::List mailboxes()
const;
536 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
553 kmime_mk_trivial_ctor(
Ident )
554 kmime_mk_dptr_ctor(
Ident )
557 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
558 virtual void clear();
559 virtual bool isEmpty()
const;
567 QList<QByteArray> identifiers()
const;
573 void appendIdentifier(
const QByteArray &
id );
576 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
579 Q_DECLARE_PRIVATE(
Ident)
583 class SingleIdentPrivate;
601 QByteArray identifier()
const;
607 void setIdentifier(
const QByteArray &
id );
610 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
625 kmime_mk_trivial_ctor(
Token )
626 kmime_mk_dptr_ctor(
Token )
629 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
630 virtual void clear();
631 virtual bool isEmpty()
const;
636 QByteArray token()
const;
641 void setToken(
const QByteArray &t );
644 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
647 Q_DECLARE_PRIVATE(
Token)
651 class PhraseListPrivate;
662 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
663 virtual QString asUnicodeString()
const;
664 virtual void clear();
665 virtual bool isEmpty()
const;
670 QStringList phrases()
const;
673 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
680 class DotAtomPrivate;
688 kmime_mk_trivial_ctor(
DotAtom )
691 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
692 virtual QString asUnicodeString()
const;
693 virtual void clear();
694 virtual bool isEmpty()
const;
697 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
704 class ParametrizedPrivate;
716 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
718 virtual bool isEmpty()
const;
719 virtual void clear();
728 QString parameter(
const QString &key )
const;
734 bool hasParameter(
const QString &key )
const;
741 void setParameter(
const QString &key,
const QString &value );
744 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
758 class ReturnPathPrivate;
771 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
772 virtual void clear();
773 virtual bool isEmpty()
const;
776 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
792 kmime_mk_trivial_ctor_with_name(
From )
802 kmime_mk_trivial_ctor_with_name(
Sender )
812 kmime_mk_trivial_ctor_with_name(
To )
822 kmime_mk_trivial_ctor_with_name(
Cc )
832 kmime_mk_trivial_ctor_with_name(
Bcc )
842 kmime_mk_trivial_ctor_with_name(
ReplyTo )
846 class MailCopiesToPrivate;
859 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
860 virtual QString asUnicodeString()
const;
862 virtual void clear();
863 virtual bool isEmpty()
const;
868 bool alwaysCopy()
const;
873 void setAlwaysCopy();
878 bool neverCopy()
const;
886 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
893 class ContentTransferEncodingPrivate;
906 virtual void clear();
911 contentEncoding encoding()
const;
916 void setEncoding( contentEncoding e );
922 bool decoded()
const;
929 void setDecoded(
bool decoded =
true );
935 bool needToEncode()
const;
938 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
951 kmime_mk_trivial_ctor_with_name(
Keywords )
976 kmime_mk_trivial_ctor_with_name(
MessageID )
983 void generate(
const QByteArray &fqdn );
986 class ContentIDPrivate;
994 kmime_mk_trivial_ctor_with_name(
ContentID )
999 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1009 kmime_mk_trivial_ctor_with_name(
Supersedes )
1019 kmime_mk_trivial_ctor_with_name(
InReplyTo )
1029 kmime_mk_trivial_ctor_with_name(
References )
1033 class ContentTypePrivate;
1046 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1047 virtual void clear();
1048 virtual bool isEmpty()
const;
1053 QByteArray mimeType()
const;
1059 QByteArray mediaType()
const;
1064 QByteArray subType()
const;
1070 void setMimeType(
const QByteArray &mimeType );
1075 bool isMediatype(
const char *mediatype )
const;
1080 bool isSubtype(
const char *subtype )
const;
1085 bool isText()
const;
1090 bool isPlainText()
const;
1095 bool isHTMLText()
const;
1100 bool isImage()
const;
1105 bool isMultipart()
const;
1111 bool isPartial()
const;
1116 QByteArray charset()
const;
1121 void setCharset(
const QByteArray &s );
1126 QByteArray boundary()
const;
1131 void setBoundary(
const QByteArray &s );
1136 QString name()
const;
1141 void setName(
const QString &s,
const QByteArray &cs );
1146 QByteArray id()
const;
1151 void setId(
const QByteArray &s );
1157 int partialNumber()
const;
1163 int partialCount()
const;
1170 void setPartialParams(
int total,
int number );
1173 contentCategory category()
const;
1175 void setCategory( contentCategory c );
1178 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1185 class ContentDispositionPrivate;
1198 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1199 virtual bool isEmpty()
const;
1200 virtual void clear();
1205 contentDisposition disposition()
const;
1211 void setDisposition( contentDisposition disp );
1218 QString filename()
const;
1226 void setFilename(
const QString &filename );
1229 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1242 class GenericPrivate;
1256 Generic(
const char *t,
Content *p,
const QString &s,
const QByteArray &cs );
1259 virtual void clear();
1261 virtual bool isEmpty()
const;
1263 virtual const char *type()
const;
1265 void setType(
const char *type );
1279 kmime_mk_trivial_ctor_with_name(
Subject )
1282 bool isReply()
const;
1310 class ControlPrivate;
1320 kmime_mk_trivial_ctor_with_name(
Control )
1323 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1324 virtual void clear();
1325 virtual bool isEmpty()
const;
1330 QByteArray controlType()
const;
1335 QByteArray parameter()
const;
1341 bool isCancel()
const;
1347 void setCancel(
const QByteArray &msgid );
1350 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1367 kmime_mk_trivial_ctor_with_name(
Date )
1370 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1371 virtual void clear();
1372 virtual bool isEmpty()
const;
1377 KDateTime dateTime()
const;
1382 void setDateTime(
const KDateTime &dt );
1387 int ageInDays()
const;
1390 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1393 Q_DECLARE_PRIVATE(
Date )
1397 class NewsgroupsPrivate;
1407 kmime_mk_trivial_ctor_with_name(
Newsgroups )
1410 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1411 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
1412 virtual QString asUnicodeString()
const;
1413 virtual void clear();
1414 virtual bool isEmpty()
const;
1419 QList<QByteArray> groups()
const;
1424 void setGroups(
const QList<QByteArray> &groups );
1430 bool isCrossposted()
const;
1433 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1447 kmime_mk_trivial_ctor_with_name(
FollowUpTo )
1462 kmime_mk_trivial_ctor_with_name(
Lines )
1465 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1466 virtual QString asUnicodeString()
const;
1467 virtual void clear();
1468 virtual bool isEmpty()
const;
1473 int numberOfLines()
const;
1478 void setNumberOfLines(
int lines );
1481 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1484 Q_DECLARE_PRIVATE(
Lines )
1492 kmime_mk_trivial_ctor_with_name(
UserAgent )
1497 KMIME_EXPORT
Base *createHeader(
const QByteArray& type );
1504 #undef kmime_mk_trivial_ctor
1505 #undef kmime_mk_dptr_ctor
1506 #undef kmime_mk_trivial_ctor_with_name
1508 #endif // __KMIME_HEADERS_H__