summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxport/csv_xxport.cpp
Unidiff
Diffstat (limited to 'kaddressbook/xxport/csv_xxport.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/csv_xxport.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/kaddressbook/xxport/csv_xxport.cpp b/kaddressbook/xxport/csv_xxport.cpp
index ce35053..caee66d 100644
--- a/kaddressbook/xxport/csv_xxport.cpp
+++ b/kaddressbook/xxport/csv_xxport.cpp
@@ -1,165 +1,170 @@
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 <qregexp.h> 32#include <qregexp.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34 34
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 "csvimportdialog.h" 45#include "csvimportdialog.h"
46 46
47#include "csv_xxport.h" 47#include "csv_xxport.h"
48 48
49 49
50#ifndef KAB_EMBEDDED 50#ifndef KAB_EMBEDDED
51 51
52class CSVXXPortFactory : public XXPortFactory 52class CSVXXPortFactory : public XXPortFactory
53{ 53{
54 public: 54 public:
55 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 55 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
56 { 56 {
57 return new CSVXXPort( ab, parent, name ); 57 return new CSVXXPort( ab, parent, name );
58 } 58 }
59}; 59};
60 60
61#endif //KAB_EMBEDDED
62
61 63
62extern "C" 64extern "C"
63{ 65{
66#ifndef KAB_EMBEDDED
64 void *init_libkaddrbk_csv_xxport() 67 void *init_libkaddrbk_csv_xxport()
68#else //KAB_EMBEDDED
69 void *init_kaddrbk_csv_xxport()
70#endif //KAB_EMBEDDED
65 { 71 {
66 return ( new CSVXXPortFactory() ); 72 return ( new CSVXXPortFactory() );
67 } 73 }
68} 74}
69#endif //KAB_EMBEDDED
70 75
71 76
72CSVXXPort::CSVXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 77CSVXXPort::CSVXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
73 : XXPortObject( ab, parent, name ) 78 : XXPortObject( ab, parent, name )
74{ 79{
75 createImportAction( i18n( "Import CSV List..." ) ); 80 createImportAction( i18n( "Import CSV List..." ) );
76 createExportAction( i18n( "Export CSV List..." ) ); 81 createExportAction( i18n( "Export CSV List..." ) );
77} 82}
78 83
79bool CSVXXPort::exportContacts( const KABC::AddresseeList &list, const QString& ) 84bool CSVXXPort::exportContacts( const KABC::AddresseeList &list, const QString& )
80{ 85{
81#ifndef KAB_EMBEDDED 86#ifndef KAB_EMBEDDED
82 KURL url = KFileDialog::getSaveURL( "addressbook.csv" ); 87 KURL url = KFileDialog::getSaveURL( "addressbook.csv" );
83 if ( url.isEmpty() ) 88 if ( url.isEmpty() )
84 return true; 89 return true;
85 90
86 if ( !url.isLocalFile() ) { 91 if ( !url.isLocalFile() ) {
87 KTempFile tmpFile; 92 KTempFile tmpFile;
88 if ( tmpFile.status() != 0 ) { 93 if ( tmpFile.status() != 0 ) {
89 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.%2.</qt>" ); 94 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.%2.</qt>" );
90 KMessageBox::error( parentWidget(), txt.arg( url.url() ) 95 KMessageBox::error( parentWidget(), txt.arg( url.url() )
91 .arg( strerror( tmpFile.status() ) ) ); 96 .arg( strerror( tmpFile.status() ) ) );
92 return false; 97 return false;
93 } 98 }
94 99
95 doExport( tmpFile.file(), list ); 100 doExport( tmpFile.file(), list );
96 tmpFile.close(); 101 tmpFile.close();
97 102
98 return KIO::NetAccess::upload( tmpFile.name(), url, parentWidget() ); 103 return KIO::NetAccess::upload( tmpFile.name(), url, parentWidget() );
99 } else { 104 } else {
100 QFile file( url.path() ); 105 QFile file( url.path() );
101 if ( !file.open( IO_WriteOnly ) ) { 106 if ( !file.open( IO_WriteOnly ) ) {
102 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>" ); 107 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>" );
103 KMessageBox::error( parentWidget(), txt.arg( url.path() ) ); 108 KMessageBox::error( parentWidget(), txt.arg( url.path() ) );
104 return false; 109 return false;
105 } 110 }
106 111
107 doExport( &file, list ); 112 doExport( &file, list );
108 file.close(); 113 file.close();
109 114
110 return true; 115 return true;
111 } 116 }
112 117
113#else //KAB_EMBEDDED 118#else //KAB_EMBEDDED
114 119
115 QString fileName = KFileDialog::getSaveFileName( "addressbook.csv", i18n("Save file"), parentWidget() ); 120 QString fileName = KFileDialog::getSaveFileName( "addressbook.csv", i18n("Save file"), parentWidget() );
116 121
117 if ( fileName.isEmpty() ) 122 if ( fileName.isEmpty() )
118 return true; 123 return true;
119 124
120 QFile file( fileName ); 125 QFile file( fileName );
121 if ( !file.open( IO_WriteOnly ) ) { 126 if ( !file.open( IO_WriteOnly ) ) {
122 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>" ); 127 QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>" );
123 KMessageBox::error( parentWidget(), txt.arg( fileName ) ); 128 KMessageBox::error( parentWidget(), txt.arg( fileName ) );
124 return false; 129 return false;
125 } 130 }
126 131
127 doExport( &file, list ); 132 doExport( &file, list );
128 file.close(); 133 file.close();
129 134
130 return true; 135 return true;
131 136
132 137
133#endif //KAB_EMBEDDED 138#endif //KAB_EMBEDDED
134 139
135} 140}
136 141
137KABC::AddresseeList CSVXXPort::importContacts( const QString& ) const 142KABC::AddresseeList CSVXXPort::importContacts( const QString& ) const
138{ 143{
139 CSVImportDialog dlg( addressBook(), parentWidget() ); 144 CSVImportDialog dlg( addressBook(), parentWidget() );
140 if ( dlg.exec() ) 145 if ( dlg.exec() )
141 return dlg.contacts(); 146 return dlg.contacts();
142 else 147 else
143 return KABC::AddresseeList(); 148 return KABC::AddresseeList();
144} 149}
145 150
146void CSVXXPort::doExport( QFile *fp, const KABC::AddresseeList &list ) 151void CSVXXPort::doExport( QFile *fp, const KABC::AddresseeList &list )
147{ 152{
148 QTextStream t( fp ); 153 QTextStream t( fp );
149 154
150 KABC::AddresseeList::ConstIterator iter; 155 KABC::AddresseeList::ConstIterator iter;
151 KABC::Field::List fields = addressBook()->fields(); 156 KABC::Field::List fields = addressBook()->fields();
152 KABC::Field::List::Iterator fieldIter; 157 KABC::Field::List::Iterator fieldIter;
153 bool first = true; 158 bool first = true;
154 159
155 // First output the column headings 160 // First output the column headings
156 for ( fieldIter = fields.begin(); fieldIter != fields.end(); ++fieldIter ) { 161 for ( fieldIter = fields.begin(); fieldIter != fields.end(); ++fieldIter ) {
157 if ( !first ) 162 if ( !first )
158 t << ","; 163 t << ",";
159 164
160 t << "\"" << (*fieldIter)->label() << "\""; 165 t << "\"" << (*fieldIter)->label() << "\"";
161 first = false; 166 first = false;
162 } 167 }
163 t << "\n"; 168 t << "\n";
164 169
165 // Then all the addressee objects 170 // Then all the addressee objects