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>
51#include <QtCore/QList>
52#include <QtCore/QByteArray>
95static 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;
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;
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 )
255class 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;
297class 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;
381class 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 );
450class SingleMailboxPrivate;
462 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
467class 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 )
577class 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 )
643class 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 );
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 );
694class 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;
725 bool hasParameter(
const QString &key )
const;
732 void setParameter(
const QString &key,
const QString &value );
735 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
749class ReturnPathPrivate;
762 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
763 virtual void clear();
764 virtual bool isEmpty()
const;
767 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
783 kmime_mk_trivial_ctor_with_name(
From )
793 kmime_mk_trivial_ctor_with_name(
Sender )
803 kmime_mk_trivial_ctor_with_name(
To )
813 kmime_mk_trivial_ctor_with_name(
Cc )
823 kmime_mk_trivial_ctor_with_name(
Bcc )
833 kmime_mk_trivial_ctor_with_name(
ReplyTo )
837class MailCopiesToPrivate;
850 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
851 virtual QString asUnicodeString()
const;
853 virtual void clear();
854 virtual bool isEmpty()
const;
859 bool alwaysCopy()
const;
864 void setAlwaysCopy();
869 bool neverCopy()
const;
877 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
883class ContentTransferEncodingPrivate;
896 virtual void clear();
912 bool decoded()
const;
920 void setDecoded(
bool decoded =
true );
926 bool needToEncode()
const;
929 virtual bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
942 kmime_mk_trivial_ctor_with_name(
Keywords )
967 kmime_mk_trivial_ctor_with_name(
MessageID )
974 void generate(
const QByteArray &fqdn );
977class ContentIDPrivate;
985 kmime_mk_trivial_ctor_with_name(
ContentID )
990 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1000 kmime_mk_trivial_ctor_with_name(
Supersedes )
1010 kmime_mk_trivial_ctor_with_name(
InReplyTo )
1020 kmime_mk_trivial_ctor_with_name(
References )
1024class ContentTypePrivate;
1037 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1038 virtual void clear();
1039 virtual bool isEmpty()
const;
1044 QByteArray mimeType()
const;
1050 QByteArray mediaType()
const;
1055 QByteArray subType()
const;
1061 void setMimeType(
const QByteArray &mimeType );
1066 bool isMediatype(
const char *mediatype )
const;
1071 bool isSubtype(
const char *subtype )
const;
1076 bool isText()
const;
1081 bool isPlainText()
const;
1086 bool isHTMLText()
const;
1091 bool isImage()
const;
1096 bool isMultipart()
const;
1102 bool isPartial()
const;
1107 QByteArray charset()
const;
1112 void setCharset(
const QByteArray &s );
1117 QByteArray boundary()
const;
1122 void setBoundary(
const QByteArray &s );
1127 QString name()
const;
1132 void setName(
const QString &s,
const QByteArray &cs );
1137 QByteArray id()
const;
1142 void setId(
const QByteArray &s );
1148 int partialNumber()
const;
1154 int partialCount()
const;
1161 void setPartialParams(
int total,
int number );
1164 contentCategory category()
const;
1166 void setCategory( contentCategory c );
1169 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1175class ContentDispositionPrivate;
1188 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1189 virtual bool isEmpty()
const;
1190 virtual void clear();
1208 QString filename()
const;
1216 void setFilename(
const QString &filename );
1219 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF=
false );
1232class GenericPrivate;
1246 Generic(
const char *t,
Content *p,
const QString &s,
const QByteArray &cs );
1249 virtual void clear();
1251 virtual bool isEmpty()
const;
1253 virtual const char *type()
const;
1255 void setType(
const char *type );
1269 kmime_mk_trivial_ctor_with_name(
Subject )
1272 bool isReply()
const;
1300class ControlPrivate;
1310 kmime_mk_trivial_ctor_with_name(
Control )
1313 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1314 virtual void clear();
1315 virtual bool isEmpty()
const;
1320 QByteArray controlType()
const;
1325 QByteArray parameter()
const;
1331 bool isCancel()
const;
1337 void setCancel(
const QByteArray &msgid );
1340 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1356 kmime_mk_trivial_ctor_with_name(
Date )
1359 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1360 virtual void clear();
1361 virtual bool isEmpty()
const;
1366 KDateTime dateTime()
const;
1371 void setDateTime(
const KDateTime &dt );
1376 int ageInDays()
const;
1379 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1382 Q_DECLARE_PRIVATE(
Date )
1386class NewsgroupsPrivate;
1396 kmime_mk_trivial_ctor_with_name(
Newsgroups )
1399 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1400 virtual void fromUnicodeString(
const QString &s,
const QByteArray &b );
1401 virtual QString asUnicodeString()
const;
1402 virtual void clear();
1403 virtual bool isEmpty()
const;
1408 QList<QByteArray> groups()
const;
1413 void setGroups(
const QList<QByteArray> &groups );
1419 bool isCrossposted()
const;
1422 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1436 kmime_mk_trivial_ctor_with_name(
FollowUpTo )
1451 kmime_mk_trivial_ctor_with_name(
Lines )
1454 virtual QByteArray as7BitString(
bool withHeaderType =
true )
const;
1455 virtual QString asUnicodeString()
const;
1456 virtual void clear();
1457 virtual bool isEmpty()
const;
1462 int numberOfLines()
const;
1467 void setNumberOfLines(
int lines );
1470 bool parse(
const char* &scursor,
const char *
const send,
bool isCRLF =
false );
1473 Q_DECLARE_PRIVATE(
Lines )
1481 kmime_mk_trivial_ctor_with_name(
UserAgent )
1493#undef kmime_mk_trivial_ctor
1494#undef kmime_mk_dptr_ctor
1495#undef kmime_mk_trivial_ctor_with_name
A class that encapsulates MIME encoded Content.
Represents an (email address, display name) pair according RFC 2822, section 3.4.