author | ulf69 <ulf69> | 2004-08-03 20:49:15 (UTC) |
---|---|---|
committer | ulf69 <ulf69> | 2004-08-03 20:49:15 (UTC) |
commit | be52d7d03e57620919b23cb0cbb33ac22d0920e0 (patch) (unidiff) | |
tree | 34e8e29a221c828424126694f865d702c7635f97 /kaddressbook/xxportobject.cpp | |
parent | d5358380edce9a2c39f3eea4df741a148338880c (diff) | |
download | kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.zip kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.gz kdepimpi-be52d7d03e57620919b23cb0cbb33ac22d0920e0.tar.bz2 |
hopefully last modifications of resource based export/import functionality
for opie, qtopia and sharpdtm
Diffstat (limited to 'kaddressbook/xxportobject.cpp') (more/less context) (ignore whitespace changes)
-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 | |||
@@ -33,11 +33,14 @@ $Id$ | |||
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: |
@@ -154,20 +157,117 @@ void XXPortObject::slotImportActivated( const QString &data ) | |||
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); |
168 | } | 173 | } |
169 | 174 | ||
170 | 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(); | ||
257 | } | ||
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 | |||
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 |