summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/vcard_xxport.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp
index 54d0cbd..b53f873 100644
--- a/kaddressbook/xxport/vcard_xxport.cpp
+++ b/kaddressbook/xxport/vcard_xxport.cpp
@@ -1,82 +1,83 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33 33
34#include <kabc/vcardconverter.h> 34#include <kabc/vcardconverter.h>
35#include <kabc/vcardparser/vcardtool.h>
35#include <kfiledialog.h> 36#include <kfiledialog.h>
36#ifndef KAB_EMBEDDED 37#ifndef KAB_EMBEDDED
37#include <kio/netaccess.h> 38#include <kio/netaccess.h>
38#endif //KAB_EMBEDDED 39#endif //KAB_EMBEDDED
39 40
40#include <klocale.h> 41#include <klocale.h>
41#include <kmessagebox.h> 42#include <kmessagebox.h>
42#include <ktempfile.h> 43#include <ktempfile.h>
43#include <kurl.h> 44#include <kurl.h>
44 45
45#include "xxportmanager.h" 46#include "xxportmanager.h"
46 47
47#include "vcard_xxport.h" 48#include "vcard_xxport.h"
48 49
49#ifndef KAB_EMBEDDED 50#ifndef KAB_EMBEDDED
50 51
51class VCardXXPortFactory : public XXPortFactory 52class VCardXXPortFactory : public XXPortFactory
52{ 53{
53 public: 54 public:
54 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 55 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
55 { 56 {
56 return new VCardXXPort( ab, parent, name ); 57 return new VCardXXPort( ab, parent, name );
57 } 58 }
58}; 59};
59#endif //KAB_EMBEDDED 60#endif //KAB_EMBEDDED
60 61
61 62
62extern "C" 63extern "C"
63{ 64{
64#ifndef KAB_EMBEDDED 65#ifndef KAB_EMBEDDED
65 void *init_libkaddrbk_vcard_xxport() 66 void *init_libkaddrbk_vcard_xxport()
66#else //KAB_EMBEDDED 67#else //KAB_EMBEDDED
67 void *init_kaddrbk_vcard_xxport() 68 void *init_kaddrbk_vcard_xxport()
68#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
69 { 70 {
70 return ( new VCardXXPortFactory() ); 71 return ( new VCardXXPortFactory() );
71 } 72 }
72} 73}
73 74
74 75
75VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 76VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
76 : XXPortObject( ab, parent, name ) 77 : XXPortObject( ab, parent, name )
77{ 78{
78 createImportAction( i18n( "Import vCard..." ) ); 79 createImportAction( i18n( "Import vCard..." ) );
79 createExportAction( i18n( "Export vCard 2.1..." ), "v21" ); 80 createExportAction( i18n( "Export vCard 2.1..." ), "v21" );
80 createExportAction( i18n( "Export vCard 3.0..." ), "v30" ); 81 createExportAction( i18n( "Export vCard 3.0..." ), "v30" );
81} 82}
82 83
@@ -164,83 +165,90 @@ KABC::AddresseeList VCardXXPort::importContacts( const QString& ) const
164 165
165 } else { 166 } else {
166 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" ); 167 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" );
167 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption ); 168 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption );
168 } 169 }
169 170
170 } 171 }
171 172
172 173
173#else //KAB_EMBEDDED 174#else //KAB_EMBEDDED
174 175
175 176
176 if ( !XXPortManager::importData.isEmpty() ) 177 if ( !XXPortManager::importData.isEmpty() )
177 addrList = parseVCard( XXPortManager::importData ); 178 addrList = parseVCard( XXPortManager::importData );
178 else { 179 else {
179 if ( XXPortManager::importURL.isEmpty() ) 180 if ( XXPortManager::importURL.isEmpty() )
180 { 181 {
181 fileName = KFileDialog::getOpenFileName( QString::null, i18n("Select vCard to Import"), parentWidget() ); 182 fileName = KFileDialog::getOpenFileName( QString::null, i18n("Select vCard to Import"), parentWidget() );
182 if ( fileName.isEmpty() ) 183 if ( fileName.isEmpty() )
183 return addrList; 184 return addrList;
184 185
185 } 186 }
186 else 187 else
187 { 188 {
188//US url = XXPortManager::importURL; 189//US url = XXPortManager::importURL;
189 qDebug("VCardXXPort::importContacts Urls at the moment not supported"); 190 qDebug("VCardXXPort::importContacts Urls at the moment not supported");
190 if ( url.isEmpty() ) 191 if ( url.isEmpty() )
191 return addrList; 192 return addrList;
192 193
193 } 194 }
194 195
195 196
196 QFile file( fileName ); 197 QFile file( fileName );
197 198
198 file.open( IO_ReadOnly ); 199 file.open( IO_ReadOnly );
199 QByteArray rawData = file.readAll(); 200 QByteArray rawData = file.readAll();
200 file.close(); 201 file.close();
201 202
202 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 203 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
203 addrList = parseVCard( data ); 204 addrList = parseVCard( data );
204 205
205 } 206 }
206#endif //KAB_EMBEDDED 207#endif //KAB_EMBEDDED
207 208
208 return addrList; 209 return addrList;
209} 210}
210 211
211KABC::AddresseeList VCardXXPort::parseVCard( const QString &data ) const 212KABC::AddresseeList VCardXXPort::parseVCard( const QString &data ) const
212{ 213{
213 KABC::VCardConverter converter; 214
215 KABC::VCardTool tool;
214 KABC::AddresseeList addrList; 216 KABC::AddresseeList addrList;
215 217 addrList = tool.parseVCards( data );
218 // LR : I switched to the code, which is in current cvs HEAD
219 /*
216 uint numVCards = data.contains( "BEGIN:VCARD", false ); 220 uint numVCards = data.contains( "BEGIN:VCARD", false );
217 QStringList dataList = QStringList::split( "\r\n\r\n", data ); 221 QStringList dataList = QStringList::split( "\r\n\r\n", data );
218 222
219 for ( uint i = 0; i < numVCards && i < dataList.count(); ++i ) { 223 for ( uint i = 0; i < numVCards && i < dataList.count(); ++i ) {
220 KABC::Addressee addr; 224 KABC::Addressee addr;
221 bool ok = false; 225 bool ok = false;
222 226
223 if ( dataList[ i ].contains( "VERSION:3.0" ) ) 227 if ( dataList[ i ].contains( "VERSION:3.0" ) )
224 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v3_0 ); 228 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v3_0 );
225 else if ( dataList[ i ].contains( "VERSION:2.1" ) ) 229 else if ( dataList[ i ].contains( "VERSION:2.1" ) )
226 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v2_1 ); 230 ok = converter.vCardToAddressee( dataList[ i ], addr, KABC::VCardConverter::v2_1 );
227 else { 231 else {
228 KMessageBox::sorry( parentWidget(), i18n( "Not supported vCard version." ) ); 232 KMessageBox::sorry( parentWidget(), i18n( "Not supported vCard version." ) );
229 continue; 233 continue;
230 } 234 }
231 235
232 if ( !addr.isEmpty() && ok ) 236 if ( !addr.isEmpty() && ok )
233 addrList.append( addr ); 237 addrList.append( addr );
234 else { 238 else {
235 QString text = i18n( "The selected file does not include a valid vCard. " 239 QString text = i18n( "The selected file does not include a valid vCard. "
236 "Please check the file and try again." ); 240 "Please check the file and try again." );
237 KMessageBox::sorry( parentWidget(), text ); 241 KMessageBox::sorry( parentWidget(), text );
238 } 242 }
239 } 243 }
240 244 */
245 if ( addrList.isEmpty() ) {
246 QString text = i18n( "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n" );
247 KMessageBox::sorry( parentWidget(), text );
248 }
241 return addrList; 249 return addrList;
242} 250}
243 251
244#ifndef KAB_EMBEDDED 252#ifndef KAB_EMBEDDED
245#include "vcard_xxport.moc" 253#include "vcard_xxport.moc"
246#endif //KAB_EMBEDDED 254#endif //KAB_EMBEDDED