00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
#ifndef __KMIME_HEADERS_OBS_H__
00017
#define __KMIME_HEADERS_OBS_H__
00018
00019
#if defined(KMIME_NEW_STYPE_CLASSTREE)
00020
#error You cannot use this file with the new header classes!
00021
#endif
00022
00024 class MessageID :
public Base {
00025
00026
public:
00027
MessageID() : Base() {}
00028
MessageID(Content *p) : Base(p) {}
00029
MessageID(Content *p,
const QCString &s) : Base(p) { from7BitString(s); }
00030
MessageID(Content *p,
const QString &s) : Base(p) { fromUnicodeString(s, Latin1); }
00031 ~
MessageID() {}
00032
00033
virtual void from7BitString(
const QCString &s);
00034
virtual QCString as7BitString(
bool incType=
true);
00035
virtual void fromUnicodeString(
const QString &s,
const QCString&);
00036
virtual QString asUnicodeString();
00037
virtual void clear() { m_id.resize(0); }
00038
virtual bool isEmpty() {
return (m_id.isEmpty()); }
00039
virtual const char* type() {
return "Message-Id"; }
00040
00041
void generate(
const QCString &fqdn);
00042
00043
protected:
00044
QCString m_id;
00045
00046 };
00047
00049 class Supersedes :
public MessageID {
00050
00051
public:
00052
Supersedes() :
MessageID() {}
00053
Supersedes(Content *p) :
MessageID(p) {}
00054
Supersedes(Content *p,
const QCString &s) :
MessageID(p,s) {}
00055
Supersedes(Content *p,
const QString &s) :
MessageID(p,s) {}
00056 ~
Supersedes() {}
00057
00058
virtual const char* type() {
return "Supersedes"; }
00059
00060 };
00061
00064 class AddressField :
public Base {
00065
00066
public:
00067
AddressField() : Base() {}
00068
AddressField(Content *p) : Base(p) {}
00069
AddressField(Content *p,
const QCString &s) : Base(p) { from7BitString(s); }
00070
AddressField(Content *p,
const QString &s,
const QCString &cs) : Base(p) { fromUnicodeString(s, cs); }
00071
AddressField(
const AddressField &a): Base(a.p_arent) { n_ame=a.
n_ame; e_mail=a.
e_mail.copy(); e_ncCS=a.e_ncCS; }
00072 ~
AddressField() {}
00073
00074
AddressField& operator=(
const AddressField &a) { n_ame=a.
n_ame; e_mail=a.
e_mail.copy(); e_ncCS=a.e_ncCS;
return (*this); }
00075
00076
virtual void from7BitString(
const QCString &s);
00077
virtual QCString as7BitString(
bool incType=
true);
00078
virtual void fromUnicodeString(
const QString &s,
const QCString &cs);
00079
virtual QString asUnicodeString();
00080
virtual void clear() { n_ame.truncate(0); e_mail.resize(0); }
00081
virtual bool isEmpty() {
return (e_mail.isEmpty() && n_ame.isEmpty()); }
00082
00083
bool hasName() {
return ( !n_ame.isEmpty() ); }
00084
bool hasEmail() {
return ( !e_mail.isEmpty() ); }
00085
QString name() {
return n_ame; }
00086
QCString nameAs7Bit();
00087
QCString email() {
return e_mail; }
00088
void setName(
const QString &s) { n_ame=s; }
00089
void setNameFrom7Bit(
const QCString &s);
00090
void setEmail(
const QCString &s) { e_mail=s; }
00091
00092
protected:
00093
QString n_ame;
00094
QCString e_mail;
00095 };
00096
typedef QPtrList<AddressField> ObsAddressList;
00097
00099 class From :
public AddressField {
00100
00101
public:
00102
From() :
AddressField() {}
00103
From(Content *p) :
AddressField(p) {}
00104
From(Content *p,
const QCString &s) :
AddressField(p,s) {}
00105
From(Content *p,
const QString &s,
const QCString &cs) :
AddressField(p,s,cs) {}
00106 ~
From() {}
00107
00108
virtual const char* type() {
return "From"; }
00109 };
00110
00111
00113 class ReplyTo :
public AddressField {
00114
00115
public:
00116
ReplyTo() :
AddressField() {}
00117
ReplyTo(Content *p) :
AddressField(p) {}
00118
ReplyTo(Content *p,
const QCString &s) :
AddressField(p,s) {}
00119
ReplyTo(Content *p,
const QString &s,
const QCString &cs) :
AddressField(p,s,cs) {}
00120 ~
ReplyTo() {}
00121
00122
virtual const char* type() {
return "Reply-To"; }
00123
00124 };
00125
00126
00129 class MailCopiesTo :
public AddressField {
00130
00131
public:
00132
MailCopiesTo() :
AddressField() {}
00133
MailCopiesTo(Content *p) :
AddressField(p) {}
00134
MailCopiesTo(Content *p,
const QCString &s) :
AddressField(p,s) {}
00135
MailCopiesTo(Content *p,
const QString &s,
const QCString &cs) :
AddressField(p,s,cs) {}
00136 ~
MailCopiesTo() {}
00137
00138
bool isValid();
00139
bool alwaysCopy();
00140
bool neverCopy();
00141
00142
virtual const char* type() {
return "Mail-Copies-To"; }
00143
00144 };
00145
00147 class To :
public Base {
00148
00149
public:
00150
To() : Base(),a_ddrList(0) {}
00151
To(Content *p) : Base(p),a_ddrList(0) {}
00152
To(Content *p,
const QCString &s) : Base(p),a_ddrList(0) { from7BitString(s); }
00153
To(Content *p,
const QString &s,
const QCString &cs) : Base(p),a_ddrList(0) { fromUnicodeString(s,cs); }
00154 ~
To() {
delete a_ddrList; }
00155
00156
virtual void from7BitString(
const QCString &s);
00157
virtual QCString as7BitString(
bool incType=
true);
00158
virtual void fromUnicodeString(
const QString &s,
const QCString &cs);
00159
virtual QString asUnicodeString();
00160
virtual void clear() {
delete a_ddrList; a_ddrList=0; }
00161
virtual bool isEmpty() {
return (!a_ddrList || a_ddrList->isEmpty()
00162 || a_ddrList->first()->isEmpty()); }
00163
virtual const char* type() {
return "To"; }
00164
00165
void addAddress(
const AddressField &a);
00166
void emails(
QStrList *l);
00167
00168
protected:
00169 ObsAddressList *a_ddrList;
00170
00171 };
00172
00173
00175 class CC :
public To {
00176
00177
public:
00178
CC() :
To() {}
00179
CC(Content *p) :
To(p) {}
00180
CC(Content *p,
const QCString &s) :
To(p,s) {}
00181
CC(Content *p,
const QString &s,
const QCString &cs) :
To(p,s,cs) {}
00182 ~
CC() {}
00183
00184
virtual const char* type() {
return "CC"; }
00185
00186 };
00187
00188
00190 class BCC :
public To {
00191
00192
public:
00193
BCC() :
To() {}
00194
BCC(Content *p) :
To(p) {}
00195
BCC(Content *p,
const QCString &s) :
To(p,s) {}
00196
BCC(Content *p,
const QString &s,
const QCString &cs) :
To(p,s,cs) {}
00197 ~
BCC() {}
00198
00199
virtual const char* type() {
return "BCC"; }
00200
00201 };
00202
00204 class References :
public Base {
00205
00206
public:
00207
References() : Base(),p_os(-1) {}
00208
References(Content *p) : Base(p),p_os(-1) {}
00209
References(Content *p,
const QCString &s) : Base(p),p_os(-1) { from7BitString(s); }
00210
References(Content *p,
const QString &s) : Base(p),p_os(-1) { fromUnicodeString(s, Latin1); }
00211 ~
References() {}
00212
00213
virtual void from7BitString(
const QCString &s);
00214
virtual QCString as7BitString(
bool incType=
true);
00215
virtual void fromUnicodeString(
const QString &s,
const QCString&);
00216
virtual QString asUnicodeString();
00217
virtual void clear() { r_ef.resize(0); p_os=0; }
00218
virtual bool isEmpty() {
return (r_ef.isEmpty()); }
00219
virtual const char* type() {
return "References"; }
00220
00221
int count();
00222
QCString first();
00223
QCString next();
00224
QCString at(
unsigned int i);
00225
void append(
const QCString &s);
00226
00227
protected:
00228
QCString r_ef;
00229
int p_os;
00230
00231 };
00232
00234 class ContentType :
public Base {
00235
00236
public:
00237
ContentType() : Base(),m_imeType(
"invalid/invalid"),c_ategory(CCsingle) {}
00238
ContentType(Content *p) : Base(p),m_imeType(
"invalid/invalid"),c_ategory(CCsingle) {}
00239
ContentType(Content *p,
const QCString &s) : Base(p) { from7BitString(s); }
00240
ContentType(Content *p,
const QString &s) : Base(p) { fromUnicodeString(s, Latin1); }
00241 ~
ContentType() {}
00242
00243
virtual void from7BitString(
const QCString &s);
00244
virtual QCString as7BitString(
bool incType=
true);
00245
virtual void fromUnicodeString(
const QString &s,
const QCString&);
00246
virtual QString asUnicodeString();
00247
virtual void clear() { m_imeType.resize(0); p_arams.resize(0); }
00248
virtual bool isEmpty() {
return (m_imeType.isEmpty()); }
00249
virtual const char* type() {
return "Content-Type"; }
00250
00251
00252
00253
QCString mimeType() {
return m_imeType; }
00254
QCString mediaType();
00255
QCString subType();
00256
void setMimeType(
const QCString &s);
00257
bool isMediatype(
const char *s);
00258
bool isSubtype(
const char *s);
00259
bool isText();
00260
bool isPlainText();
00261
bool isHTMLText();
00262
bool isImage();
00263
bool isMultipart();
00264
bool isPartial();
00265
00266
00267
QCString charset();
00268
void setCharset(
const QCString &s);
00269
QCString boundary();
00270
void setBoundary(
const QCString &s);
00271
QString name();
00272
void setName(
const QString &s,
const QCString &cs);
00273
QCString id();
00274
void setId(
const QCString &s);
00275
int partialNumber();
00276
int partialCount();
00277
void setPartialParams(
int total,
int number);
00278
00279
00280 contentCategory category() {
return c_ategory; }
00281
void setCategory(contentCategory c) { c_ategory=c; }
00282
00283
protected:
00284
QCString getParameter(
const char *name);
00285
void setParameter(
const QCString &name,
const QCString &value,
bool doubleQuotes=
false);
00286
QCString m_imeType, p_arams;
00287 contentCategory c_ategory;
00288
00289 };
00290
00291
00293 class CTEncoding :
public Base {
00294
00295
public:
00296
CTEncoding() : Base(),c_te(CE7Bit),d_ecoded(
true) {}
00297
CTEncoding(Content *p) : Base(p),c_te(CE7Bit),d_ecoded(
true) {}
00298
CTEncoding(Content *p,
const QCString &s) : Base(p) { from7BitString(s); }
00299
CTEncoding(Content *p,
const QString &s) : Base(p) { fromUnicodeString(s, Latin1); }
00300 ~
CTEncoding() {}
00301
00302
virtual void from7BitString(
const QCString &s);
00303
virtual QCString as7BitString(
bool incType=
true);
00304
virtual void fromUnicodeString(
const QString &s,
const QCString&);
00305
virtual QString asUnicodeString();
00306
virtual void clear() { d_ecoded=
true; c_te=CE7Bit; }
00307
virtual const char* type() {
return "Content-Transfer-Encoding"; }
00308
00309 contentEncoding cte() {
return c_te; }
00310
void setCte(contentEncoding e) { c_te=e; }
00311
bool decoded() {
return d_ecoded; }
00312
void setDecoded(
bool d=
true) { d_ecoded=d; }
00313
bool needToEncode() {
return (d_ecoded && (c_te==CEquPr || c_te==CEbase64)); }
00314
00315
protected:
00316 contentEncoding c_te;
00317
bool d_ecoded;
00318
00319 };
00320
00321
00323 class CDisposition :
public Base {
00324
00325
public:
00326
CDisposition() : Base(),d_isp(CDinline) {}
00327
CDisposition(Content *p) : Base(p),d_isp(CDinline) {}
00328
CDisposition(Content *p,
const QCString &s) : Base(p) { from7BitString(s); }
00329
CDisposition(Content *p,
const QString &s,
const QCString &cs) : Base(p) { fromUnicodeString(s, cs); }
00330 ~
CDisposition() {}
00331
00332
virtual void from7BitString(
const QCString &s);
00333
virtual QCString as7BitString(
bool incType=
true);
00334
virtual void fromUnicodeString(
const QString &s,
const QCString &cs);
00335
virtual QString asUnicodeString();
00336
virtual void clear() { f_ilename.truncate(0); d_isp=CDinline; }
00337
virtual const char* type() {
return "Content-Disposition"; }
00338
00339 contentDisposition disposition() {
return d_isp; }
00340
void setDisposition(contentDisposition d) { d_isp=d; }
00341
bool isAttachment() {
return (d_isp==CDattachment); }
00342
00343
QString filename() {
return f_ilename; }
00344
void setFilename(
const QString &s) { f_ilename=s; }
00345
00346
protected:
00347 contentDisposition d_isp;
00348
QString f_ilename;
00349
00350 };
00351
00352
00354 class CDescription :
public Generics::GUnstructured {
00355
00356
public:
00357
CDescription() : Generics::GUnstructured() {}
00358
CDescription( Content * p ) : Generics::GUnstructured( p ) {}
00359
CDescription( Content * p,
const QCString & s )
00360 : Generics::GUnstructured( p, s ) {};
00361
CDescription( Content * p,
const QString & s,
const QCString & cs )
00362 : Generics::GUnstructured( p, s, cs ) {}
00363 ~
CDescription() {}
00364
00365
virtual const char* type() {
return "Content-Description"; }
00366 };
00367
00368
#endif // __KMIME_HEADERS_OBS_H__