summaryrefslogtreecommitdiffabout
path: root/kabc/vcard21parser.h
Unidiff
Diffstat (limited to 'kabc/vcard21parser.h') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcard21parser.h225
1 files changed, 225 insertions, 0 deletions
diff --git a/kabc/vcard21parser.h b/kabc/vcard21parser.h
new file mode 100644
index 0000000..24b0eb2
--- a/dev/null
+++ b/kabc/vcard21parser.h
@@ -0,0 +1,225 @@
1/*
2 This file is part of libkabc.
3
4 Copyright (c) 2002 Mark Westcott <mark@houseoffish.org>
5 Copyright (c) 2000 George Staikos <staikos@kde.org>
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA.
20*/
21
22/*
23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk
25
26$Id$
27*/
28
29#ifndef KABC_VCARD21FORMAT_H
30#define KABC_VCARD21FORMAT_H
31
32#include <qdatetime.h>
33#include <kdebug.h>
34#include <qregexp.h>
35#include <qstring.h>
36#include <kurl.h>
37#include <qvaluelist.h>
38
39#include "addressee.h"
40#include "addressbook.h"
41#include "phonenumber.h"
42
43
44#define VCARD_BEGIN "begin:vcard"
45#define VCARD_END "end:vcard"
46#define VCARD_BEGIN_N "begin"
47#define VCARD_END_N "end"
48#define VCARD_VERSION "version"
49
50#define VCARD_FN "fn"
51#define VCARD_N "n"
52
53// optional
54#define VCARD_NAME "name"
55#define VCARD_NICKNAME "nickname"
56#define VCARD_PHOTO "photo"
57#define VCARD_BDAY "bday"
58#define VCARD_ADR "adr"
59
60// types
61#define VCARD_ADR_DOM "dom"
62#define VCARD_ADR_INTL "intl"
63#define VCARD_ADR_POSTAL "postal"
64#define VCARD_ADR_PARCEL "parcel"
65#define VCARD_ADR_HOME "home"
66#define VCARD_ADR_WORK "work"
67#define VCARD_ADR_PREF "pref"
68// values
69#define VCARD_ADR_POBOX "PO Box"
70#define VCARD_ADR_EXTADR "Extended Address"
71#define VCARD_ADR_STREET "Street"
72#define VCARD_ADR_LOCALITY "Locality"
73#define VCARD_ADR_REGION "Region"
74#define VCARD_ADR_POSTCODE "Postal Code"
75#define VCARD_ADR_COUNTRY "Country Name"
76#define VCARD_LABEL "label"
77#define VCARD_PROFILE "profile"
78#define VCARD_SOURCE "source"
79#define VCARD_TEL "tel"
80// types
81#define VCARD_TEL_HOME "home"
82#define VCARD_TEL_WORK "work"
83#define VCARD_TEL_PREF "pref"
84#define VCARD_TEL_VOICE "voice"
85#define VCARD_TEL_FAX "fax"
86#define VCARD_TEL_MSG "msg"
87#define VCARD_TEL_CELL "cell"
88#define VCARD_TEL_PAGER "pager"
89#define VCARD_TEL_BBS "bbs"
90#define VCARD_TEL_MODEM "modem"
91#define VCARD_TEL_CAR "car"
92#define VCARD_TEL_ISDN "isdn"
93#define VCARD_TEL_VIDEO "video"
94#define VCARD_TEL_PCS "pcs"
95#define VCARD_EMAIL "email"
96// types
97#define VCARD_EMAIL_PREF "pref"
98#define VCARD_EMAIL_INTERNET "internet"
99#define VCARD_EMAIL_X400 "x400"
100#define VCARD_TZ "tz"
101#define VCARD_GEO "geo"
102#define VCARD_MAILER "mailer"
103#define VCARD_TITLE "title"
104#define VCARD_ROLE "role"
105#define VCARD_LOGO "logo"
106#define VCARD_AGENT "agent"
107#define VCARD_ORG "org"
108#define VCARD_CATEGORIES "categories"
109#define VCARD_NOTE "note"
110#define VCARD_PRODID "prodid"
111#define VCARD_REV "rev"
112#define VCARD_SOUND "sound"
113#define VCARD_UID "uid"
114#define VCARD_URL "url"
115#define VCARD_CLASS "class"
116#define VCARD_CLASS_PUBLIC "public"
117#define VCARD_CLASS_PRIVATE "private"
118#define VCARD_CLASS_CONFIDENTIAL "confidential"
119#define VCARD_KEY "key"
120// types
121#define VCARD_KEY_X509 "x509"
122#define VCARD_KEY_PGP "pgp"
123
124#define VCARD_QUOTED_PRINTABLE "quoted-printable"
125// this one is a temporary hack until we support TYPE=VALUE
126#define VCARD_ENCODING_QUOTED_PRINTABLE "encoding=quoted-printable"
127#define VCARD_BASE64 "base64"
128
129#define VC_STATE_BEGIN 1
130#define VC_STATE_BODY 2
131#define VC_STATE_END 4
132#define VC_STATE_HAVE_N 8
133#define VC_STATE_HAVE_VERSION 16
134
135#define VC_ERR_NO_BEGIN 1
136#define VC_ERR_NO_END 2
137#define VC_ERR_INVALID_LINE 3
138#define VC_ERR_INTERNAL 4
139#define VC_ERR_INVALID_NAME 5
140#define VC_ERR_MISSING_MANDATORY 6
141
142namespace KABC {
143
144class AddressBook;
145
146class VCard21Parser
147{
148public:
149
150 /**
151 * Constructor.
152 */
153 VCard21Parser();
154
155 /**
156 * Destructor.
157 */
158 virtual ~VCard21Parser();
159
160 /**
161 * Parses a string in vcard2.1 format and saves the single addressees
162 * to the address book.
163 *
164 * @param ab The address book.
165 * @param str The vcard string.
166 */
167 void readFromString( KABC::AddressBook *ab, const QString &str );
168
169 /**
170 * FIXME: we need a writeToString method
171 * QString writeToString (KABC::AddressBook *);
172 */
173
174 /**
175 * Parses a string in vcard2.1 format and returns the inherent addressee.
176 */
177 KABC::Addressee readFromString( const QString &data);
178
179 /**
180 * Helper method to store a address.
181 *
182 * @param data A string list, that is filled with 'street', 'house number' ...
183 * @param type The type of the returned address.
184 */
185 static KABC::Address readAddressFromQStringList (const QStringList &data, const int type);
186};
187
188}
189
190/**
191 * @short Helper class
192 */
193class VCardLineX
194{
195public:
196 QString name;
197 bool qualified;
198 QValueList<QString> qualifiers;
199 QValueList<QString> parameters;
200 bool isValid() const;
201};
202
203/**
204 * @short Helper class
205 */
206class VCard21ParserImpl
207{
208 friend class VCardLineX;
209
210public:
211 VCard21ParserImpl() { };
212 virtual ~VCard21ParserImpl() { };
213 static VCard21ParserImpl *parseVCard(const QString& vc, int *err = NULL);
214 QString getValue(const QString& name, const QString& qualifier);
215 QString getValue(const QString& name);
216 QStringList getValues(const QString& name, const QString& qualifier);
217 QStringList getValues(const QString& name);
218
219 QValueList<VCardLineX> *_vcdata;
220
221private:
222 VCard21ParserImpl (QValueList<VCardLineX> *_vcd);
223};
224
225#endif