summaryrefslogtreecommitdiff
path: root/libopie/pim/ocontactaccessbackend_vcard.h
blob: 236da00200f50c0b240587651d6e7717b2994c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
 * VCard Backend for the OPIE-Contact Database.
 *
 * Copyright (C) 2000 Trolltech AS.  All rights reserved.
 * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
 *
 * =====================================================================
 *	This program is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Library General Public
 *      License as published by the Free Software Foundation; either
 *      version 2 of the License, or (at your option) any later version.
 * =====================================================================
 * ToDo:
 *
 * =====================================================================
 * Version: $Id$
 * =====================================================================
 * History:
 * $Log$
 * Revision 1.4  2002/12/07 13:26:22  eilers
 * Fixing bug in storing anniversary..
 *
 * Revision 1.3  2002/11/13 14:14:51  eilers
 * Added sorted for Contacts..
 *
 * Revision 1.2  2002/11/10 15:41:53  eilers
 * Bugfixes..
 *
 * Revision 1.1  2002/11/09 14:34:52  eilers
 * Added VCard Backend.
 *
 */
#ifndef __OCONTACTACCESSBACKEND_VCARD_H_
#define __OCONTACTACCESSBACKEND_VCARD_H_

#include <opie/ocontact.h>

#include "ocontactaccessbackend.h"

class VObject;

class OContactAccessBackend_VCard : public OContactAccessBackend {
 public:
	OContactAccessBackend_VCard ( QString appname, QString filename = 0l );

	bool load ();
	bool reload();
	bool save();
	void clear ();

	bool add ( const OContact& newcontact );
	bool remove ( int uid );
	bool replace ( const OContact& contact );
	
	OContact find ( int uid ) const;
	QArray<int> allRecords() const;
	QArray<int> queryByExample ( const OContact &query, int settings );
	QArray<int> matchRegexp(  const QRegExp &r ) const;

	const uint querySettings();
	bool hasQuerySettings (uint querySettings) const;
	QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat );
	bool wasChangedExternally();
	
private:
	OContact parseVObject( VObject* obj );
	VObject* createVObject( const OContact& c );
	QString convDateToVCardDate( const QDate& c ) const;
	QDate convVCardDateToDate( const QString& datestr );
	VObject *safeAddPropValue( VObject *o, const char* prop, const QString& value );
	VObject *safeAddProp( VObject* o, const char* prop);
	
	bool m_dirty : 1;
	QString m_file;
	QMap<int, OContact> m_map;
};

#endif