summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-08-02 18:22:39 (UTC)
committer ulf69 <ulf69>2004-08-02 18:22:39 (UTC)
commit9f89ce524f3dc9bb820e32f235a03d0a167b9f89 (patch) (unidiff)
tree140294ee8ce336999d45c5823a3e09a7ffa22fdd /kaddressbook
parente084a79b8aa0174e7587893f9b87d88670ed9f2c (diff)
downloadkdepimpi-9f89ce524f3dc9bb820e32f235a03d0a167b9f89.zip
kdepimpi-9f89ce524f3dc9bb820e32f235a03d0a167b9f89.tar.gz
kdepimpi-9f89ce524f3dc9bb820e32f235a03d0a167b9f89.tar.bz2
overhaul of the export/import interface to use dynamically loaded
resources as base for export and import
Diffstat (limited to 'kaddressbook') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/xxport/csv_xxport.cpp2
-rw-r--r--kaddressbook/xxport/kde2_xxport.cpp2
-rw-r--r--kaddressbook/xxport/opie_xxport.cpp195
-rw-r--r--kaddressbook/xxport/opie_xxport.h68
-rw-r--r--kaddressbook/xxport/qtopia_xxport.cpp287
-rw-r--r--kaddressbook/xxport/qtopia_xxport.h64
-rw-r--r--kaddressbook/xxport/sharpdtm_xxport.cpp284
-rw-r--r--kaddressbook/xxport/sharpdtm_xxport.h60
-rw-r--r--kaddressbook/xxport/vcard_xxport.cpp3
9 files changed, 962 insertions, 3 deletions
diff --git a/kaddressbook/xxport/csv_xxport.cpp b/kaddressbook/xxport/csv_xxport.cpp
index d4d5475..81148d9 100644
--- a/kaddressbook/xxport/csv_xxport.cpp
+++ b/kaddressbook/xxport/csv_xxport.cpp
@@ -66,7 +66,7 @@ extern "C"
66#ifndef KAB_EMBEDDED 66#ifndef KAB_EMBEDDED
67 void *init_libkaddrbk_csv_xxport() 67 void *init_libkaddrbk_csv_xxport()
68#else //KAB_EMBEDDED 68#else //KAB_EMBEDDED
69 void *init_kaddrbk_csv_xxport() 69 void *init_microkaddrbk_csv_xxport()
70#endif //KAB_EMBEDDED 70#endif //KAB_EMBEDDED
71 { 71 {
72 return ( new CSVXXPortFactory() ); 72 return ( new CSVXXPortFactory() );
diff --git a/kaddressbook/xxport/kde2_xxport.cpp b/kaddressbook/xxport/kde2_xxport.cpp
index 3fdb36d..03efc1b 100644
--- a/kaddressbook/xxport/kde2_xxport.cpp
+++ b/kaddressbook/xxport/kde2_xxport.cpp
@@ -65,7 +65,7 @@ extern "C"
65#ifndef KAB_EMBEDDED 65#ifndef KAB_EMBEDDED
66 void *init_libkaddrbk_kde2_xxport() 66 void *init_libkaddrbk_kde2_xxport()
67#else //KAB_EMBEDDED 67#else //KAB_EMBEDDED
68 void *init_kaddrbk_kde2_xxport() 68 void *init_microkaddrbk_kde2_xxport()
69#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
70 { 70 {
71 return ( new KDE2XXPortFactory() ); 71 return ( new KDE2XXPortFactory() );
diff --git a/kaddressbook/xxport/opie_xxport.cpp b/kaddressbook/xxport/opie_xxport.cpp
new file mode 100644
index 0000000..192b803
--- a/dev/null
+++ b/kaddressbook/xxport/opie_xxport.cpp
@@ -0,0 +1,195 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#include <qdir.h>
32
33#include <kfiledialog.h>
34#include <kmessagebox.h>
35
36//US #include <opie/ocontactaccess.h>
37//US #include <opie/ocontactaccessbackend_xml.h>
38
39//US #include "stdaddressbook.h"
40#include "resource.h"
41#include "tmpaddressbook.h"
42
43/*US
44#include <qfile.h>
45#include <qtextstream.h>
46
47#include <kabc/vcardconverter.h>
48#ifndef KAB_EMBEDDED
49#include <kio/netaccess.h>
50#endif //KAB_EMBEDDED
51
52#include <klocale.h>
53#include <kmessagebox.h>
54#include <ktempfile.h>
55#include <kurl.h>
56*/
57
58#include <factory.h>
59
60
61#include "xxportmanager.h"
62
63#include "opie_xxport.h"
64
65/*US
66class OpieXXPortFactory : public XXPortFactory
67{
68 public:
69 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
70 {
71 return new OpieXXPort( ab, parent, name );
72 }
73};
74*/
75
76
77extern "C"
78{
79 void *init_microkaddrbk_opie_xxport()
80 {
81 return ( new OpieXXPortFactory() );
82 }
83}
84
85
86OpieXXPort::OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
87 : XXPortResourceObject( ab, parent, name )
88{
89 defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
90
91 KRES::Factory* mFactory = KRES::Factory::self( "contact" );
92
93 if ( mFactory )
94 {
95 mResource = (KABC::Resource*)(mFactory->resource( "opie", 0, false ));
96
97 if ( mResource )
98 {
99 createImportAction( i18n( "Import Opie..." ) );
100 createExportAction( i18n( "Export Opie..." ) );
101 }
102 }
103}
104
105bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
106{
107 if (mResource == 0)
108 return false;
109
110 QString fileName = KFileDialog::getSaveFileName( defaultFileName, i18n("Save file"), parentWidget() );
111
112 if ( fileName.isEmpty() )
113 return false;
114
115 mResource->setFileName( fileName );
116
117
118 KABC::TmpAddressBook tmpAB;
119
120 tmpAB.addResource( mResource );
121
122 qDebug("11111");
123
124 //Now check if the file has already entries, and ask the user if he wants to delete them first.
125 KABC::AddressBook::Iterator it2 = tmpAB.begin();
126 for ( it2 = tmpAB.begin(); it2 != tmpAB.end(); ++it2 ) {
127 KABC::Addressee addressee = (*it2);
128 qDebug("found %s", addressee.formattedName().latin1());
129 }
130
131 if (it2 != tmpAB.end())
132 {
133 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
134 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
135 // Clean the database..
136 tmpAB.clear();
137 }
138 }
139 qDebug("22222");
140
141//US debug
142 QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
143 QPtrListIterator<KABC::Resource> resIt( kabcResources );
144 KABC::Resource *resource;
145 while ( ( resource = resIt.current() ) != 0 ) {
146 ++resIt;
147 qDebug("tmpAB has resource: %s", resource->identifier().latin1());
148 }
149
150
151 KABC::Addressee::List::ConstIterator it;
152 for ( it = list.begin(); it != list.end(); ++it ) {
153 tmpAB.insertAddressee(*it);
154 }
155
156 bool res = false;
157 KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
158
159 if (ticket != 0)
160 res = tmpAB.save( ticket );
161
162 tmpAB.removeResource( mResource );
163
164 return res;
165}
166
167
168KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const
169{
170 if (mResource == 0)
171 return KABC::AddresseeList();
172
173 KABC::AddresseeList adrlst;
174
175 QString fileName = KFileDialog::getOpenFileName( defaultFileName, i18n("Load file"), parentWidget() );
176
177 if ( fileName.isEmpty() )
178 return KABC::AddresseeList();
179
180 mResource->setFileName( fileName );
181
182
183 KABC::TmpAddressBook tmpAB;
184
185 tmpAB.addResource( mResource );
186
187 bool res = tmpAB.load();
188
189 adrlst = tmpAB.allAddressees();
190
191 tmpAB.removeResource( mResource );
192
193 return adrlst;
194
195}
diff --git a/kaddressbook/xxport/opie_xxport.h b/kaddressbook/xxport/opie_xxport.h
new file mode 100644
index 0000000..106f38b
--- a/dev/null
+++ b/kaddressbook/xxport/opie_xxport.h
@@ -0,0 +1,68 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#ifndef OPIE_XXPORT_H
32#define OPIE_XXPORT_H
33
34#include <xxportobject.h>
35
36
37class KABC::Resource;
38
39class OpieXXPort : public XXPortResourceObject
40{
41 Q_OBJECT
42
43 public:
44 OpieXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
45
46 QString identifier() const { return "opie"; }
47
48 public slots:
49 bool exportContacts( const KABC::AddresseeList &list, const QString &data );
50 KABC::AddresseeList importContacts( const QString &data ) const;
51
52 private:
53 QString defaultFileName;
54
55};
56
57
58class OpieXXPortFactory : public XXPortFactory
59{
60 public:
61 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
62 {
63 return new OpieXXPort( ab, parent, name );
64 }
65};
66
67
68#endif
diff --git a/kaddressbook/xxport/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia_xxport.cpp
new file mode 100644
index 0000000..8377cd5
--- a/dev/null
+++ b/kaddressbook/xxport/qtopia_xxport.cpp
@@ -0,0 +1,287 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#include <qdir.h>
32
33#include <kfiledialog.h>
34#include <kmessagebox.h>
35
36//US #include <qpe/pim/addressbookaccess.h>
37
38#include "addressbook.h"
39
40/*US
41#include <qfile.h>
42#include <qtextstream.h>
43
44#include <kabc/vcardconverter.h>
45#ifndef KAB_EMBEDDED
46#include <kio/netaccess.h>
47#endif //KAB_EMBEDDED
48
49#include <klocale.h>
50#include <kmessagebox.h>
51#include <ktempfile.h>
52#include <kurl.h>
53*/
54
55#include "xxportmanager.h"
56//US #include "qtopiaconverter.h"
57
58#include "qtopia_xxport.h"
59
60/*US
61class QtopiaXXPortFactory : public XXPortFactory
62{
63 public:
64 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
65 {
66 return new QtopiaXXPort( ab, parent, name );
67 }
68};
69*/
70
71extern "C"
72{
73 void *init_microkaddrbk_qtopia_xxport()
74 {
75 return ( new QtopiaXXPortFactory() );
76 }
77}
78
79
80
81QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
82 : XXPortResourceObject( ab, parent, name )
83{
84 defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
85
86 KRES::Factory* mFactory = KRES::Factory::self( "contact" );
87
88 if ( mFactory )
89 {
90 mResource = (KABC::Resource*)(mFactory->resource( "qtopia", 0, false ));
91
92 if ( mResource )
93 {
94 createImportAction( i18n( "Import Qtopia..." ) );
95 createExportAction( i18n( "Export Qtopia..." ) );
96 }
97 }
98}
99
100bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
101{
102/*US
103 // we can not choose the filename. Therefore use the default to display
104 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
105
106 AddressBookAccess* access = new AddressBookAccess();
107
108 if ( !access ) {
109 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
110 qDebug(text.latin1());
111 KMessageBox::error( parentWidget(), text );
112 addressBook()->error( text );
113 return false;
114 }
115
116 KABC::QtopiaConverter mConverter;
117
118 bool res = mConverter.init();
119 if (!res)
120 {
121 QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
122 qDebug(text);
123 KMessageBox::error( parentWidget(), text );
124 delete access;
125 return false;
126 }
127
128 //Now check if the file has already entries, and ask the user if he wants to delete them first.
129 { //create a new scope
130 AddressBookIterator it(*access);
131 const PimContact* firstcontact = it.toFirst();
132 if (firstcontact)
133 {
134 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
135 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
136 // Clean the database..
137
138 AddressBookIterator it2(*access);
139 for (it2.toFirst(); it2.current(); ++it2) {
140 access->removeContact(*it2.current());
141 }
142 }
143 }
144 }
145
146 KABC::Addressee::List::ConstIterator it;
147 for ( it = list.begin(); it != list.end(); ++it ) {
148 PimContact c;
149
150 res = mConverter.addresseeToQtopia( *it, c );
151 if (res == true)
152 {
153 access->addContact(c);
154 }
155 }
156
157 delete access;
158
159 return true;
160*/
161
162 if (mResource == 0)
163 return false;
164
165 QString fileName = defaultFileName;
166
167
168 mResource->setFileName( fileName );
169
170 //Now check if the file has already entries, and ask the user if he wants to delete them first.
171 if (mResource->count() > 0)
172 {
173 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
174 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
175 // Clean the database.
176 mResource->clear();
177 }
178 }
179
180 KABC::AddressBook tmpAB;
181
182 tmpAB.addResource( mResource );
183
184//US debug
185 QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
186 QPtrListIterator<KABC::Resource> resIt( kabcResources );
187 KABC::Resource *resource;
188 while ( ( resource = resIt.current() ) != 0 ) {
189 ++resIt;
190 qDebug("tmpAB has resource: %s", resource->identifier().latin1());
191 }
192
193
194 KABC::Addressee::List::ConstIterator it;
195 for ( it = list.begin(); it != list.end(); ++it ) {
196 tmpAB.insertAddressee(*it);
197 }
198
199 KABC::Ticket * ticket = mResource->requestSaveTicket();
200 return tmpAB.save( ticket );
201
202
203
204}
205
206KABC::AddresseeList QtopiaXXPort::importContacts( const QString& ) const
207{
208/*US
209 KABC::AddresseeList adrlst;
210
211 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
212
213 AddressBookAccess* access = new AddressBookAccess();
214
215 if ( !access ) {
216 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
217 qDebug(text.latin1());
218 addressBook()->error( text );
219 KMessageBox::error( parentWidget(), text );
220 return KABC::AddresseeList();
221 }
222
223 KABC::QtopiaConverter mConverter;
224
225 bool res = mConverter.init();
226 if (!res)
227 {
228 QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
229 qDebug(text);
230 KMessageBox::error( parentWidget(), text );
231 delete access;
232 return KABC::AddresseeList();
233 }
234
235
236
237 { //create a new scope
238 AddressBookIterator it(*access);
239
240 for (it.toFirst(); it.current(); ++it) {
241 const PimContact*contact = it.current();
242
243 KABC::Addressee addressee;
244
245 res = mConverter.qtopiaToAddressee( (*contact), addressee );
246
247 if ( !addressee.isEmpty() && res )
248 {
249 adrlst.append( addressee );
250 }
251 }
252 }
253
254 delete access;
255//US the deletion of the access object deletes the backend object as well.
256
257 return adrlst;
258*/
259
260 if (mResource == 0)
261 return KABC::AddresseeList();
262
263 KABC::AddresseeList adrlst;
264
265 QString fileName = defaultFileName;
266
267 mResource->setFileName( fileName );
268
269
270 KABC::AddressBook tmpAB;
271
272 tmpAB.addResource( mResource );
273
274//US debug
275 QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
276 QPtrListIterator<KABC::Resource> resIt( kabcResources );
277 KABC::Resource *resource;
278 while ( ( resource = resIt.current() ) != 0 ) {
279 ++resIt;
280 qDebug("tmpAB has resource: %s", resource->identifier().latin1());
281 }
282
283 bool res = tmpAB.load();
284
285 return tmpAB.allAddressees();
286
287}
diff --git a/kaddressbook/xxport/qtopia_xxport.h b/kaddressbook/xxport/qtopia_xxport.h
new file mode 100644
index 0000000..c7c89de
--- a/dev/null
+++ b/kaddressbook/xxport/qtopia_xxport.h
@@ -0,0 +1,64 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#ifndef QTOPIA_XXPORT_H
32#define QTOPIA_XXPORT_H
33
34#include <xxportobject.h>
35
36class QtopiaXXPort : public XXPortResourceObject
37{
38 Q_OBJECT
39
40 public:
41 QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
42
43 QString identifier() const { return "qtopia"; }
44
45 public slots:
46 bool exportContacts( const KABC::AddresseeList &list, const QString &data );
47 KABC::AddresseeList importContacts( const QString &data ) const;
48
49 private:
50 QString defaultFileName;
51
52};
53
54
55class QtopiaXXPortFactory : public XXPortFactory
56{
57 public:
58 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
59 {
60 return new QtopiaXXPort( ab, parent, name );
61 }
62};
63
64#endif
diff --git a/kaddressbook/xxport/sharpdtm_xxport.cpp b/kaddressbook/xxport/sharpdtm_xxport.cpp
new file mode 100644
index 0000000..8c2e07a
--- a/dev/null
+++ b/kaddressbook/xxport/sharpdtm_xxport.cpp
@@ -0,0 +1,284 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2004 Ulf Schenk
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#include <qdir.h>
32
33#include <kfiledialog.h>
34#include <kmessagebox.h>
35
36//US #include <sl/slzdb.h>
37
38#include "addressbook.h"
39
40/*US
41#include <qfile.h>
42#include <qtextstream.h>
43
44#include <kabc/vcardconverter.h>
45#ifndef KAB_EMBEDDED
46#include <kio/netaccess.h>
47#endif //KAB_EMBEDDED
48
49#include <klocale.h>
50#include <kmessagebox.h>
51#include <ktempfile.h>
52#include <kurl.h>
53*/
54
55#include "xxportmanager.h"
56
57#include "sharpdtm_xxport.h"
58
59/*US
60class SharpDTMXXPortFactory : public XXPortFactory
61{
62 public:
63 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
64 {
65 return new SharpDTMXXPort( ab, parent, name );
66 }
67};
68*/
69
70extern "C"
71{
72 void *init_microkaddrbk_sharpdtm_xxport()
73 {
74 return ( new SharpDTMXXPortFactory() );
75 }
76}
77
78SharpDTMXXPort::SharpDTMXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
79 : XXPortResourceObject( ab, parent, name )
80{
81 KRES::Factory* mFactory = KRES::Factory::self( "contact" );
82
83 if ( mFactory )
84 {
85 mResource = (KABC::Resource*)(mFactory->resource( "sharpdtm", 0, false ));
86 if ( mResource )
87 {
88 createImportAction( i18n( "Import Sharp..." ) );
89 createExportAction( i18n( "Export Sharp..." ) );
90 }
91 }
92}
93
94bool SharpDTMXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
95{
96/*US
97 // we can not choose the filename. Therefore use the default to display
98 QString fileName = SlZDataBase::addressbookFileName();
99
100 SlZDataBase* access = new SlZDataBase(fileName,
101 SlZDataBase::addressbookItems());
102
103 if ( !access ) {
104 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
105 qDebug(text.latin1());
106 KMessageBox::error( parentWidget(), text );
107 addressBook()->error( text );
108 return false;
109 }
110
111 KABC::SharpDTMConverter mConverter;
112
113 bool res = mConverter.init();
114 if (!res)
115 {
116 QString text( i18n( "Unable to initialize sharpdtm converter.<br>Most likely a problem with the category file." ) );
117 qDebug(text);
118 KMessageBox::error( parentWidget(), text );
119 delete access;
120 return false;
121 }
122
123 //Now check if the file has already entries, and ask the user if he wants to delete them first.
124 if (access->count() > 0)
125 {
126 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
127 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
128 // Clean the database..
129 access->deleteCard(0, SlZDataBase::AllCard );
130 }
131 }
132
133 KABC::Addressee::List::ConstIterator it;
134 for ( it = list.begin(); it != list.end(); ++it ) {
135 CardId c;
136 res = access->editNewCard();
137
138 if (res == true)
139 {
140 res = mConverter.addresseeToSharp( *it, access, c );
141
142 if (res == true)
143 access->finishEditCard(&c);
144 else
145 access->cancelEditCard();
146 }
147 }
148
149 delete access;
150
151 return true;
152*/
153
154 if (mResource == 0)
155 return false;
156
157 // we can not choose the filename. Therefore use the default to display
158 QString fileName = mResource->fileName();
159
160 if ( fileName.isEmpty() )
161 return false;
162
163 //Now check if the file has already entries, and ask the user if he wants to delete them first.
164 if (mResource->count() > 0)
165 {
166 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
167 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
168 // Clean the database..
169 mResource->clear();
170 }
171 }
172
173 KABC::AddressBook tmpAB;
174
175 tmpAB.addResource( mResource );
176
177//US debug
178 QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
179 QPtrListIterator<KABC::Resource> resIt( kabcResources );
180 KABC::Resource *resource;
181 while ( ( resource = resIt.current() ) != 0 ) {
182 ++resIt;
183 qDebug("tmpAB has resource: %s", resource->identifier().latin1());
184 }
185
186
187 KABC::Addressee::List::ConstIterator it;
188 for ( it = list.begin(); it != list.end(); ++it ) {
189 tmpAB.insertAddressee(*it);
190 }
191
192 KABC::Ticket * ticket = mResource->requestSaveTicket();
193 return tmpAB.save( ticket );
194
195
196}
197
198KABC::AddresseeList SharpDTMXXPort::importContacts( const QString& ) const
199{
200/*US
201 KABC::AddresseeList adrlst;
202
203 QString fileName = SlZDataBase::addressbookFileName();
204
205 // the last parameter in the SlZDataBase constructor means "readonly"
206 SlZDataBase* access = new SlZDataBase(fileName,
207 SlZDataBase::addressbookItems(), NULL, true);
208
209
210 if ( !access ) {
211 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
212 qDebug(text.latin1());
213 addressBook()->error( text );
214 KMessageBox::error( parentWidget(), text );
215 return KABC::AddresseeList();
216 }
217
218 KABC::SharpDTMConverter mConverter;
219
220 bool res = mConverter.init();
221 if (!res)
222 {
223 QString text( i18n( "Unable to initialize sharp converter.<br>Most likely a problem with the category file." ) );
224 qDebug(text);
225 KMessageBox::error( parentWidget(), text );
226 delete access;
227 return KABC::AddresseeList();
228 }
229
230
231 { //create a new scope
232 CardId id;
233
234 for (bool res=access->first(); res == true; res=access->next()) {
235 id = access->cardId();
236
237 KABC::Addressee addressee;
238
239 res = mConverter.sharpToAddressee( id, access, addressee );
240
241 if ( !addressee.isEmpty() && res )
242 {
243 adrlst.append( addressee );
244 }
245 }
246 }
247
248 delete access;
249
250 return adrlst;
251*/
252
253 if (mResource == 0)
254 return KABC::AddresseeList();
255
256 KABC::AddresseeList adrlst;
257
258 QString fileName = mResource->fileName();
259
260 if ( fileName.isEmpty() )
261 return KABC::AddresseeList();
262
263 mResource->setFileName( fileName );
264
265
266 KABC::AddressBook tmpAB;
267
268 tmpAB.addResource( mResource );
269
270//US debug
271 QPtrList<KABC::Resource> kabcResources = tmpAB.resources();
272 QPtrListIterator<KABC::Resource> resIt( kabcResources );
273 KABC::Resource *resource;
274 while ( ( resource = resIt.current() ) != 0 ) {
275 ++resIt;
276 qDebug("tmpAB has resource: %s", resource->identifier().latin1());
277 }
278
279 bool res = tmpAB.load();
280
281 return tmpAB.allAddressees();
282
283
284}
diff --git a/kaddressbook/xxport/sharpdtm_xxport.h b/kaddressbook/xxport/sharpdtm_xxport.h
new file mode 100644
index 0000000..43fd434
--- a/dev/null
+++ b/kaddressbook/xxport/sharpdtm_xxport.h
@@ -0,0 +1,60 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
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
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
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
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#ifndef SHARPDTM_XXPORT_H
32#define SHARPDTM_XXPORT_H
33
34#include <xxportobject.h>
35
36class SharpDTMXXPort : public XXPortResourceObject
37{
38 Q_OBJECT
39
40 public:
41 SharpDTMXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
42
43 QString identifier() const { return "qtopia"; }
44
45 public slots:
46 bool exportContacts( const KABC::AddresseeList &list, const QString &data );
47 KABC::AddresseeList importContacts( const QString &data ) const;
48
49};
50
51class SharpDTMXXPortFactory : public XXPortFactory
52{
53 public:
54 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
55 {
56 return new SharpDTMXXPort( ab, parent, name );
57 }
58};
59
60#endif
diff --git a/kaddressbook/xxport/vcard_xxport.cpp b/kaddressbook/xxport/vcard_xxport.cpp
index 4819341..acf6419 100644
--- a/kaddressbook/xxport/vcard_xxport.cpp
+++ b/kaddressbook/xxport/vcard_xxport.cpp
@@ -65,7 +65,7 @@ extern "C"
65#ifndef KAB_EMBEDDED 65#ifndef KAB_EMBEDDED
66 void *init_libkaddrbk_vcard_xxport() 66 void *init_libkaddrbk_vcard_xxport()
67#else //KAB_EMBEDDED 67#else //KAB_EMBEDDED
68 void *init_kaddrbk_vcard_xxport() 68 void *init_microkaddrbk_vcard_xxport()
69#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
70 { 70 {
71 return ( new VCardXXPortFactory() ); 71 return ( new VCardXXPortFactory() );
@@ -250,6 +250,7 @@ KABC::AddresseeList VCardXXPort::parseVCard( const QString &data ) const
250 return addrList; 250 return addrList;
251} 251}
252 252
253
253#ifndef KAB_EMBEDDED 254#ifndef KAB_EMBEDDED
254#include "vcard_xxport.moc" 255#include "vcard_xxport.moc"
255#endif //KAB_EMBEDDED 256#endif //KAB_EMBEDDED