-rw-r--r-- | kaddressbook/xxportobject.cpp | 106 |
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 | /* |
25 | Enhanced Version of the file for platform independent KDE tools. | 25 | Enhanced Version of the file for platform independent KDE tools. |
26 | Copyright (c) 2004 Ulf Schenk | 26 | Copyright (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 | |||
41 | class XXPortObject::XXPortObjectPrivate | 44 | class XXPortObject::XXPortObjectPrivate |
42 | { | 45 | { |
43 | public: | 46 | public: |
44 | QSignalMapper *mExportMapper; | 47 | QSignalMapper *mExportMapper; |
45 | QSignalMapper *mImportMapper; | 48 | QSignalMapper *mImportMapper; |
46 | }; | 49 | }; |
47 | 50 | ||
48 | XXPortObject::XXPortObject( KABC::AddressBook *ab, QWidget *parent, | 51 | XXPortObject::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 ) | |||
145 | void XXPortObject::slotImportActivated( const QString &data ) | 148 | void 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 | ||
155 | XXPortResourceObject::XXPortResourceObject( KABC::AddressBook *ab, QWidget *parent, | 158 | XXPortResourceObject::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 | ||
161 | XXPortResourceObject::~XXPortResourceObject() | 165 | XXPortResourceObject::~XXPortResourceObject() |
162 | { | 166 | { |
167 | //do not delete the factory. It is a singleton, and selfcontained | ||
163 | } | 168 | } |
164 | 169 | ||
165 | bool XXPortResourceObject::isAvailable() | 170 | bool XXPortResourceObject::isAvailable() |
166 | { | 171 | { |
167 | return (mResource != 0); | 172 | return (mFactory != 0); |
173 | } | ||
174 | |||
175 | |||
176 | bool 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 | |||
235 | KABC::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 |