summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxportobject.cpp
Unidiff
Diffstat (limited to 'kaddressbook/xxportobject.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/xxportobject.cpp106
1 files changed, 103 insertions, 3 deletions
diff --git a/kaddressbook/xxportobject.cpp b/kaddressbook/xxportobject.cpp
index bb985a6..4351753 100644
--- a/kaddressbook/xxportobject.cpp
+++ b/kaddressbook/xxportobject.cpp
@@ -24,29 +24,32 @@
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 <qsignalmapper.h> 32#include <qsignalmapper.h>
33 33
34#include <kaction.h> 34#include <kaction.h>
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36#include <factory.h>
36 37
37#include "kabcore.h" 38#include "kabcore.h"
38 39#include "addressee.h"
40#include "tmpaddressbook.h"
39#include "xxportobject.h" 41#include "xxportobject.h"
40 42
43
41class XXPortObject::XXPortObjectPrivate 44class XXPortObject::XXPortObjectPrivate
42{ 45{
43 public: 46 public:
44 QSignalMapper *mExportMapper; 47 QSignalMapper *mExportMapper;
45 QSignalMapper *mImportMapper; 48 QSignalMapper *mImportMapper;
46}; 49};
47 50
48XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent, 51XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent,
49 const char *name ) 52 const char *name )
50 : QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ), 53 : QObject( parent, name ), mAddressBook( ab ), mParentWidget( parent ),
51 d( new XXPortObjectPrivate ) 54 d( new XXPortObjectPrivate )
52{ 55{
@@ -145,29 +148,126 @@ void XXPortObject::slotExportActivated( const QString &data )
145void XXPortObject::slotImportActivated( const QString &data ) 148void XXPortObject::slotImportActivated( const QString &data )
146{ 149{
147 emit importActivated( identifier(), ( data == "<empty>" ? QString::null : data ) ); 150 emit importActivated( identifier(), ( data == "<empty>" ? QString::null : data ) );
148} 151}
149 152
150/******************************************************************** 153/********************************************************************
151 * 154 *
152 *******************************************************************/ 155 *******************************************************************/
153 156
154 157
155XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent, 158XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent,
156 const char *name ) 159 const char *name )
157 : XXPortObject( ab, parent, name ), mResource(0) 160 : XXPortObject( ab, parent, name ), mFactory(0)
158{ 161{
162 mFactory = KRES::Factory::self( "tmpcontact" );
159} 163}
160 164
161XXPortResourceObject::~XXPortResourceObject() 165XXPortResourceObject::~XXPortResourceObject()
162{ 166{
167 //do not delete the factory. It is a singleton, and selfcontained
163} 168}
164 169
165bool XXPortResourceObject::isAvailable() 170bool XXPortResourceObject::isAvailable()
166{ 171{
167 return (mResource != 0); 172 return (mFactory != 0);
173}
174
175
176bool XXPortResourceObject::_exportContacts( const KABC::AddresseeList &list, const QString& identifier, const QString& fileName )
177{
178 //create new resource
179 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0, false ));
180
181 if (mResource == 0)
182 return false;
183
184 if (fileName != QString::null)
185 mResource->setFileName( fileName );
186
187
188 KABC::TmpAddressBook tmpAB;
189
190 bool res = tmpAB.addResource( mResource );
191 if (res == false)
192 {
193 delete mResource;
194 return false;
195 }
196
197 res = tmpAB.load();
198 if (res == false)
199 {
200 //removeResource deletes also the resource object, if the linkcount is 0
201 tmpAB.removeResource( mResource );
202 return false;
203 }
204
205
206 //Now check if the file has already entries, and ask the user if he wants to delete them first.
207 if (tmpAB.begin() != tmpAB.end())
208 {
209 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
210 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
211 // Clean the database..
212 tmpAB.clear();
213 }
214 }
215
216
217 KABC::Addressee::List::ConstIterator it;
218 for ( it = list.begin(); it != list.end(); ++it ) {
219 tmpAB.insertAddressee(*it);
220 }
221
222 KABC::Ticket * ticket = tmpAB.requestSaveTicket(mResource);
223
224 res = false;
225 if (ticket != 0)
226 res = tmpAB.save( ticket );
227
228 //removeResource deletes also the resource object, if the linkcount is 0
229 tmpAB.removeResource( mResource );
230
231 return res;
232}
233
234
235KABC::AddresseeList XXPortResourceObject::_importContacts( const QString& identifier, const QString& fileName ) const
236{
237
238
239 KABC::Resource* mResource = (KABC::Resource*)(mFactory->resource( this->identifier(), 0, false ));
240
241 if (mResource == 0)
242 return KABC::AddresseeList();
243
244 KABC::AddresseeList adrlst;
245
246 if (fileName != QString::null)
247 mResource->setFileName( fileName );
248
249
250 KABC::TmpAddressBook tmpAB;
251
252 bool res = tmpAB.addResource( mResource );
253 if (res == false)
254 {
255 delete mResource;
256 return KABC::AddresseeList();
168} 257}
169 258
259 res = tmpAB.load();
260
261 adrlst = tmpAB.allAddressees();
262
263 //remove resource deletes also the Resourceobject, if the linkcount is 0
264 tmpAB.removeResource( mResource );
265
266 return adrlst;
267}
268
269
170 270
171#ifndef KAB_EMBEDDED 271#ifndef KAB_EMBEDDED
172#include "xxportobject.moc" 272#include "xxportobject.moc"
173#endif //KAB_EMBEDDED 273#endif //KAB_EMBEDDED