summaryrefslogtreecommitdiffabout
path: root/kabc/plugins/qtopia/resourceqtopia.cpp
Unidiff
Diffstat (limited to 'kabc/plugins/qtopia/resourceqtopia.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp101
1 files changed, 81 insertions, 20 deletions
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index deb218b..b7263bb 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -27,12 +27,13 @@ $Id$
27#include <sys/types.h> 27#include <sys/types.h>
28#include <sys/stat.h> 28#include <sys/stat.h>
29#include <unistd.h> 29#include <unistd.h>
30 30
31#include <qdir.h> 31#include <qdir.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qtextstream.h>
33#include <qfileinfo.h> 34#include <qfileinfo.h>
34#include <qregexp.h> 35#include <qregexp.h>
35//US #include <qtimer.h> 36//US #include <qtimer.h>
36 37
37#include <kapplication.h> 38#include <kapplication.h>
38#include <kconfig.h> 39#include <kconfig.h>
@@ -87,14 +88,12 @@ void ResourceQtopia::init( const QString &fileName )
87 88
88ResourceQtopia::~ResourceQtopia() 89ResourceQtopia::~ResourceQtopia()
89{ 90{
90 if (mConverter != 0) 91 if (mConverter != 0)
91 delete mConverter; 92 delete mConverter;
92 93
93 if(mAccess != 0)
94 delete mAccess;
95} 94}
96 95
97void ResourceQtopia::writeConfig( KConfig *config ) 96void ResourceQtopia::writeConfig( KConfig *config )
98{ 97{
99 Resource::writeConfig( config ); 98 Resource::writeConfig( config );
100} 99}
@@ -117,92 +116,154 @@ Ticket *ResourceQtopia::requestSaveTicket()
117 116
118 117
119bool ResourceQtopia::doOpen() 118bool ResourceQtopia::doOpen()
120{ 119{
121 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1()); 120 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1());
122 121
123 mAccess = new AddressBookAccess();
124
125 if ( !mAccess ) {
126 qDebug("Unable to load file() %s", fileName().latin1());
127 return false;
128 }
129
130 122
131 if (mConverter == 0) 123 if (mConverter == 0)
132 { 124 {
133 mConverter = new QtopiaConverter(); 125 mConverter = new QtopiaConverter();
134 bool res = mConverter->init(); 126 bool res = mConverter->init();
135 if ( !res ) 127 if ( !res )
136 { 128 {
137 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file"); 129 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file");
138 qDebug(msg); 130 qDebug(msg);
139 delete mAccess;
140 mAccess = 0;
141 return false; 131 return false;
142 } 132 }
143 } 133 }
144 134
145 return true; 135 return true;
146} 136}
147 137
148void ResourceQtopia::doClose() 138void ResourceQtopia::doClose()
149{ 139{
150 qDebug("ResourceQtopia::doClose: %s", fileName().latin1()); 140 qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
151 141
152 if(mAccess) 142
153 {
154 delete mAccess;
155 mAccess = 0;
156 }
157 // it seems so, that deletion of access deletes backend as well 143 // it seems so, that deletion of access deletes backend as well
158 //delete backend; 144 //delete backend;
159 145
160 return; 146 return;
161} 147}
162 148
163bool ResourceQtopia::load() 149bool ResourceQtopia::load()
164{ 150{
151
152 QFile file( fileName() );
153 if ( !file.open(IO_ReadOnly ) ) {
154 return false;
155 }
156
157 QDomDocument doc("mydocument" );
158 if ( !doc.setContent( &file ) ) {
159 file.close();
160 return false;
161 }
162 bool res;
163 QDomElement docElem = doc.documentElement( );
164 QDomNode n = docElem.firstChild();
165 while ( !n.isNull() ) {
166 QDomElement e = n.toElement();
167 if ( !e.isNull() ) {
168 if ( e.tagName() == QString::fromLatin1( "Contacts" ) ) { // we're looking for them
169 QDomNode no = e.firstChild();
170 while ( !no.isNull() ) {
171 QDomElement el = no.toElement();
172 if ( !el.isNull() ) {
173 KABC::Addressee addressee;
174 res = mConverter->qtopiaToAddressee( el, addressee );
175 if ( !addressee.isEmpty() && res )
176 {
177 addressee.setResource( this );
178 addressBook()->insertAddressee( addressee );
179 }
180 }
181
182 no = no.nextSibling();
183 }
184 }
185 }
186
187 n = n.nextSibling();
188 }
189
190#if 0
191/ old code
165 qDebug("ResourceQtopia::load: %s", fileName().latin1()); 192 qDebug("ResourceQtopia::load: %s", fileName().latin1());
166 193
167 AddressBookIterator it(*mAccess); 194 AddressBookIterator it(*mAccess);
168 const PimContact* contact; 195 const PimContact* contact;
169 bool res; 196 bool res;
170 197
171 for (contact=it.toFirst(); it.current(); ++it) 198 for (contact=it.toFirst(); it.current(); ++it)
172 { 199 {
173 contact = it.current(); 200 contact = it.current();
174 201
175 KABC::Addressee addressee; 202 KABC::Addressee addressee;
176 203
177 res = mConverter->qtopiaToAddressee( (*contact), addressee ); 204 //LRres = mConverter->qtopiaToAddressee( (*contact), addressee );
178 205
179 if ( !addressee.isEmpty() && res ) 206 if ( !addressee.isEmpty() && res )
180 { 207 {
181 addressee.setResource( this ); 208 addressee.setResource( this );
182 addressBook()->insertAddressee( addressee ); 209 addressBook()->insertAddressee( addressee );
183 } 210 }
184 } 211 }
185 212#endif
186 return true; 213 return true;
187} 214}
188 215
189bool ResourceQtopia::save( Ticket *ticket ) 216bool ResourceQtopia::save( Ticket *ticket )
190{ 217{
218
219 mDirWatch.stopScan();
220 KABC::AddressBook::Iterator it;
221 bool res;
222 //pending open file for stream
223 QTextStream *stream;// = tempFile->textStream();
224 stream->setEncoding( QTextStream::UnicodeUTF8 );
225 *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>" << endl;
226 *stream << " <Groups>" << endl;
227 *stream << " </Groups>" << endl;
228 *stream << " <Contacts> " << endl;
229 // for all entries
230 KABC::Addressee ab;
231 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
232 KABC::Addressee addressee = (*it);
233 res = mConverter->addresseeToQtopia( addressee, stream );
234 if (!res == true)
235 {
236 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
237 }
238 }
239
240
241 *stream << "</Contacts>" << endl;
242 *stream << "</AddressBook>" << endl;
243 //pending close file
244 mDirWatch.startScan();
245
246 delete ticket;
247 unlock( fileName() );
248
249
250#if 0
251 //old code
191 qDebug("ResourceQtopia::save: %s", fileName().latin1()); 252 qDebug("ResourceQtopia::save: %s", fileName().latin1());
192 253
193 mDirWatch.stopScan(); 254 mDirWatch.stopScan();
194 255
195 KABC::AddressBook::Iterator it; 256 KABC::AddressBook::Iterator it;
196 bool res; 257 bool res;
197 258
198 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 259 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
199 PimContact c; 260 PimContact c;
200 KABC::Addressee addressee = (*it); 261 KABC::Addressee addressee = (*it);
201 262
202 res = mConverter->addresseeToQtopia( *it, c ); 263 //res = mConverter->addresseeToQtopia( *it, c );
203 if (res == true) 264 if (res == true)
204 { 265 {
205 mAccess->addContact(c); 266 mAccess->addContact(c);
206// if (res == false) 267// if (res == false)
207// qDebug("Unable to append Contact %s", c.fullName().latin1()); 268// qDebug("Unable to append Contact %s", c.fullName().latin1());
208 } 269 }
@@ -215,13 +276,13 @@ bool ResourceQtopia::save( Ticket *ticket )
215// mAccess->addressBookUpdated(); 276// mAccess->addressBookUpdated();
216 277
217 mDirWatch.startScan(); 278 mDirWatch.startScan();
218 279
219 delete ticket; 280 delete ticket;
220 unlock( fileName() ); 281 unlock( fileName() );
221 282#endif
222 return true; 283 return true;
223} 284}
224 285
225bool ResourceQtopia::lock( const QString &lockfileName ) 286bool ResourceQtopia::lock( const QString &lockfileName )
226{ 287{
227 qDebug("ResourceQtopia::lock: %s", fileName().latin1()); 288 qDebug("ResourceQtopia::lock: %s", fileName().latin1());