summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxport/vcard_xxport.cpp
Unidiff
Diffstat (limited to 'kaddressbook/xxport/vcard_xxport.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/vcard_xxport.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp
index dd49a9c..c017f5b 100644
--- a/kaddressbook/xxport/vcard_xxport.cpp
+++ b/kaddressbook/xxport/vcard_xxport.cpp
@@ -1,164 +1,168 @@
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 <kfiledialog.h> 35#include <kfiledialog.h>
36#ifndef KAB_EMBEDDED 36#ifndef KAB_EMBEDDED
37#include <kio/netaccess.h> 37#include <kio/netaccess.h>
38#endif //KAB_EMBEDDED 38#endif //KAB_EMBEDDED
39 39
40#include <klocale.h> 40#include <klocale.h>
41#include <kmessagebox.h> 41#include <kmessagebox.h>
42#include <ktempfile.h> 42#include <ktempfile.h>
43#include <kurl.h> 43#include <kurl.h>
44 44
45#include "xxportmanager.h" 45#include "xxportmanager.h"
46 46
47#include "vcard_xxport.h" 47#include "vcard_xxport.h"
48 48
49#ifndef KAB_EMBEDDED 49#ifndef KAB_EMBEDDED
50 50
51class VCardXXPortFactory : public XXPortFactory 51class VCardXXPortFactory : public XXPortFactory
52{ 52{
53 public: 53 public:
54 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 54 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
55 { 55 {
56 return new VCardXXPort( ab, parent, name ); 56 return new VCardXXPort( ab, parent, name );
57 } 57 }
58}; 58};
59#endif //KAB_EMBEDDED
59 60
60 61
61extern "C" 62extern "C"
62{ 63{
64#ifndef KAB_EMBEDDED
63 void *init_libkaddrbk_vcard_xxport() 65 void *init_libkaddrbk_vcard_xxport()
66#else //KAB_EMBEDDED
67 void *init_kaddrbk_vcard_xxport()
68#endif //KAB_EMBEDDED
64 { 69 {
65 return ( new VCardXXPortFactory() ); 70 return ( new VCardXXPortFactory() );
66 } 71 }
67} 72}
68#endif //KAB_EMBEDDED
69 73
70 74
71VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 75VCardXXPort::VCardXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
72 : XXPortObject( ab, parent, name ) 76 : XXPortObject( ab, parent, name )
73{ 77{
74 createImportAction( i18n( "Import vCard..." ) ); 78 createImportAction( i18n( "Import vCard..." ) );
75 createExportAction( i18n( "Export vCard 2.1..." ), "v21" ); 79 createExportAction( i18n( "Export vCard 2.1..." ), "v21" );
76 createExportAction( i18n( "Export vCard 3.0..." ), "v30" ); 80 createExportAction( i18n( "Export vCard 3.0..." ), "v30" );
77} 81}
78 82
79bool VCardXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data ) 83bool VCardXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
80{ 84{
81 QString name; 85 QString name;
82 86
83 if ( list.count() == 1 ) 87 if ( list.count() == 1 )
84 name = list[ 0 ].givenName() + "_" + list[ 0 ].familyName() + ".vcf"; 88 name = list[ 0 ].givenName() + "_" + list[ 0 ].familyName() + ".vcf";
85 else 89 else
86 name = "addressbook.vcf"; 90 name = "addressbook.vcf";
87 91
88#ifndef KAB_EMBEDDED 92#ifndef KAB_EMBEDDED
89 QString fileName = KFileDialog::getSaveFileName( name ); 93 QString fileName = KFileDialog::getSaveFileName( name );
90#else //KAB_EMBEDDED 94#else //KAB_EMBEDDED
91 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() ); 95 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() );
92#endif //KAB_EMBEDDED 96#endif //KAB_EMBEDDED
93 97
94 if ( fileName.isEmpty() ) 98 if ( fileName.isEmpty() )
95 return true; 99 return true;
96 100
97 QFile outFile( fileName ); 101 QFile outFile( fileName );
98 if ( !outFile.open( IO_WriteOnly ) ) { 102 if ( !outFile.open( IO_WriteOnly ) ) {
99 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" ); 103 QString text = i18n( "<qt>Unable to open file <b>%1</b> for export.</qt>" );
100 KMessageBox::error( parentWidget(), text.arg( fileName ) ); 104 KMessageBox::error( parentWidget(), text.arg( fileName ) );
101 return false; 105 return false;
102 } 106 }
103 107
104 QTextStream t( &outFile ); 108 QTextStream t( &outFile );
105 t.setEncoding( QTextStream::UnicodeUTF8 ); 109 t.setEncoding( QTextStream::UnicodeUTF8 );
106 110
107 KABC::Addressee::List::ConstIterator it; 111 KABC::Addressee::List::ConstIterator it;
108 for ( it = list.begin(); it != list.end(); ++it ) { 112 for ( it = list.begin(); it != list.end(); ++it ) {
109 KABC::VCardConverter converter; 113 KABC::VCardConverter converter;
110 QString vcard; 114 QString vcard;
111 115
112 KABC::VCardConverter::Version version; 116 KABC::VCardConverter::Version version;
113 if ( data == "v21" ) 117 if ( data == "v21" )
114 version = KABC::VCardConverter::v2_1; 118 version = KABC::VCardConverter::v2_1;
115 else 119 else
116 version = KABC::VCardConverter::v3_0; 120 version = KABC::VCardConverter::v3_0;
117 121
118 converter.addresseeToVCard( *it, vcard, version ); 122 converter.addresseeToVCard( *it, vcard, version );
119 t << vcard << "\r\n\r\n"; 123 t << vcard << "\r\n\r\n";
120 } 124 }
121 125
122 outFile.close(); 126 outFile.close();
123 127
124 return true; 128 return true;
125} 129}
126 130
127KABC::AddresseeList VCardXXPort::importContacts( const QString& ) const 131KABC::AddresseeList VCardXXPort::importContacts( const QString& ) const
128{ 132{
129 QString fileName; 133 QString fileName;
130 KABC::AddresseeList addrList; 134 KABC::AddresseeList addrList;
131 KURL url; 135 KURL url;
132 136
133#ifndef KAB_EMBEDDED 137#ifndef KAB_EMBEDDED
134 if ( !XXPortManager::importData.isEmpty() ) 138 if ( !XXPortManager::importData.isEmpty() )
135 addrList = parseVCard( XXPortManager::importData ); 139 addrList = parseVCard( XXPortManager::importData );
136 else { 140 else {
137 if ( XXPortManager::importURL.isEmpty() ) 141 if ( XXPortManager::importURL.isEmpty() )
138 { 142 {
139 url = KFileDialog::getLoadFileName( QString::null, i18n("Select vCard to Import"), parentWidget() ); 143 url = KFileDialog::getLoadFileName( QString::null, i18n("Select vCard to Import"), parentWidget() );
140 } 144 }
141 else 145 else
142 url = XXPortManager::importURL; 146 url = XXPortManager::importURL;
143 147
144 if ( url.isEmpty() ) 148 if ( url.isEmpty() )
145 return addrList; 149 return addrList;
146 150
147 QString caption( i18n( "vCard Import Failed" ) ); 151 QString caption( i18n( "vCard Import Failed" ) );
148 if ( KIO::NetAccess::download( url, fileName ) ) { 152 if ( KIO::NetAccess::download( url, fileName ) ) {
149 QFile file( fileName ); 153 QFile file( fileName );
150 154
151 file.open( IO_ReadOnly ); 155 file.open( IO_ReadOnly );
152 QByteArray rawData = file.readAll(); 156 QByteArray rawData = file.readAll();
153 file.close(); 157 file.close();
154 158
155 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 ); 159 QString data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
156 addrList = parseVCard( data ); 160 addrList = parseVCard( data );
157 161
158 if ( !url.isLocalFile() ) 162 if ( !url.isLocalFile() )
159 KIO::NetAccess::removeTempFile( fileName ); 163 KIO::NetAccess::removeTempFile( fileName );
160 164
161 } else { 165 } else {
162 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" ); 166 QString text = i18n( "<qt>Unable to access <b>%1</b>.</qt>" );
163 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption ); 167 KMessageBox::error( parentWidget(), text.arg( url.url() ), caption );
164 } 168 }