summaryrefslogtreecommitdiffabout
path: root/kabc/vcardformatimpl.cpp
Unidiff
Diffstat (limited to 'kabc/vcardformatimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcardformatimpl.cpp28
1 files changed, 10 insertions, 18 deletions
diff --git a/kabc/vcardformatimpl.cpp b/kabc/vcardformatimpl.cpp
index b9fe6ff..ec5ed80 100644
--- a/kabc/vcardformatimpl.cpp
+++ b/kabc/vcardformatimpl.cpp
@@ -1,183 +1,175 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qfile.h> 28#include <qfile.h>
29#include <qregexp.h> 29#include <qregexp.h>
30#include <qapplication.h>
30 31
31#include <kdebug.h> 32#include <kdebug.h>
32#include <kmdcodec.h> 33#include <kmdcodec.h>
33#include <kstandarddirs.h> 34#include <kstandarddirs.h>
34#include <ktempfile.h> 35#include <ktempfile.h>
35 36
36#include <VCard.h> 37#include <VCard.h>
37 38
38#include "addressbook.h" 39#include "addressbook.h"
39#include "vcardformatimpl.h" 40#include "vcardformatimpl.h"
40 41
41using namespace KABC; 42using namespace KABC;
42using namespace VCARD; 43using namespace VCARD;
43 44
44int VCardFormatImpl::debug = -1; 45int VCardFormatImpl::debug = -1;
45 46
46VCardFormatImpl::VCardFormatImpl() 47VCardFormatImpl::VCardFormatImpl()
47{ 48{
48 debug = (getenv("KABC_DEBUG") != 0); 49 debug = (getenv("KABC_DEBUG") != 0);
49} 50}
50 51
51bool VCardFormatImpl::load( Addressee &addressee, QFile *file ) 52bool VCardFormatImpl::load( Addressee &addressee, QFile *file )
52{ 53{
53 kdDebug(5700) << "VCardFormat::load()" << endl; 54 kdDebug(5700) << "VCardFormat::load()" << endl;
54 55
55 QByteArray fdata = file->readAll(); 56 QByteArray fdata = file->readAll();
56 QCString data(fdata.data(), fdata.size()+1); 57 QCString data(fdata.data(), fdata.size()+1);
57 58
58 VCardEntity e( data ); 59 VCardEntity e( data );
59 60
60 VCardListIterator it( e.cardList() ); 61 VCardListIterator it( e.cardList() );
61 62
62 if ( it.current() ) { 63 if ( it.current() ) {
63//US VCard v(*it.current()); 64//US VCard v(*it.current());
64//US loadAddressee( addressee, v ); 65//US loadAddressee( addressee, v );
65 loadAddressee( addressee, it.current() ); 66 loadAddressee( addressee, it.current() );
66 return true; 67 return true;
67 } 68 }
68 69
69 return false; 70 return false;
70} 71}
71 72
73
74#include <kmessagebox.h>
72bool VCardFormatImpl::loadAll( AddressBook *addressBook, Resource *resource, QFile *file ) 75bool VCardFormatImpl::loadAll( AddressBook *addressBook, Resource *resource, QFile *file )
73{ 76{
74 kdDebug(5700) << "VCardFormat::loadAll()" << endl; 77
75 78 QCString data(file->readAll().data(), file->size()+1);
76 QByteArray fdata = file->readAll();
77 QCString data(fdata.data(), fdata.size()+1);
78
79 VCardEntity e( data ); 79 VCardEntity e( data );
80 80
81 VCardListIterator it( e.cardList() ); 81 VCardListIterator it( e.cardList() );
82 82
83 for (; it.current(); ++it) { 83 for (; it.current(); ++it) {
84//US VCard v(*it.current()); 84//US VCard v(*it.current());
85 Addressee addressee; 85 Addressee addressee;
86//US loadAddressee( addressee, v ); 86//US loadAddressee( addressee, v );
87 loadAddressee( addressee, it.current() ); 87 loadAddressee( addressee, it.current() );
88 addressee.setResource( resource ); 88 addressee.setResource( resource );
89 addressBook->insertAddressee( addressee ); 89 addressBook->insertAddressee( addressee );
90 if (debug == true) 90 if (debug == true)
91 { 91 {
92 printf("address %s loaded successfully\n", addressee.formattedName().latin1()); 92 printf("address %s loaded successfully\n", addressee.formattedName().latin1());
93 } 93 }
94 } 94 }
95
96 return true; 95 return true;
97} 96}
98 97
99void VCardFormatImpl::save( const Addressee &addressee, QFile *file ) 98void VCardFormatImpl::save( const Addressee &addressee, QFile *file )
100{ 99{
101 VCardEntity vcards; 100 VCardEntity vcards;
102 VCardList vcardlist; 101 VCardList vcardlist;
103 vcardlist.setAutoDelete( true ); 102 vcardlist.setAutoDelete( true );
104 103
105 VCard *v = new VCard; 104 VCard *v = new VCard;
106 105
107 saveAddressee( addressee, v, false ); 106 saveAddressee( addressee, v, false );
108 107
109 vcardlist.append( v ); 108 vcardlist.append( v );
110 vcards.setCardList( vcardlist ); 109 vcards.setCardList( vcardlist );
111 110
112 QCString vcardData = vcards.asString(); 111 QCString vcardData = vcards.asString();
113 file->writeBlock( (const char*)vcardData, vcardData.length() ); 112 file->writeBlock( (const char*)vcardData, vcardData.length() );
114} 113}
115 114
116void VCardFormatImpl::saveAll( AddressBook *ab, Resource *resource, QFile *file ) 115void VCardFormatImpl::saveAll( AddressBook *ab, Resource *resource, QFile *file )
117{ 116{
118 VCardEntity vcards;
119 VCardList vcardlist;
120 vcardlist.setAutoDelete( true );
121 117
122 AddressBook::Iterator it; 118 AddressBook::Iterator it;
123 for ( it = ab->begin(); it != ab->end(); ++it ) { 119 for ( it = ab->begin(); it != ab->end(); ++it ) {
124 if ( (*it).resource() == resource ) { 120 if ( (*it).resource() == resource ) {
125 VCard *v = new VCard; 121 save((*it),file);
126 saveAddressee( (*it), v, true ); 122 qApp->processEvents();
127 (*it).setChanged( false ); 123 (*it).setChanged( false );
128 vcardlist.append( v );
129 } 124 }
130 } 125 }
131 126 // for memory usage status test only
132 vcards.setCardList( vcardlist ); 127 // KMessageBox::information ( 0, "Stoppppp", QString("Stop ") );
133
134 QCString vcardData = vcards.asString();
135 file->writeBlock( (const char*)vcardData, vcardData.length() );
136} 128}
137 129
138bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v ) 130bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v )
139{ 131{
140 QPtrList<ContentLine> contentLines = v->contentLineList(); 132 QPtrList<ContentLine> contentLines = v->contentLineList();
141 ContentLine *cl; 133 ContentLine *cl;
142 134
143 for( cl = contentLines.first(); cl; cl = contentLines.next() ) { 135 for( cl = contentLines.first(); cl; cl = contentLines.next() ) {
144 QCString n = cl->name(); 136 QCString n = cl->name();
145 if ( n.left( 2 ) == "X-" ) { 137 if ( n.left( 2 ) == "X-" ) {
146 n = n.mid( 2 ); 138 n = n.mid( 2 );
147 int posDash = n.find( "-" ); 139 int posDash = n.find( "-" );
148 addressee.insertCustom( QString::fromUtf8( n.left( posDash ) ), 140 addressee.insertCustom( QString::fromUtf8( n.left( posDash ) ),
149 QString::fromUtf8( n.mid( posDash + 1 ) ), 141 QString::fromUtf8( n.mid( posDash + 1 ) ),
150 QString::fromUtf8( cl->value()->asString() ) ); 142 QString::fromUtf8( cl->value()->asString() ) );
151 continue; 143 continue;
152 } 144 }
153 145
154 EntityType type = cl->entityType(); 146 EntityType type = cl->entityType();
155 switch( type ) { 147 switch( type ) {
156 148
157 case EntityUID: 149 case EntityUID:
158 addressee.setUid( readTextValue( cl ) ); 150 addressee.setUid( readTextValue( cl ) );
159 break; 151 break;
160 152
161 case EntityEmail: 153 case EntityEmail:
162 addressee.insertEmail( readTextValue( cl ) ); 154 addressee.insertEmail( readTextValue( cl ) );
163 break; 155 break;
164 156
165 case EntityName: 157 case EntityName:
166 addressee.setName( readTextValue( cl ) ); 158 addressee.setName( readTextValue( cl ) );
167 break; 159 break;
168 160
169 case EntityFullName: 161 case EntityFullName:
170 addressee.setFormattedName( readTextValue( cl ) ); 162 addressee.setFormattedName( readTextValue( cl ) );
171 break; 163 break;
172 164
173 case EntityURL: 165 case EntityURL:
174 addressee.setUrl( KURL( readTextValue( cl ) ) ); 166 addressee.setUrl( KURL( readTextValue( cl ) ) );
175 break; 167 break;
176 168
177 case EntityNickname: 169 case EntityNickname:
178 addressee.setNickName( readTextValue( cl ) ); 170 addressee.setNickName( readTextValue( cl ) );
179 break; 171 break;
180 172
181 case EntityLabel: 173 case EntityLabel:
182 // not yet supported by kabc 174 // not yet supported by kabc
183 break; 175 break;