summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-07-09 08:05:25 (UTC)
committer ulf69 <ulf69>2004-07-09 08:05:25 (UTC)
commit259a7a50e4f8138cedfc2004fbde3b37cedcc49f (patch) (unidiff)
treedfd2e89f169ba65ffd250f9b52f8f4efcd62d8b3 /kaddressbook
parentd91c533ffc42d7bf48fa1326754894b2c30b6831 (diff)
downloadkdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.zip
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.gz
kdepimpi-259a7a50e4f8138cedfc2004fbde3b37cedcc49f.tar.bz2
support for export of categories und supression of empty fields
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/opie/opie_xxport.cpp16
-rw-r--r--kaddressbook/xxport/opie/opie_xxportE.pro3
2 files changed, 15 insertions, 4 deletions
diff --git a/kaddressbook/xxport/opie/opie_xxport.cpp b/kaddressbook/xxport/opie/opie_xxport.cpp
index d1def18..8ee0725 100644
--- a/kaddressbook/xxport/opie/opie_xxport.cpp
+++ b/kaddressbook/xxport/opie/opie_xxport.cpp
@@ -1,202 +1,212 @@
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 <qdir.h> 31#include <qdir.h>
32 32
33#include <kfiledialog.h> 33#include <kfiledialog.h>
34#include <kmessagebox.h> 34#include <kmessagebox.h>
35 35
36#include <opie/ocontactaccess.h> 36#include <opie/ocontactaccess.h>
37#include <opie/ocontactaccessbackend_xml.h> 37#include <opie/ocontactaccessbackend_xml.h>
38 38
39#include "stdaddressbook.h" 39#include "stdaddressbook.h"
40 40
41/*US 41/*US
42#include <qfile.h> 42#include <qfile.h>
43#include <qtextstream.h> 43#include <qtextstream.h>
44 44
45#include <kabc/vcardconverter.h> 45#include <kabc/vcardconverter.h>
46#ifndef KAB_EMBEDDED 46#ifndef KAB_EMBEDDED
47#include <kio/netaccess.h> 47#include <kio/netaccess.h>
48#endif //KAB_EMBEDDED 48#endif //KAB_EMBEDDED
49 49
50#include <klocale.h> 50#include <klocale.h>
51#include <kmessagebox.h> 51#include <kmessagebox.h>
52#include <ktempfile.h> 52#include <ktempfile.h>
53#include <kurl.h> 53#include <kurl.h>
54*/ 54*/
55 55
56#include "xxportmanager.h" 56#include "xxportmanager.h"
57#include "opieconverter.h" 57#include "opieconverter.h"
58 58
59#include "opie_xxport.h" 59#include "opie_xxport.h"
60 60
61 61
62class OpieXXPortFactory : public XXPortFactory 62class OpieXXPortFactory : public XXPortFactory
63{ 63{
64 public: 64 public:
65 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 65 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
66 { 66 {
67 return new OpieXXPort( ab, parent, name ); 67 return new OpieXXPort( ab, parent, name );
68 } 68 }
69}; 69};
70 70
71 71
72extern "C" 72extern "C"
73{ 73{
74 void *init_kaddrbk_opie_xxport() 74 void *init_kaddrbk_opie_xxport()
75 { 75 {
76 return ( new OpieXXPortFactory() ); 76 return ( new OpieXXPortFactory() );
77 } 77 }
78} 78}
79 79
80 80
81OpieXXPort::OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 81OpieXXPort::OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
82 : XXPortObject( ab, parent, name ) 82 : XXPortObject( ab, parent, name )
83{ 83{
84 createImportAction( i18n( "Import Opie..." ) ); 84 createImportAction( i18n( "Import Opie..." ) );
85 createExportAction( i18n( "Export Opie..." ) ); 85 createExportAction( i18n( "Export Opie..." ) );
86} 86}
87 87
88bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data ) 88bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
89{ 89{
90 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 90 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
91 91
92#ifndef KAB_EMBEDDED 92#ifndef KAB_EMBEDDED
93 QString fileName = KFileDialog::getSaveFileName( name ); 93 QString fileName = KFileDialog::getSaveFileName( name );
94#else //KAB_EMBEDDED 94#else //KAB_EMBEDDED
95 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() ); 95 QString fileName = KFileDialog::getSaveFileName( name, i18n("Save file"), parentWidget() );
96#endif //KAB_EMBEDDED 96#endif //KAB_EMBEDDED
97 97
98 if ( fileName.isEmpty() ) 98 if ( fileName.isEmpty() )
99 return true; 99 return true;
100 100
101 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName ); 101 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName );
102 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false); 102 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false);
103 103
104 if ( !access ) { 104 if ( !access ) {
105 qDebug("Unable to access file() %s", fileName.latin1()); 105 qDebug("Unable to access file() %s", fileName.latin1());
106 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) ); 106 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) );
107 return false; 107 return false;
108 } 108 }
109 109
110 KABC::OpieConverter mConverter;
111
112 bool res = mConverter.init();
113 if (!res)
114 {
115 QString text( i18n( "Unable to initialize opie converter.<br>Most likely a problem with the category file." ) );
116 qDebug(text);
117 KMessageBox::error( parentWidget(), text );
118 delete access;
119 return false;
120 }
121
110 //Now check if the file has already entries, and ask the user if he wants to delete them first. 122 //Now check if the file has already entries, and ask the user if he wants to delete them first.
111 OContactAccess::List contactList = access->allRecords(); 123 OContactAccess::List contactList = access->allRecords();
112 if (contactList.count() > 0) 124 if (contactList.count() > 0)
113 { 125 {
114 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) ); 126 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
115 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) { 127 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
116 // Clean the database.. 128 // Clean the database..
117 access->clear(); 129 access->clear();
118 } 130 }
119 } 131 }
120 132
121 KABC::OpieConverter mConverter;
122 bool res;
123 133
124 KABC::Addressee::List::ConstIterator it; 134 KABC::Addressee::List::ConstIterator it;
125 for ( it = list.begin(); it != list.end(); ++it ) { 135 for ( it = list.begin(); it != list.end(); ++it ) {
126 OContact c; 136 OContact c;
127 KABC::Addressee addressee = (*it); 137 KABC::Addressee addressee = (*it);
128 138
129 res = mConverter.addresseeToOpie( *it, c ); 139 res = mConverter.addresseeToOpie( *it, c );
130 if (res == true) 140 if (res == true)
131 { 141 {
132 res = access->add(c); 142 res = access->add(c);
133 if (res == false) 143 if (res == false)
134 qDebug("Unable to append Contact %s", c.fullName().latin1()); 144 qDebug("Unable to append Contact %s", c.fullName().latin1());
135 } 145 }
136 else 146 else
137 { 147 {
138 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); 148 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
139 } 149 }
140 } 150 }
141 151
142 access->save(); 152 access->save();
143 153
144 delete access; 154 delete access;
145//US the deletion of the access object deletes the backend object as well. 155//US the deletion of the access object deletes the backend object as well.
146 156
147 return true; 157 return true;
148} 158}
149 159
150KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const 160KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const
151{ 161{
152 KABC::AddresseeList adrlst; 162 KABC::AddresseeList adrlst;
153 163
154 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 164 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
155 165
156#ifndef KAB_EMBEDDED 166#ifndef KAB_EMBEDDED
157 QString fileName = KFileDialog::getOpenFileName( name ); 167 QString fileName = KFileDialog::getOpenFileName( name );
158#else //KAB_EMBEDDED 168#else //KAB_EMBEDDED
159 QString fileName = KFileDialog::getOpenFileName( name, i18n("Load file"), parentWidget() ); 169 QString fileName = KFileDialog::getOpenFileName( name, i18n("Load file"), parentWidget() );
160#endif //KAB_EMBEDDED 170#endif //KAB_EMBEDDED
161 171
162 if ( fileName.isEmpty() ) 172 if ( fileName.isEmpty() )
163 return KABC::AddresseeList(); 173 return KABC::AddresseeList();
164 174
165 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName ); 175 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName );
166 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false); 176 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false);
167 177
168 if ( !access ) { 178 if ( !access ) {
169 qDebug("Unable to access file() %s", fileName.latin1()); 179 qDebug("Unable to access file() %s", fileName.latin1());
170 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) ); 180 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) );
171 return KABC::AddresseeList(); 181 return KABC::AddresseeList();
172 } 182 }
173 183
174 access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available 184 access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available
175 185
176 KABC::OpieConverter mConverter; 186 KABC::OpieConverter mConverter;
177 bool res = false; 187 bool res = false;
178 188
179 189
180 OContactAccess::List::Iterator it; 190 OContactAccess::List::Iterator it;
181 OContactAccess::List allList = access->allRecords(); 191 OContactAccess::List allList = access->allRecords();
182 for ( it = allList.begin(); it != allList.end(); ++it ) 192 for ( it = allList.begin(); it != allList.end(); ++it )
183 { 193 {
184 OContact c = (*it); 194 OContact c = (*it);
185 195
186 KABC::Addressee addressee; 196 KABC::Addressee addressee;
187 197
188 res = mConverter.opieToAddressee( c, addressee ); 198 res = mConverter.opieToAddressee( c, addressee );
189 199
190 if ( !addressee.isEmpty() && res ) { 200 if ( !addressee.isEmpty() && res ) {
191 adrlst.append( addressee ); 201 adrlst.append( addressee );
192 } 202 }
193 203
194// qDebug("found %s", c.fullName().latin1()); 204// qDebug("found %s", c.fullName().latin1());
195 } 205 }
196 206
197 delete access; 207 delete access;
198//US the deletion of the access object deletes the backend object as well. 208//US the deletion of the access object deletes the backend object as well.
199 209
200 return adrlst; 210 return adrlst;
201 211
202} 212}
diff --git a/kaddressbook/xxport/opie/opie_xxportE.pro b/kaddressbook/xxport/opie/opie_xxportE.pro
index a660a48..c373e37 100644
--- a/kaddressbook/xxport/opie/opie_xxportE.pro
+++ b/kaddressbook/xxport/opie/opie_xxportE.pro
@@ -1,27 +1,28 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3TARGET = kaddrbk_opie_xxport 3TARGET = kaddrbk_opie_xxport
4 4
5OBJECTS_DIR = obj/$(PLATFORM) 5OBJECTS_DIR = obj/$(PLATFORM)
6MOC_DIR = moc/$(PLATFORM) 6MOC_DIR = moc/$(PLATFORM)
7DESTDIR = $(QPEDIR)/lib 7DESTDIR = $(QPEDIR)/lib
8 8
9DEFINES += KAB_EMBEDDED 9DEFINES += KAB_EMBEDDED
10 10
11INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../kabc/converter/opie ../../../microkde ../../../microkde/kdeui ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include 11INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../kabc/converter/opie ../../../microkde ../../../microkde/kdeui ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(OPIEDIR)/include
12LIBS += -L$(QPEDIR)/lib 12LIBS += -L$(QPEDIR)/lib
13LIBS += -L$(OPIEDIR)/lib
13LIBS += -lmicrokde 14LIBS += -lmicrokde
14LIBS += -lmicrokabc 15LIBS += -lmicrokabc
15LIBS += -lopie 16LIBS += -lopie
16LIBS += -lqpe 17LIBS += -lqpe
17LIBS += -lqte 18LIBS += -lqte
18LIBS += -lmicrokabc_opieconverter 19LIBS += -lmicrokabc_opieconverter
19 20
20INTERFACES = \ 21INTERFACES = \
21 22
22HEADERS = \ 23HEADERS = \
23 opie_xxport.h \ 24 opie_xxport.h \
24 25
25SOURCES = \ 26SOURCES = \
26 opie_xxport.cpp \ 27 opie_xxport.cpp \
27 28