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 )
244 Q_DISABLE_COPY(
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;
361 class AddressPrivate;
381 class MailboxListPrivate;
396 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
397 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
398 virtual QString asUnicodeString()
const;
400 virtual void clear();
401 virtual bool isEmpty()
const;
415 void addAddress(
const QByteArray &address,
416 const QString &displayName = QString() );
421 QList<QByteArray> addresses()
const;
428 QStringList displayNames()
const;
436 QStringList prettyAddresses()
const;
441 Types::Mailbox::List mailboxes()
const;
444 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
450 class SingleMailboxPrivate;
462 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
467 class AddressListPrivate;
487 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
488 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
489 virtual QString asUnicodeString()
const;
491 virtual void clear();
492 virtual bool isEmpty()
const;
506 void addAddress(
const QByteArray &address,
const QString &displayName = QString() );
511 QList<QByteArray> addresses()
const;
517 QStringList displayNames()
const;
524 QStringList prettyAddresses()
const;
529 Types::Mailbox::List mailboxes()
const;
532 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
548 kmime_mk_trivial_ctor(
Ident )
549 kmime_mk_dptr_ctor(
Ident )
552 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
553 virtual void clear();
554 virtual bool isEmpty()
const;
562 QList<QByteArray> identifiers()
const;
568 void appendIdentifier(
const QByteArray &
id );
571 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
574 Q_DECLARE_PRIVATE(
Ident )
577 class SingleIdentPrivate;
595 QByteArray identifier()
const;
601 void setIdentifier(
const QByteArray &
id );
604 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
618 kmime_mk_trivial_ctor(
Token )
619 kmime_mk_dptr_ctor(
Token )
622 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
623 virtual void clear();
624 virtual bool isEmpty()
const;
629 QByteArray token()
const;
634 void setToken(
const QByteArray &t );
637 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
640 Q_DECLARE_PRIVATE(
Token )
643 class PhraseListPrivate;
654 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
655 virtual QString asUnicodeString()
const;
656 virtual void clear();
657 virtual bool isEmpty()
const;
662 QStringList phrases()
const;
665 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
671 class DotAtomPrivate;
679 kmime_mk_trivial_ctor(
DotAtom )
682 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
683 virtual QString asUnicodeString()
const;
684 virtual void clear();
685 virtual bool isEmpty()
const;
688 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
694 class ParametrizedPrivate;
706 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
708 virtual bool isEmpty()
const;
709 virtual void clear();
718 QString parameter(
const QString &key )
const;
724 bool hasParameter(
const QString &key )
const;
731 void setParameter(
const QString &key,
const QString &value );
734 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
748 class ReturnPathPrivate;
761 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
762 virtual void clear();
763 virtual bool isEmpty()
const;
766 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
782 kmime_mk_trivial_ctor_with_name(
From )
792 kmime_mk_trivial_ctor_with_name(
Sender )
802 kmime_mk_trivial_ctor_with_name(
To )
812 kmime_mk_trivial_ctor_with_name(
Cc )
822 kmime_mk_trivial_ctor_with_name(
Bcc )
832 kmime_mk_trivial_ctor_with_name(
ReplyTo )
836 class MailCopiesToPrivate;
849 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
850 virtual QString asUnicodeString()
const;
852 virtual void clear();
853 virtual bool isEmpty()
const;
858 bool alwaysCopy()
const;
863 void setAlwaysCopy();
868 bool neverCopy()
const;
876 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
882 class ContentTransferEncodingPrivate;
895 virtual void clear();
900 contentEncoding encoding()
const;
905 void setEncoding( contentEncoding e );
911 bool decoded()
const;
918 void setDecoded(
bool decoded =
true );
924 bool needToEncode()
const;
927 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
940 kmime_mk_trivial_ctor_with_name(
Keywords )
965 kmime_mk_trivial_ctor_with_name(
MessageID )
972 void generate(
const QByteArray &fqdn );
975 class ContentIDPrivate;
983 kmime_mk_trivial_ctor_with_name(
ContentID )
988 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1008 kmime_mk_trivial_ctor_with_name(
InReplyTo )
1018 kmime_mk_trivial_ctor_with_name(
References )
1022 class ContentTypePrivate;
1035 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1036 virtual void clear();
1037 virtual bool isEmpty()
const;
1042 QByteArray mimeType()
const;
1048 QByteArray mediaType()
const;
1053 QByteArray subType()
const;
1059 void setMimeType(
const QByteArray &mimeType );
1064 bool isMediatype(
const char *mediatype )
const;
1069 bool isSubtype(
const char *subtype )
const;
1074 bool isText()
const;
1079 bool isPlainText()
const;
1084 bool isHTMLText()
const;
1089 bool isImage()
const;
1094 bool isMultipart()
const;
1100 bool isPartial()
const;
1105 QByteArray charset()
const;
1110 void setCharset(
const QByteArray &s );
1115 QByteArray boundary()
const;
1120 void setBoundary(
const QByteArray &s );
1125 QString name()
const;
1130 void setName(
const QString &s,
const QByteArray &cs );
1135 QByteArray id()
const;
1140 void setId(
const QByteArray &s );
1146 int partialNumber()
const;
1152 int partialCount()
const;
1159 void setPartialParams(
int total,
int number );
1162 contentCategory category()
const;
1164 void setCategory( contentCategory c );
1167 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1173 class ContentDispositionPrivate;
1186 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1187 virtual bool isEmpty()
const;
1188 virtual void clear();
1193 contentDisposition disposition()
const;
1199 void setDisposition( contentDisposition disp );
1206 QString filename()
const;
1214 void setFilename(
const QString &filename );
1217 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1230 class GenericPrivate;
1244 Generic(
const char *t,
Content *p,
const QString &s,
const QByteArray &cs );
1247 virtual void clear();
1249 virtual bool isEmpty()
const;
1251 virtual const char *type()
const;
1253 void setType(
const char *type );
1267 kmime_mk_trivial_ctor_with_name(
Subject )
1270 bool isReply()
const;
1298 class ControlPrivate;
1308 kmime_mk_trivial_ctor_with_name(
Control )
1311 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1312 virtual void clear();
1313 virtual bool isEmpty()
const;
1318 QByteArray controlType()
const;
1323 QByteArray parameter()
const;
1329 bool isCancel()
const;
1335 void setCancel(
const QByteArray &msgid );
1338 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1354 kmime_mk_trivial_ctor_with_name(
Date )
1357 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1358 virtual void clear();
1359 virtual bool isEmpty()
const;
1364 KDateTime dateTime()
const;
1369 void setDateTime(
const KDateTime &dt );
1374 int ageInDays()
const;
1377 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1380 Q_DECLARE_PRIVATE(
Date )
1384 class NewsgroupsPrivate;
1394 kmime_mk_trivial_ctor_with_name(
Newsgroups )
1397 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1398 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
1399 virtual QString asUnicodeString()
const;
1400 virtual void clear();
1401 virtual bool isEmpty()
const;
1406 QList<QByteArray> groups()
const;
1411 void setGroups(
const QList<QByteArray> &groups );
1417 bool isCrossposted()
const;
1420 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1434 kmime_mk_trivial_ctor_with_name(
FollowUpTo )
1449 kmime_mk_trivial_ctor_with_name(
Lines )
1452 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1453 virtual QString asUnicodeString()
const;
1454 virtual void clear();
1455 virtual bool isEmpty()
const;
1460 int numberOfLines()
const;
1465 void setNumberOfLines(
int lines );
1468 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1471 Q_DECLARE_PRIVATE(
Lines )
1479 kmime_mk_trivial_ctor_with_name(
UserAgent )
1484 KMIME_EXPORT
Base *createHeader(
const QByteArray& type );
1491 #undef kmime_mk_trivial_ctor
1492 #undef kmime_mk_dptr_ctor
1493 #undef kmime_mk_trivial_ctor_with_name
1495 #endif // __KMIME_HEADERS_H__