Early out parsing if we're only processing incoming OR outgoing.
[qwerkisync] / EventParsers / VMGEntities / VBody.h
1 /*
2  * Copyright (C) 2011, Jamie Thompson
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public
6  * License as published by the Free Software Foundation; either
7  * version 3 of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public
15  * License along with this program; If not, see
16  * <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef EVENTPARSERS_VMGEntities_VBODYWRITER_H
20 #define EVENTPARSERS_VMGEntities_VBODYWRITER_H
21
22 #include <QMap>
23
24 #include "SMSEntity.h"
25 #include "iReader.h"
26 #include "iWriter.h"
27
28 class Settings;
29
30 class QString;
31
32 namespace EventTypes { class SMS; }
33
34 namespace EventParsers
35 {
36         namespace VMGEntities
37         {
38                 class VBody : public SMSEntity, public iWriter, public iReader
39                 {
40                 public:
41                         VBody(const Settings &settings, const SMSEntity *parent);
42                         //VBody(QTextStream& stream);
43                         ~VBody();
44
45                         virtual bool Read(const QString &initialLine, QTextStream &stream, EventTypes::SMS &event);
46                         virtual void Write(QTextStream &stream, const EventTypes::SMS &event);
47
48                 protected:
49                         virtual const char *getTagName() const { return "VBODY"; }
50
51                 private:
52                         static const QMap<int, const char *> & BinaryMIMETypes()
53                         {
54                                 static QMap<int, const char *> s_BinaryMIMETypes;
55                                 if(s_BinaryMIMETypes.count() == 0)
56                                 {
57                                         s_BinaryMIMETypes.insert(0x00, "*/*");
58                                         s_BinaryMIMETypes.insert(0x01, "text/*");
59                                         s_BinaryMIMETypes.insert(0x02, "text/html");
60                                         s_BinaryMIMETypes.insert(0x03, "text/plain");
61                                         s_BinaryMIMETypes.insert(0x04, "text/x-hdml");
62                                         s_BinaryMIMETypes.insert(0x05, "text/x-ttml");
63                                         s_BinaryMIMETypes.insert(0x06, "text/x-vCalendar");
64                                         s_BinaryMIMETypes.insert(0x07, "text/x-vCard");
65                                         s_BinaryMIMETypes.insert(0x08, "text/vnd.wap.wml");
66                                         s_BinaryMIMETypes.insert(0x09, "text/vnd.wap.wmlscript");
67                                         s_BinaryMIMETypes.insert(0x0A, "text/vnd.wap.wta-event");
68                                         s_BinaryMIMETypes.insert(0x0B, "multipart/*");
69                                         s_BinaryMIMETypes.insert(0x0C, "multipart/mixed");
70                                         s_BinaryMIMETypes.insert(0x0D, "multipart/form-data");
71                                         s_BinaryMIMETypes.insert(0x0E, "multipart/byterantes");
72                                         s_BinaryMIMETypes.insert(0x0F, "multipart/alternative");
73                                         s_BinaryMIMETypes.insert(0x10, "application/*");
74                                         s_BinaryMIMETypes.insert(0x11, "application/java-vm");
75                                         s_BinaryMIMETypes.insert(0x12, "application/x-www-form-urlencoded");
76                                         s_BinaryMIMETypes.insert(0x13, "application/x-hdmlc");
77                                         s_BinaryMIMETypes.insert(0x14, "application/vnd.wap.wmlc");
78                                         s_BinaryMIMETypes.insert(0x15, "application/vnd.wap.wmlscriptc");
79                                         s_BinaryMIMETypes.insert(0x16, "application/vnd.wap.wta-eventc");
80                                         s_BinaryMIMETypes.insert(0x17, "application/vnd.wap.uaprof");
81                                         s_BinaryMIMETypes.insert(0x18, "application/vnd.wap.wtls-ca-certificate");
82                                         s_BinaryMIMETypes.insert(0x19, "application/vnd.wap.wtls-user-certificate");
83                                         s_BinaryMIMETypes.insert(0x1A, "application/x-x509-ca-cert");
84                                         s_BinaryMIMETypes.insert(0x1B, "application/x-x509-user-cert");
85                                         s_BinaryMIMETypes.insert(0x1C, "image/*");
86                                         s_BinaryMIMETypes.insert(0x1D, "image/gif");
87                                         s_BinaryMIMETypes.insert(0x1E, "image/jpeg");
88                                         s_BinaryMIMETypes.insert(0x1F, "image/tiff");
89                                         s_BinaryMIMETypes.insert(0x20, "image/png");
90                                         s_BinaryMIMETypes.insert(0x21, "image/vnd.wap.wbmp");
91                                         s_BinaryMIMETypes.insert(0x22, "application/vnd.wap.multipart.*");
92                                         s_BinaryMIMETypes.insert(0x23, "application/vnd.wap.multipart.mixed");
93                                         s_BinaryMIMETypes.insert(0x24, "application/vnd.wap.multipart.form-data");
94                                         s_BinaryMIMETypes.insert(0x25, "application/vnd.wap.multipart.byteranges");
95                                         s_BinaryMIMETypes.insert(0x26, "application/vnd.wap.multipart.alternative");
96                                         s_BinaryMIMETypes.insert(0x27, "application/xml");
97                                         s_BinaryMIMETypes.insert(0x28, "text/xml");
98                                         s_BinaryMIMETypes.insert(0x29, "application/vnd.wap.wbxml");
99                                         s_BinaryMIMETypes.insert(0x2A, "application/x-x968-cross-cert");
100                                         s_BinaryMIMETypes.insert(0x2B, "application/x-x968-ca-cert");
101                                         s_BinaryMIMETypes.insert(0x2C, "application/x-x968-user-cert");
102                                         s_BinaryMIMETypes.insert(0x2D, "text/vnd.wap.si");
103                                         s_BinaryMIMETypes.insert(0x2E, "application/vnd.wap.sic");
104                                         s_BinaryMIMETypes.insert(0x2F, "text/vnd.wap.sl");
105                                         s_BinaryMIMETypes.insert(0x30, "application/vnd.wap.slc");
106                                         s_BinaryMIMETypes.insert(0x31, "text/vnd.wap.co");
107                                         s_BinaryMIMETypes.insert(0x32, "application/vnd.wap.coc");
108                                         s_BinaryMIMETypes.insert(0x33, "application/vnd.wap.multipart.related");
109                                         s_BinaryMIMETypes.insert(0x34, "application/vnd.wap.sia");
110                                         s_BinaryMIMETypes.insert(0x35, "text/vnd.wap.connectivity-xml");
111                                         s_BinaryMIMETypes.insert(0x36, "application/vnd.wap.connectivity-wbxml");
112                                         s_BinaryMIMETypes.insert(0x37, "application/pkcs7-mime");
113                                         s_BinaryMIMETypes.insert(0x38, "application/vnd.wap.hashed-certificate");
114                                         s_BinaryMIMETypes.insert(0x39, "application/vnd.wap.signed-certificate");
115                                         s_BinaryMIMETypes.insert(0x3A, "application/vnd.wap.cert-response");
116                                         s_BinaryMIMETypes.insert(0x3B, "application/xhtml+xml");
117                                         s_BinaryMIMETypes.insert(0x3C, "application/wml+xml");
118                                         s_BinaryMIMETypes.insert(0x3D, "text/css");
119                                         s_BinaryMIMETypes.insert(0x3E, "application/vnd.wap.mms-message");
120                                         s_BinaryMIMETypes.insert(0x3F, "application/vnd.wap.rollover-certificate");
121                                         s_BinaryMIMETypes.insert(0x40, "application/vnd.wap.locc+wbxml");
122                                         s_BinaryMIMETypes.insert(0x41, "application/vnd.wap.loc+xml");
123                                         s_BinaryMIMETypes.insert(0x42, "application/vnd.syncml.dm+wbxml");
124                                         s_BinaryMIMETypes.insert(0x43, "application/vnd.syncml.dm+xml");
125                                         s_BinaryMIMETypes.insert(0x44, "application/vnd.syncml.notification");
126                                         s_BinaryMIMETypes.insert(0x45, "application/vnd.wap.xhtml+xml");
127                                         s_BinaryMIMETypes.insert(0x46, "application/vnd.wv.csp.cir");
128                                         s_BinaryMIMETypes.insert(0x47, "application/vnd.oma.dd+xml");
129                                         s_BinaryMIMETypes.insert(0x48, "application/vnd.oma.drm.message");
130                                         s_BinaryMIMETypes.insert(0x49, "application/vnd.oma.drm.content");
131                                         s_BinaryMIMETypes.insert(0x4A, "application/vnd.oma.drm.rights+xml");
132                                         s_BinaryMIMETypes.insert(0x4B, "application/vnd.oma.drm.rights+wbxml");
133                                 }
134
135                                 return s_BinaryMIMETypes;
136                         }
137                 };
138         }
139 }
140
141 #endif // EVENTPARSERS_VMGEntities_VBODYWRITER_H