KMIME Library
kmime_headers_p.h
00001 /* 00002 Copyright (c) 2007 Volker Krause <vkrause@kde.org> 00003 00004 This library is free software; you can redistribute it and/or modify it 00005 under the terms of the GNU Library General Public License as published by 00006 the Free Software Foundation; either version 2 of the License, or (at your 00007 option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, but WITHOUT 00010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00011 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00012 License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to the 00016 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 00017 02110-1301, USA. 00018 */ 00019 00020 #ifndef KMIME_HEADERS_P_H 00021 #define KMIME_HEADERS_P_H 00022 00023 //@cond PRIVATE 00024 00025 #define kmime_mk_empty_private( subclass, base ) \ 00026 class subclass##Private : public base##Private {}; 00027 00028 namespace KMime { 00029 00030 namespace Headers { 00031 00032 class BasePrivate 00033 { 00034 public: 00035 BasePrivate() : parent( 0 ) {} 00036 00037 virtual ~BasePrivate() {} 00038 00039 KMime::Content *parent; 00040 QByteArray encCS; 00041 }; 00042 00043 namespace Generics { 00044 00045 class UnstructuredPrivate : public BasePrivate 00046 { 00047 public: 00048 QString decoded; 00049 }; 00050 00051 kmime_mk_empty_private( Structured, Base ) 00052 kmime_mk_empty_private( Address, Structured ) 00053 00054 class MailboxListPrivate : public AddressPrivate 00055 { 00056 public: 00057 QList<Types::Mailbox> mailboxList; 00058 }; 00059 00060 kmime_mk_empty_private( SingleMailbox, MailboxList ) 00061 00062 class AddressListPrivate : public AddressPrivate 00063 { 00064 public: 00065 QList<Types::Address> addressList; 00066 }; 00067 00068 class IdentPrivate : public AddressPrivate 00069 { 00070 public: 00071 QList<Types::AddrSpec> msgIdList; 00072 }; 00073 00074 kmime_mk_empty_private( SingleIdent, Ident ) 00075 00076 class TokenPrivate : public StructuredPrivate 00077 { 00078 public: 00079 QByteArray token; 00080 }; 00081 00082 class PhraseListPrivate : public StructuredPrivate 00083 { 00084 public: 00085 QStringList phraseList; 00086 }; 00087 00088 class DotAtomPrivate : public StructuredPrivate 00089 { 00090 public: 00091 QString dotAtom; 00092 }; 00093 00094 class ParametrizedPrivate : public StructuredPrivate 00095 { 00096 public: 00097 QMap<QString,QString> parameterHash; 00098 }; 00099 00100 } // namespace Generics 00101 00102 class ReturnPathPrivate : public Generics::AddressPrivate 00103 { 00104 public: 00105 Types::Mailbox mailbox; 00106 }; 00107 00108 class MailCopiesToPrivate : public Generics::AddressListPrivate 00109 { 00110 public: 00111 bool alwaysCopy; 00112 bool neverCopy; 00113 }; 00114 00115 class ContentTransferEncodingPrivate : public Generics::TokenPrivate 00116 { 00117 public: 00118 contentEncoding cte; 00119 bool decoded; 00120 }; 00121 00122 class ContentTypePrivate : public Generics::ParametrizedPrivate 00123 { 00124 public: 00125 contentCategory category; 00126 QByteArray mimeType; 00127 QByteArray mimeSubType; 00128 }; 00129 00130 class ContentDispositionPrivate : public Generics::ParametrizedPrivate 00131 { 00132 public: 00133 contentDisposition disposition; 00134 }; 00135 00136 class GenericPrivate : public Generics::UnstructuredPrivate 00137 { 00138 public: 00139 GenericPrivate() : type( 0 ) {} 00140 ~GenericPrivate() 00141 { 00142 delete[] type; 00143 } 00144 00145 char *type; 00146 }; 00147 00148 class ControlPrivate : public Generics::StructuredPrivate 00149 { 00150 public: 00151 QByteArray name; 00152 QByteArray parameter; 00153 }; 00154 00155 class DatePrivate : public Generics::StructuredPrivate 00156 { 00157 public: 00158 KDateTime dateTime; 00159 }; 00160 00161 class NewsgroupsPrivate : public Generics::StructuredPrivate 00162 { 00163 public: 00164 QList<QByteArray> groups; 00165 }; 00166 00167 class LinesPrivate : public Generics::StructuredPrivate 00168 { 00169 public: 00170 int lines; 00171 }; 00172 00173 kmime_mk_empty_private( ContentID, Generics::SingleIdent ) 00174 } 00175 00176 } 00177 00178 #undef kmime_mk_empty_private 00179 00180 //@endcond 00181 00182 #endif