summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2004-10-29 11:23:51 (UTC)
committer zautrix <zautrix>2004-10-29 11:23:51 (UTC)
commit2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e (patch) (unidiff)
tree183624f038dc3176e89db748f25b024aa75b6365 /kaddressbook
parent67146a3d92727f6fe3e92eacdb51da58bc7b0adf (diff)
downloadkdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.zip
kdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.tar.gz
kdepimpi-2d28a226645f56a96fe0a8252e0d7e7b2cc4df2e.tar.bz2
added filedialog to xml im/export
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/qtopia_xxport.cpp16
-rw-r--r--kaddressbook/xxportobject.cpp85
2 files changed, 56 insertions, 45 deletions
diff --git a/kaddressbook/xxport/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia_xxport.cpp
index 0cf6546..fc4abbb 100644
--- a/kaddressbook/xxport/qtopia_xxport.cpp
+++ b/kaddressbook/xxport/qtopia_xxport.cpp
@@ -1,78 +1,86 @@
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 "addressee.h" 33#include "addressee.h"
34#include "xxportmanager.h" 34#include "xxportmanager.h"
35#include "qtopia_xxport.h" 35#include "qtopia_xxport.h"
36#include <kfiledialog.h>
36 37
37/*US 38/*US
38class QtopiaXXPortFactory : public XXPortFactory 39class QtopiaXXPortFactory : public XXPortFactory
39{ 40{
40 public: 41 public:
41 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name ) 42 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
42 { 43 {
43 return new QtopiaXXPort( ab, parent, name ); 44 return new QtopiaXXPort( ab, parent, name );
44 } 45 }
45}; 46};
46*/ 47*/
47 48
48extern "C" 49extern "C"
49{ 50{
50 void *init_microkaddrbk_qtopia_xxport() 51 void *init_microkaddrbk_qtopia_xxport()
51 { 52 {
52 return ( new QtopiaXXPortFactory() ); 53 return ( new QtopiaXXPortFactory() );
53 } 54 }
54} 55}
55 56
56 57
57 58
58QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name ) 59QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
59 : XXPortResourceObject( ab, parent, name ) 60 : XXPortResourceObject( ab, parent, name )
60{ 61{
61 defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 62 defaultFileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
62 63
63 if ( mFactory && !mFactory->typeName( "qtopia" ).isEmpty() ) 64 if ( mFactory && !mFactory->typeName( "qtopia" ).isEmpty() )
64 { 65 {
65 createImportAction( i18n( "Import Qtopia..." ) ); 66 createImportAction( i18n( "Import xml (Qtopia)..." ) );
66 createExportAction( i18n( "Export Qtopia..." ) ); 67 createExportAction( i18n( "Export xml (Qtopia)..." ) );
67 } 68 }
68} 69}
69 70
70bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier ) 71bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &identifier )
71{ 72{
72 return _exportContacts( list, identifier, defaultFileName ); 73 QString fn =KFileDialog::getSaveFileName( defaultFileName, i18n("Import xml file"), 0 );
74 if ( fn == "" )
75 return false;
76
77 return _exportContacts( list, identifier, fn );
73} 78}
74 79
75KABC::AddresseeList QtopiaXXPort::importContacts( const QString &identifier ) const 80KABC::AddresseeList QtopiaXXPort::importContacts( const QString &identifier ) const
76{ 81{
77 return _importContacts( identifier, defaultFileName ); 82 QString fn =KFileDialog::getOpenFileName( defaultFileName, i18n("Import xml file"), 0 );
83 if ( fn == "" )
84 return KABC::AddresseeList() ;
85 return _importContacts( identifier, fn );
78} 86}
diff --git a/kaddressbook/xxportobject.cpp b/kaddressbook/xxportobject.cpp
index 67e8406..bd9d986 100644
--- a/kaddressbook/xxportobject.cpp
+++ b/kaddressbook/xxportobject.cpp
@@ -1,95 +1,96 @@
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 <qmap.h> 31#include <qmap.h>
32#include <qfile.h>
32#include <qsignalmapper.h> 33#include <qsignalmapper.h>
33 34
34#include <kaction.h> 35#include <kaction.h>
35#include <kmessagebox.h> 36#include <kmessagebox.h>
36#include <factory.h> 37#include <factory.h>
37 38
38#include "kabcore.h" 39#include "kabcore.h"
39#include "addressee.h" 40#include "addressee.h"
40#include "tmpaddressbook.h" 41#include "tmpaddressbook.h"
41#include "xxportobject.h" 42#include "xxportobject.h"
42 43
43 44
44class XXPortObject::XXPortObjectPrivate 45class XXPortObject::XXPortObjectPrivate
45{ 46{
46 public: 47 public:
47 QSignalMapper *mExportMapper; 48 QSignalMapper *mExportMapper;
48 QSignalMapper *mImportMapper; 49 QSignalMapper *mImportMapper;
49}; 50};
50 51
51XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent, 52XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent,
52 const char *name ) 53 const char *name )
53 : QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ), 54 : QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ),
54 d( new XXPortObjectPrivate ) 55 d( new XXPortObjectPrivate )
55{ 56{
56 d->mExportMapper = new QSignalMapper( this ); 57 d->mExportMapper = new QSignalMapper( this );
57 d->mImportMapper = new QSignalMapper( this ); 58 d->mImportMapper = new QSignalMapper( this );
58 59
59 connect( d->mExportMapper, SIGNAL( mapped( const QString& ) ), 60 connect( d->mExportMapper, SIGNAL( mapped( const QString& ) ),
60 SLOT( slotExportActivated( const QString& ) ) ); 61 SLOT( slotExportActivated( const QString& ) ) );
61 connect( d->mImportMapper, SIGNAL( mapped( const QString& ) ), 62 connect( d->mImportMapper, SIGNAL( mapped( const QString& ) ),
62 SLOT( slotImportActivated( const QString& ) ) ); 63 SLOT( slotImportActivated( const QString& ) ) );
63} 64}
64 65
65XXPortObject::~XXPortObject() 66XXPortObject::~XXPortObject()
66{ 67{
67 delete d; 68 delete d;
68 d = 0; 69 d = 0;
69} 70}
70 71
71bool XXPortObject::exportContacts( const KABC::AddresseeList&, const QString& ) 72bool XXPortObject::exportContacts( const KABC::AddresseeList&, const QString& )
72{ 73{
73 // do nothing 74 // do nothing
74 return false; 75 return false;
75} 76}
76 77
77KABC::AddresseeList XXPortObject::importContacts( const QString& ) const 78KABC::AddresseeList XXPortObject::importContacts( const QString& ) const
78{ 79{
79 // do nothing 80 // do nothing
80 return KABC::AddresseeList(); 81 return KABC::AddresseeList();
81} 82}
82 83
83void XXPortObject::createImportAction( const QString &label, const QString &data ) 84void XXPortObject::createImportAction( const QString &label, const QString &data )
84{ 85{
85#ifdef KAB_EMBEDDED 86#ifdef KAB_EMBEDDED
86 KABCore* kabcore = (KABCore*)mParentWidget; 87 KABCore* kabcore = (KABCore*)mParentWidget;
87#endif //KAB_EMBEDDED 88#endif //KAB_EMBEDDED
88 89
89 QString id = "file_import_" + identifier() + ( data.isEmpty() ? QString( "" ) : "_" + data ); 90 QString id = "file_import_" + identifier() + ( data.isEmpty() ? QString( "" ) : "_" + data );
90#ifndef KAB_EMBEDDED 91#ifndef KAB_EMBEDDED
91 KAction *action = new KAction( label, 0, d->mImportMapper, SLOT( map() ), actionCollection(), id.latin1() ); 92 KAction *action = new KAction( label, 0, d->mImportMapper, SLOT( map() ), actionCollection(), id.latin1() );
92#else //KAB_EMBEDDED 93#else //KAB_EMBEDDED
93 KAction *action = new KAction( label, 0, d->mImportMapper, SLOT( map() ), kabcore->actionCollection(), id.latin1() ); 94 KAction *action = new KAction( label, 0, d->mImportMapper, SLOT( map() ), kabcore->actionCollection(), id.latin1() );
94#endif //KAB_EMBEDDED 95#endif //KAB_EMBEDDED
95 96
@@ -115,159 +116,161 @@ void XXPortObject::createExportAction( const QString &label, const QString &data
115#ifndef KAB_EMBEDDED 116#ifndef KAB_EMBEDDED
116 KAction *action = new KAction( label, 0, d->mExportMapper, SLOT( map() ), actionCollection(), id.latin1() ); 117 KAction *action = new KAction( label, 0, d->mExportMapper, SLOT( map() ), actionCollection(), id.latin1() );
117#else //KAB_EMBEDDED 118#else //KAB_EMBEDDED
118 KAction *action = new KAction( label, 0, d->mExportMapper, SLOT( map() ), kabcore->actionCollection(), id.latin1() ); 119 KAction *action = new KAction( label, 0, d->mExportMapper, SLOT( map() ), kabcore->actionCollection(), id.latin1() );
119#endif //KAB_EMBEDDED 120#endif //KAB_EMBEDDED
120 121
121 d->mExportMapper->setMapping( action, ( data.isEmpty() ? QString( "<empty>" ) : data ) ); 122 d->mExportMapper->setMapping( action, ( data.isEmpty() ? QString( "<empty>" ) : data ) );
122 123
123#ifndef KAB_EMBEDDED 124#ifndef KAB_EMBEDDED
124 setXMLFile( identifier() + "_xxportui.rc" ); 125 setXMLFile( identifier() + "_xxportui.rc" );
125#endif //KAB_EMBEDDED 126#endif //KAB_EMBEDDED
126 127
127#ifdef KAB_EMBEDDED 128#ifdef KAB_EMBEDDED
128 action->plug((QWidget*)kabcore->getExportMenu()); 129 action->plug((QWidget*)kabcore->getExportMenu());
129#endif //KAB_EMBEDDED 130#endif //KAB_EMBEDDED
130 131
131} 132}
132 133
133KABC::AddressBook *XXPortObject::addressBook() const 134KABC::AddressBook *XXPortObject::addressBook() const
134{ 135{
135 return mAddressBook; 136 return mAddressBook;
136} 137}
137 138
138QWidget *XXPortObject::parentWidget() const 139QWidget *XXPortObject::parentWidget() const
139{ 140{
140 return mParentWidget; 141 return mParentWidget;
141} 142}
142 143
143void XXPortObject::slotExportActivated( const QString &data ) 144void XXPortObject::slotExportActivated( const QString &data )
144{ 145{
145 emit exportActivated( identifier(), ( data == "<empty>" ? QString::null : data ) ); 146 emit exportActivated( identifier(), ( data == "<empty>" ? QString::null : data ) );
146} 147}
147 148
148void XXPortObject::slotImportActivated( const QString &data ) 149void XXPortObject::slotImportActivated( const QString &data )
149{ 150{
150 emit importActivated( identifier(), ( data == "<empty>" ? QString::null : data ) ); 151 emit importActivated( identifier(), ( data == "<empty>" ? QString::null : data ) );
151} 152}
152 153
153/******************************************************************** 154/********************************************************************
154 * 155 *
155 *******************************************************************/ 156 *******************************************************************/
156 157
157 158
158XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent, 159XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent,
159 const char *name ) 160 const char *name )
160 : XXPortObject( ab, parent, name ), mFactory(0) 161 : XXPortObject( ab, parent, name ), mFactory(0)
161{ 162{
162 mFactory = KRES::Factory::self( "tmpcontact" ); 163 mFactory = KRES::Factory::self( "tmpcontact" );
163} 164}
164 165
165XXPortResourceObject::~XXPortResourceObject() 166XXPortResourceObject::~XXPortResourceObject()
166{ 167{
167 //do not delete the factory. It is a singleton, and selfcontained 168 //do not delete the factory. It is a singleton, and selfcontained
168} 169}
169 170
170bool XXPortResourceObject::isAvailable() 171bool XXPortResourceObject::isAvailable()
171{ 172{
172 return (mFactory != 0); 173 return (mFactory != 0);
173} 174}
174 175
175 176
176bool XXPortResourceObject::_exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName ) 177bool XXPortResourceObject::_exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName )
177{ 178{
178 //create new resource 179 //create new resource
179 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 )); 180 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 ));
180 181
181 if (mResource == 0) 182 if (mResource == 0)
182 return false; 183 return false;
183 184
184 if (fileName != QString::null) 185 if (fileName != QString::null) {
185 mResource->setFileName( fileName ); 186 mResource->setFileName( fileName );
186 187 } else
187 188 return false;
188 KABC::TmpAddressBook tmpAB; 189
189 190
190 bool res = tmpAB.addResource( mResource ); 191 KABC::TmpAddressBook tmpAB;
191 if (res == false) 192
192 { 193 bool res = tmpAB.addResource( mResource );
193 delete mResource; 194 if (res == false)
194 return false; 195 {
195 } 196 delete mResource;
196 197 return false;
197 res = tmpAB.load(); 198 }
198 if (res == false) 199 if ( QFile::exists ( fileName ) ) {
199 { 200 res = tmpAB.load();
200 //removeResource deletes also the resource object, if the linkcount is 0 201 if (res == false)
201 tmpAB.removeResource( mResource ); 202 {
202 return false; 203 //removeResource deletes also the resource object, if the linkcount is 0
203 } 204 tmpAB.removeResource( mResource );
204 205 return false;
205 206 }
206 //Now check if the file has already entries, and ask the user if he wants to delete them first. 207
207 if (tmpAB.begin() != tmpAB.end()) 208
208 { 209 //Now check if the file has already entries, and ask the user if he wants to delete them first.
209 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) ); 210 if (tmpAB.begin() != tmpAB.end())
210 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) { 211 {
211 // Clean the database.. 212 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
212 tmpAB.clear(); 213 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
214 // Clean the database..
215 tmpAB.clear();
216 }
217 }
213 } 218 }
214 }
215 219
220 KABC::Addressee::List::ConstIterator it;
221 for ( it = list.begin(); it != list.end(); ++it ) {
222 tmpAB.insertAddressee(*it);
223 }
216 224
217 KABC::Addressee::List::ConstIterator it; 225 KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
218 for ( it = list.begin(); it != list.end(); ++it ) {
219 tmpAB.insertAddressee(*it);
220 }
221
222 KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
223 226
224 res = false; 227 res = false;
225 if (ticket != 0) 228 if (ticket != 0)
226 res = tmpAB.save( ticket ); 229 res = tmpAB.save( ticket );
227 230
228 //removeResource deletes also the resource object, if the linkcount is 0 231 //removeResource deletes also the resource object, if the linkcount is 0
229 tmpAB.removeResource( mResource ); 232 tmpAB.removeResource( mResource );
230 233
231 return res; 234 return res;
232} 235}
233 236
234 237
235KABC::AddresseeList XXPortResourceObject::_importContacts( const QString& identifier, const QString& fileName ) const 238KABC::AddresseeList XXPortResourceObject::_importContacts( const QString& identifier, const QString& fileName ) const
236{ 239{
237 240
238 241
239 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 )); 242 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0 ));
240 243
241 if (mResource == 0) 244 if (mResource == 0)
242 return KABC::AddresseeList(); 245 return KABC::AddresseeList();
243 246
244 KABC::AddresseeList adrlst; 247 KABC::AddresseeList adrlst;
245 248
246 if (fileName != QString::null) 249 if (fileName != QString::null)
247 mResource->setFileName( fileName ); 250 mResource->setFileName( fileName );
248 251
249 252
250 KABC::TmpAddressBook tmpAB; 253 KABC::TmpAddressBook tmpAB;
251 254
252 bool res = tmpAB.addResource( mResource ); 255 bool res = tmpAB.addResource( mResource );
253 if (res == false) 256 if (res == false)
254 { 257 {
255 delete mResource; 258 delete mResource;
256 return KABC::AddresseeList(); 259 return KABC::AddresseeList();
257 } 260 }
258 261
259 res = tmpAB.load(); 262 res = tmpAB.load();
260 263
261 adrlst = tmpAB.allAddressees(); 264 adrlst = tmpAB.allAddressees();
262 265
263 //remove resource deletes also the Resourceobject, if the linkcount is 0 266 //remove resource deletes also the Resourceobject, if the linkcount is 0
264 tmpAB.removeResource( mResource ); 267 tmpAB.removeResource( mResource );
265 268
266 return adrlst; 269 return adrlst;
267} 270}
268 271
269 272
270 273
271#ifndef KAB_EMBEDDED 274#ifndef KAB_EMBEDDED
272#include "xxportobject.moc" 275#include "xxportobject.moc"
273#endif //KAB_EMBEDDED 276#endif //KAB_EMBEDDED