summaryrefslogtreecommitdiffabout
path: root/kabc
Unidiff
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/file/resourcefile.cpp1
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp6
2 files changed, 3 insertions, 4 deletions
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index 6cd63fd..163f2b4 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -70,257 +70,256 @@ __declspec(dllexport)
70 void *init_microkabc_file() 70 void *init_microkabc_file()
71 { 71 {
72 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig, SyncPrefWidgetContainer>(); 72 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig, SyncPrefWidgetContainer>();
73 } 73 }
74#ifndef _WIN32_ 74#ifndef _WIN32_
75} 75}
76#endif 76#endif
77 77
78ResourceFile::ResourceFile( const KConfig *config, bool syncable ) 78ResourceFile::ResourceFile( const KConfig *config, bool syncable )
79 : Resource( config, syncable ) , mFormat( 0 ) 79 : Resource( config, syncable ) , mFormat( 0 )
80{ 80{
81 QString fileName, formatName, default_fileName; 81 QString fileName, formatName, default_fileName;
82 82
83 if (syncable == true) 83 if (syncable == true)
84 default_fileName = "/home/polo/kdepim/apps/kabc/localfile.vcf"; 84 default_fileName = "/home/polo/kdepim/apps/kabc/localfile.vcf";
85 else 85 else
86 default_fileName = StdAddressBook::fileName(); 86 default_fileName = StdAddressBook::fileName();
87 87
88 KConfig *cfg = (KConfig *)config; 88 KConfig *cfg = (KConfig *)config;
89 if ( cfg ) { 89 if ( cfg ) {
90 fileName = cfg->readEntry( "FileName", default_fileName ); 90 fileName = cfg->readEntry( "FileName", default_fileName );
91 formatName = cfg->readEntry( "FileFormat", "vcard" ); 91 formatName = cfg->readEntry( "FileFormat", "vcard" );
92 } else { 92 } else {
93 fileName = default_fileName; 93 fileName = default_fileName;
94 formatName = "vcard"; 94 formatName = "vcard";
95 } 95 }
96 96
97 init( fileName, formatName ); 97 init( fileName, formatName );
98} 98}
99 99
100ResourceFile::ResourceFile( const QString &fileName, bool syncable , 100ResourceFile::ResourceFile( const QString &fileName, bool syncable ,
101 const QString &formatName ) 101 const QString &formatName )
102 : Resource( 0, syncable ) 102 : Resource( 0, syncable )
103{ 103{
104// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1()); 104// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
105 init( fileName, formatName ); 105 init( fileName, formatName );
106} 106}
107 107
108void ResourceFile::init( const QString &fileName, const QString &formatName ) 108void ResourceFile::init( const QString &fileName, const QString &formatName )
109{ 109{
110 mFormatName = formatName; 110 mFormatName = formatName;
111 111
112 FormatFactory *factory = FormatFactory::self(); 112 FormatFactory *factory = FormatFactory::self();
113 mFormat = factory->format( mFormatName ); 113 mFormat = factory->format( mFormatName );
114 114
115 if ( !mFormat ) { 115 if ( !mFormat ) {
116 mFormatName = "vcard"; 116 mFormatName = "vcard";
117 mFormat = factory->format( mFormatName ); 117 mFormat = factory->format( mFormatName );
118 } 118 }
119 119
120#ifndef NO_DIRWATCH 120#ifndef NO_DIRWATCH
121 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 121 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
122 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 122 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
123 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 123 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
124#endif 124#endif
125 setFileName( fileName ); 125 setFileName( fileName );
126} 126}
127 127
128ResourceFile::~ResourceFile() 128ResourceFile::~ResourceFile()
129{ 129{
130 delete mFormat; 130 delete mFormat;
131 mFormat = 0; 131 mFormat = 0;
132} 132}
133 133
134void ResourceFile::writeConfig( KConfig *config ) 134void ResourceFile::writeConfig( KConfig *config )
135{ 135{
136 136
137 config->setGroup( "Resource_" + identifier() ); 137 config->setGroup( "Resource_" + identifier() );
138 Resource::writeConfig( config ); 138 Resource::writeConfig( config );
139 139
140 config->writeEntry( "FileName", mFileName ); 140 config->writeEntry( "FileName", mFileName );
141 config->writeEntry( "FileFormat", mFormatName ); 141 config->writeEntry( "FileFormat", mFormatName );
142 142
143// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1()); 143// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
144 144
145} 145}
146 146
147Ticket *ResourceFile::requestSaveTicket() 147Ticket *ResourceFile::requestSaveTicket()
148{ 148{
149 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl; 149 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl;
150 150
151 if ( !addressBook() ) return 0; 151 if ( !addressBook() ) return 0;
152 152
153#ifdef ALLOW_LOCKING 153#ifdef ALLOW_LOCKING
154 if ( !lock( mFileName ) ) { 154 if ( !lock( mFileName ) ) {
155 qDebug("unablt to lock file "); 155 qDebug("unablt to lock file ");
156 return 0; 156 return 0;
157 } 157 }
158#endif 158#endif
159 return createTicket( this ); 159 return createTicket( this );
160} 160}
161 161
162 162
163bool ResourceFile::doOpen() 163bool ResourceFile::doOpen()
164{ 164{
165 QFile file( mFileName ); 165 QFile file( mFileName );
166 qDebug("ResourceFile::openfile %s ", mFileName.latin1()); 166 qDebug("ResourceFile::openfile %s ", mFileName.latin1());
167 167
168 if ( !file.exists() ) { 168 if ( !file.exists() ) {
169 // try to create the file 169 // try to create the file
170 bool ok = file.open( IO_WriteOnly ); 170 bool ok = file.open( IO_WriteOnly );
171 if ( ok ) 171 if ( ok )
172 file.close(); 172 file.close();
173 173
174 return ok; 174 return ok;
175 } else { 175 } else {
176 if ( !file.open( IO_ReadWrite ) ) 176 if ( !file.open( IO_ReadWrite ) )
177 return false; 177 return false;
178 178
179 if ( file.size() == 0 ) { 179 if ( file.size() == 0 ) {
180 file.close(); 180 file.close();
181 return true; 181 return true;
182 } 182 }
183 183
184 bool ok = mFormat->checkFormat( &file ); 184 bool ok = mFormat->checkFormat( &file );
185 file.close(); 185 file.close();
186 186
187 return ok; 187 return ok;
188 } 188 }
189} 189}
190 190
191void ResourceFile::doClose() 191void ResourceFile::doClose()
192{ 192{
193} 193}
194 194
195bool ResourceFile::load() 195bool ResourceFile::load()
196{ 196{
197 197
198 qDebug("ResourceFile::loadfile %s ", mFileName.latin1());
199 QFile file( mFileName ); 198 QFile file( mFileName );
200 if ( !file.open( IO_ReadOnly ) ) { 199 if ( !file.open( IO_ReadOnly ) ) {
201 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) ); 200 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) );
202 return false; 201 return false;
203 } 202 }
204 203
205// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 204// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1());
206 205
207 return mFormat->loadAll( addressBook(), this, &file ); 206 return mFormat->loadAll( addressBook(), this, &file );
208} 207}
209 208
210bool ResourceFile::save( Ticket *ticket ) 209bool ResourceFile::save( Ticket *ticket )
211{ 210{
212// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 211// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
213 212
214 213
215 // create backup file 214 // create backup file
216 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 215 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
217 216
218/*US we use a simpler method to create a backupfile 217/*US we use a simpler method to create a backupfile
219 218
220 (void) KSaveFile::backupFile( mFileName, QString::null 219 (void) KSaveFile::backupFile( mFileName, QString::null
221 ,extension ); 220 ,extension );
222 221
223 KSaveFile saveFile( mFileName ); 222 KSaveFile saveFile( mFileName );
224 bool ok = false; 223 bool ok = false;
225 if ( saveFile.status() == 0 && saveFile.file() ) 224 if ( saveFile.status() == 0 && saveFile.file() )
226 { 225 {
227 mFormat->saveAll( addressBook(), this, saveFile.file() ); 226 mFormat->saveAll( addressBook(), this, saveFile.file() );
228 ok = saveFile.close(); 227 ok = saveFile.close();
229 } 228 }
230*/ 229*/
231 230
232//US ToDo: write backupfile 231//US ToDo: write backupfile
233#ifndef NO_DIRWATCH 232#ifndef NO_DIRWATCH
234 mDirWatch.stopScan(); 233 mDirWatch.stopScan();
235#endif 234#endif
236 QFile info; 235 QFile info;
237 info.setName( mFileName ); 236 info.setName( mFileName );
238 bool ok = info.open( IO_WriteOnly ); 237 bool ok = info.open( IO_WriteOnly );
239 if ( ok ) { 238 if ( ok ) {
240 mFormat->saveAll( addressBook(), this, &info ); 239 mFormat->saveAll( addressBook(), this, &info );
241 240
242 info.close(); 241 info.close();
243 ok = true; 242 ok = true;
244 } 243 }
245 else { 244 else {
246 245
247 } 246 }
248 247
249 if ( !ok ) 248 if ( !ok )
250 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) ); 249 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) );
251#ifndef NO_DIRWATCH 250#ifndef NO_DIRWATCH
252 mDirWatch.startScan(); 251 mDirWatch.startScan();
253#endif 252#endif
254 delete ticket; 253 delete ticket;
255#ifdef ALLOW_LOCKING 254#ifdef ALLOW_LOCKING
256 unlock( mFileName ); 255 unlock( mFileName );
257#endif 256#endif
258 257
259 return ok; 258 return ok;
260} 259}
261 260
262bool ResourceFile::lock( const QString &fileName ) 261bool ResourceFile::lock( const QString &fileName )
263{ 262{
264#ifdef ALLOW_LOCKING 263#ifdef ALLOW_LOCKING
265 264
266 265
267 QString fn = fileName; 266 QString fn = fileName;
268 267
269//US change the implementation how the lockfilename is getting created 268//US change the implementation how the lockfilename is getting created
270//US fn.replace( QRegExp("/"), "_" ); 269//US fn.replace( QRegExp("/"), "_" );
271//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 270//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
272 271
273 KURL url(fn); 272 KURL url(fn);
274 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 273 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
275 274
276 275
277 276
278 if (QFile::exists( lockName )) return false; 277 if (QFile::exists( lockName )) return false;
279 278
280 QString lockUniqueName; 279 QString lockUniqueName;
281 lockUniqueName = fn + KApplication::randomString( 8 ); 280 lockUniqueName = fn + KApplication::randomString( 8 );
282 281
283 url = lockUniqueName; 282 url = lockUniqueName;
284//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 283//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
285 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 284 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
286 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 285 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
287 286
288 // Create unique file 287 // Create unique file
289 QFile file( mLockUniqueName ); 288 QFile file( mLockUniqueName );
290 file.open( IO_WriteOnly ); 289 file.open( IO_WriteOnly );
291 file.close(); 290 file.close();
292 291
293 // Create lock file 292 // Create lock file
294 int result = 0; 293 int result = 0;
295#ifndef _WIN32_ 294#ifndef _WIN32_
296 result = ::link( QFile::encodeName( mLockUniqueName ), 295 result = ::link( QFile::encodeName( mLockUniqueName ),
297 QFile::encodeName( lockName ) ); 296 QFile::encodeName( lockName ) );
298#endif 297#endif
299 if ( result == 0 ) { 298 if ( result == 0 ) {
300 addressBook()->emitAddressBookLocked(); 299 addressBook()->emitAddressBookLocked();
301 return true; 300 return true;
302 } 301 }
303 302
304 // TODO: check stat 303 // TODO: check stat
305 304
306 return false; 305 return false;
307#else 306#else
308 return true; 307 return true;
309#endif 308#endif
310} 309}
311 310
312void ResourceFile::unlock( const QString &fileName ) 311void ResourceFile::unlock( const QString &fileName )
313{ 312{
314#ifdef ALLOW_LOCKING 313#ifdef ALLOW_LOCKING
315 QString fn = fileName; 314 QString fn = fileName;
316//US change the implementation how the lockfilename is getting created 315//US change the implementation how the lockfilename is getting created
317//US fn.replace( QRegExp( "/" ), "_" ); 316//US fn.replace( QRegExp( "/" ), "_" );
318//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 317//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
319//US QString lockName = fn + ".lock"; 318//US QString lockName = fn + ".lock";
320 KURL url(fn); 319 KURL url(fn);
321 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 320 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
322 321
323 QFile::remove( lockName ); 322 QFile::remove( lockName );
324 QFile::remove( mLockUniqueName ); 323 QFile::remove( mLockUniqueName );
325 addressBook()->emitAddressBookUnlocked(); 324 addressBook()->emitAddressBookUnlocked();
326#else 325#else
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index d36df20..6418b54 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -187,258 +187,258 @@ bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBa
187 if (!db->readField(ZdbAdrs::BusinessFax).isEmpty()) 187 if (!db->readField(ZdbAdrs::BusinessFax).isEmpty())
188 { 188 {
189 PhoneNumber businessfax; 189 PhoneNumber businessfax;
190 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax ); 190 businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax );
191 businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) ); 191 businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) );
192 addr.insertPhoneNumber( businessfax ); 192 addr.insertPhoneNumber( businessfax );
193 } 193 }
194 194
195 if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty()) 195 if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty())
196 { 196 {
197 PhoneNumber businessmobile; 197 PhoneNumber businessmobile;
198 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell ); 198 businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell );
199 businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) ); 199 businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) );
200 addr.insertPhoneNumber( businessmobile ); 200 addr.insertPhoneNumber( businessmobile );
201 } 201 }
202 202
203 if (!db->readField(ZdbAdrs::BusinessPager).isEmpty()) 203 if (!db->readField(ZdbAdrs::BusinessPager).isEmpty())
204 { 204 {
205 PhoneNumber businesspager; 205 PhoneNumber businesspager;
206 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager ); 206 businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager );
207 businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) ); 207 businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) );
208 addr.insertPhoneNumber( businesspager ); 208 addr.insertPhoneNumber( businesspager );
209 } 209 }
210 210
211 addr.setRole( db->readField(ZdbAdrs::JobTitle) ); 211 addr.setRole( db->readField(ZdbAdrs::JobTitle) );
212 addr.setOrganization( db->readField(ZdbAdrs::Company) ); 212 addr.setOrganization( db->readField(ZdbAdrs::Company) );
213 addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) ); 213 addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) );
214 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) ); 214 addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) );
215 addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) ); 215 addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) );
216 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) ); 216 addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) );
217 addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) ); 217 addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) );
218 218
219 //personal 219 //personal
220 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) ); 220 addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) );
221 221
222 QString gen = db->readField(ZdbAdrs::Gender); 222 QString gen = db->readField(ZdbAdrs::Gender);
223 //qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1()); 223 //qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1());
224 //qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited"); 224 //qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited");
225 225
226 if (gen == "male") 226 if (gen == "male")
227 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); 227 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male");
228 else if (gen == "female") 228 else if (gen == "female")
229 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); 229 addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female");
230 230
231 231
232 QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) ); 232 QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) );
233 if (ann.isValid()) { 233 if (ann.isValid()) {
234 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); 234 QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
235 //qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1()); 235 //qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1());
236 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); 236 addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
237 } 237 }
238 238
239 239
240 addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) ); 240 addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) );
241 241
242 242
243 QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) ); 243 QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) );
244 //qDebug("birtd %s ", birthd.toString().latin1()); 244 //qDebug("birtd %s ", birthd.toString().latin1());
245 if (birthd.isValid()) 245 if (birthd.isValid())
246 addr.setBirthday( birthd ); 246 addr.setBirthday( birthd );
247 247
248 addr.setNickName( db->readField(ZdbAdrs::Nickname) ); 248 addr.setNickName( db->readField(ZdbAdrs::Nickname) );
249 249
250 // others 250 // others
251 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available. 251 //US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available.
252 QString notes = db->readField(ZdbAdrs::Notes); 252 QString notes = db->readField(ZdbAdrs::Notes);
253 //notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n"; 253 //notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n";
254 if ( addr.url().isEmpty() ) 254 if ( addr.url().isEmpty() )
255 addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) ); 255 addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) );
256 addr.setNote( db->readField(ZdbAdrs::Notes) ); 256 addr.setNote( db->readField(ZdbAdrs::Notes) );
257 257
258 258
259 259
260//US QString groups() const { return find( Qtopia::Groups ); } 260//US QString groups() const { return find( Qtopia::Groups ); }
261//US QStringList groupList() const; 261//US QStringList groupList() const;
262 262
263 //qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" ); 263 //qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" );
264 QArray<int> catArray = db->readCategories(); 264 QArray<int> catArray = db->readCategories();
265 QString cat; 265 QString cat;
266 266
267 for ( unsigned int i=0; i < catArray.size(); i++ ) { 267 for ( unsigned int i=0; i < catArray.size(); i++ ) {
268 cat = catDB->label(catArray[i]); 268 cat = catDB->label(catArray[i]);
269 if ( cat.isEmpty() ) 269 if ( cat.isEmpty() )
270 addr.insertCategory(QString::number(catArray[i])); 270 addr.insertCategory(QString::number(catArray[i]));
271 else 271 else
272 addr.insertCategory( cat ); 272 addr.insertCategory( cat );
273 } 273 }
274 274
275 return true; 275 return true;
276} 276}
277 277
278bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact ) 278bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact )
279{ 279{
280 bool cellHome = false, cellWork = false; 280 bool cellHome = false, cellWork = false;
281 // name 281 // name
282 database->writeField(ZdbAdrs::LastName, addr.familyName()); 282 database->writeField(ZdbAdrs::LastName, addr.familyName());
283 database->writeField(ZdbAdrs::FirstName, addr.givenName()); 283 database->writeField(ZdbAdrs::FirstName, addr.givenName());
284 database->writeField(ZdbAdrs::MiddleName, addr.additionalName()); 284 database->writeField(ZdbAdrs::MiddleName, addr.additionalName());
285 database->writeField(ZdbAdrs::Title, addr.prefix()); 285 database->writeField(ZdbAdrs::Title, addr.prefix());
286 database->writeField(ZdbAdrs::Suffix, addr.suffix()); 286 database->writeField(ZdbAdrs::Suffix, addr.suffix());
287 287
288 //qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() ); 288 //qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() );
289 QString formattedName = addr.formattedName(); 289 QString formattedName = addr.formattedName();
290 if ( formattedName.isEmpty() ) { 290 if ( formattedName.isEmpty() ) {
291 if ( !addr.familyName().isEmpty() ) { 291 if ( !addr.familyName().isEmpty() ) {
292 formattedName = addr.familyName(); 292 formattedName = addr.familyName();
293 if ( !addr.givenName().isEmpty() ) { 293 if ( !addr.givenName().isEmpty() ) {
294 formattedName += ", "; 294 formattedName += ", ";
295 formattedName += addr.givenName(); 295 formattedName += addr.givenName();
296 } 296 }
297 } else 297 } else
298 formattedName = addr.givenName(); 298 formattedName = addr.givenName();
299 } 299 }
300 database->writeField(ZdbAdrs::FileAs, formattedName); 300 database->writeField(ZdbAdrs::FileAs, formattedName);
301 database->writeField(ZdbAdrs::FullName, formattedName); 301 database->writeField(ZdbAdrs::FullName, formattedName);
302 302
303 // email 303 // email
304 //qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!"); 304 //qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!");
305 //qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee"); 305 //qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee");
306 QString emails = addr.emails().join(" "); 306 QString emails = addr.emails().join(" ");
307 database->writeField(ZdbAdrs::Emails, emails ); 307 database->writeField(ZdbAdrs::Emails, emails );
308 308
309 database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() ); 309 database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() );
310 310
311 311
312 // home 312 // home
313 const Address homeaddress = addr.address(Address::Home); 313 const Address homeaddress = addr.address(Address::Home);
314 if (!homeaddress.isEmpty()) { 314 if (!homeaddress.isEmpty()) {
315 qDebug("write home address "); 315 //qDebug("write home address ");
316 database->writeField(ZdbAdrs::HomeStreet, homeaddress.street()); 316 database->writeField(ZdbAdrs::HomeStreet, homeaddress.street());
317 database->writeField(ZdbAdrs::HomeCity, homeaddress.locality()); 317 database->writeField(ZdbAdrs::HomeCity, homeaddress.locality());
318 database->writeField(ZdbAdrs::HomeState, homeaddress.region()); 318 database->writeField(ZdbAdrs::HomeState, homeaddress.region());
319 database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode()); 319 database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode());
320 database->writeField(ZdbAdrs::HomeCountry, homeaddress.country()); 320 database->writeField(ZdbAdrs::HomeCountry, homeaddress.country());
321 } 321 }
322 322
323 PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home ); 323 PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home );
324 if (!homephone.number().isEmpty()) 324 if (!homephone.number().isEmpty())
325 database->writeField(ZdbAdrs::HomePhone, homephone.number()); 325 database->writeField(ZdbAdrs::HomePhone, homephone.number());
326 326
327 PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ); 327 PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
328 if (!homefax.number().isEmpty()) 328 if (!homefax.number().isEmpty())
329 database->writeField(ZdbAdrs::HomeFax, homefax.number()); 329 database->writeField(ZdbAdrs::HomeFax, homefax.number());
330 330
331 PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell ); 331 PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell );
332 if (!homemobile.number().isEmpty()) { 332 if (!homemobile.number().isEmpty()) {
333 database->writeField(ZdbAdrs::HomeMobile, homemobile.number()); 333 database->writeField(ZdbAdrs::HomeMobile, homemobile.number());
334 cellHome = true; 334 cellHome = true;
335 } 335 }
336 336
337 database->writeField(ZdbAdrs::HomeWebPage, addr.url().url()); 337 database->writeField(ZdbAdrs::HomeWebPage, addr.url().url());
338 338
339 339
340 // business 340 // business
341 const Address businessaddress = addr.address(Address::Work); 341 const Address businessaddress = addr.address(Address::Work);
342 if (!businessaddress.isEmpty()) { 342 if (!businessaddress.isEmpty()) {
343 qDebug("write business address "); 343 //qDebug("write business address ");
344 database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street()); 344 database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street());
345 database->writeField(ZdbAdrs::BusinessCity, businessaddress.locality()); 345 database->writeField(ZdbAdrs::BusinessCity, businessaddress.locality());
346 database->writeField(ZdbAdrs::BusinessState, businessaddress.region()); 346 database->writeField(ZdbAdrs::BusinessState, businessaddress.region());
347 database->writeField(ZdbAdrs::BusinessZip, businessaddress.postalCode()); 347 database->writeField(ZdbAdrs::BusinessZip, businessaddress.postalCode());
348 database->writeField(ZdbAdrs::BusinessCountry, businessaddress.country()); 348 database->writeField(ZdbAdrs::BusinessCountry, businessaddress.country());
349 } 349 }
350 350
351 PhoneNumber businessphone = addr.phoneNumber( PhoneNumber::Work ); 351 PhoneNumber businessphone = addr.phoneNumber( PhoneNumber::Work );
352 if (!businessphone.number().isEmpty()) 352 if (!businessphone.number().isEmpty())
353 database->writeField(ZdbAdrs::BusinessPhone, businessphone.number()); 353 database->writeField(ZdbAdrs::BusinessPhone, businessphone.number());
354 354
355 PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ); 355 PhoneNumber businessfax = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax );
356 if (!businessfax.number().isEmpty()) 356 if (!businessfax.number().isEmpty())
357 database->writeField(ZdbAdrs::BusinessFax, businessfax.number()); 357 database->writeField(ZdbAdrs::BusinessFax, businessfax.number());
358 358
359 PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell ); 359 PhoneNumber businessmobile = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Cell );
360 if (!businessmobile.number().isEmpty()) { 360 if (!businessmobile.number().isEmpty()) {
361 cellWork = true; 361 cellWork = true;
362 database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number()); 362 database->writeField(ZdbAdrs::BusinessMobile, businessmobile.number());
363 } 363 }
364 PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell ); 364 PhoneNumber mobile = addr.phoneNumber( PhoneNumber::Cell );
365 if (! mobile.number().isEmpty()) { 365 if (! mobile.number().isEmpty()) {
366 if ( ! cellHome ) 366 if ( ! cellHome )
367 database->writeField(ZdbAdrs::HomeMobile, mobile.number()); 367 database->writeField(ZdbAdrs::HomeMobile, mobile.number());
368 else if (! cellWork ) 368 else if (! cellWork )
369 database->writeField(ZdbAdrs::BusinessMobile, mobile.number()); 369 database->writeField(ZdbAdrs::BusinessMobile, mobile.number());
370 } 370 }
371 371
372 PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager ); 372 PhoneNumber businesspager = addr.phoneNumber( PhoneNumber::Work | PhoneNumber::Pager );
373 if (!businesspager.number().isEmpty()) 373 if (!businesspager.number().isEmpty())
374 database->writeField(ZdbAdrs::BusinessPager, businesspager.number()); 374 database->writeField(ZdbAdrs::BusinessPager, businesspager.number());
375 375
376 database->writeField(ZdbAdrs::JobTitle, addr.role()); 376 database->writeField(ZdbAdrs::JobTitle, addr.role());
377 database->writeField(ZdbAdrs::Company, addr.organization()); 377 database->writeField(ZdbAdrs::Company, addr.organization());
378 378
379 database->writeField(ZdbAdrs::Profession, addr.custom( "KADDRESSBOOK", "X-Profession" )); 379 database->writeField(ZdbAdrs::Profession, addr.custom( "KADDRESSBOOK", "X-Profession" ));
380 database->writeField(ZdbAdrs::Assistant, addr.custom( "KADDRESSBOOK", "X-AssistantsName" )); 380 database->writeField(ZdbAdrs::Assistant, addr.custom( "KADDRESSBOOK", "X-AssistantsName" ));
381 database->writeField(ZdbAdrs::Department, addr.custom( "KADDRESSBOOK", "X-Department" )); 381 database->writeField(ZdbAdrs::Department, addr.custom( "KADDRESSBOOK", "X-Department" ));
382 database->writeField(ZdbAdrs::Manager, addr.custom( "KADDRESSBOOK", "X-ManagersName" )); 382 database->writeField(ZdbAdrs::Manager, addr.custom( "KADDRESSBOOK", "X-ManagersName" ));
383 database->writeField(ZdbAdrs::Office, addr.custom( "KADDRESSBOOK", "X-Office" )); 383 database->writeField(ZdbAdrs::Office, addr.custom( "KADDRESSBOOK", "X-Office" ));
384 384
385 //personal 385 //personal
386 database->writeField(ZdbAdrs::Spouse, addr.custom( "KADDRESSBOOK", "X-Spouse" )); 386 database->writeField(ZdbAdrs::Spouse, addr.custom( "KADDRESSBOOK", "X-Spouse" ));
387 387
388 QString gt = addr.custom( "KADDRESSBOOK", "X-Gender" ); 388 QString gt = addr.custom( "KADDRESSBOOK", "X-Gender" );
389 //qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1()); 389 //qDebug("SharpDTMConverter::addresseeToSharp please check that gender works!! : Gender: %s", gt.latin1());
390 //qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?"); 390 //qDebug("SharpDTMConverter::addresseeToSharp: may be writeField(\"ZdbAdrs::Gender\", ushort) is here better suited?");
391 //qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee"); 391 //qDebug("SharpDTMConverter::addresseeToSharp: check also the reverse functionality in sharpToAddressee");
392 if (gt == "male") 392 if (gt == "male")
393 database->writeField(ZdbAdrs::Gender, "male"); 393 database->writeField(ZdbAdrs::Gender, "male");
394 else if (gt == "female") 394 else if (gt == "female")
395 database->writeField(ZdbAdrs::Gender, "female"); 395 database->writeField(ZdbAdrs::Gender, "female");
396 else 396 else
397 database->writeField(ZdbAdrs::Gender, ""); 397 database->writeField(ZdbAdrs::Gender, "");
398 398
399 399
400 QDate dt = KGlobal::locale()->readDate( 400 QDate dt = KGlobal::locale()->readDate(
401 addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate 401 addr.custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); // = Qt::ISODate
402 if ( dt.isValid() ) { 402 if ( dt.isValid() ) {
403 QString dateS = KGlobal::locale()->formatDate(dt, true ); 403 QString dateS = KGlobal::locale()->formatDate(dt, true );
404 database->writeField(ZdbAdrs::Anniversary, dateS ); 404 database->writeField(ZdbAdrs::Anniversary, dateS );
405 } 405 }
406 database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" )); 406 database->writeField(ZdbAdrs::Children, addr.custom( "KADDRESSBOOK", "X-Children" ));
407 dt = addr.birthday().date(); 407 dt = addr.birthday().date();
408 if ( dt.isValid() ) { 408 if ( dt.isValid() ) {
409 QString dateS = KGlobal::locale()->formatDate(dt, true ); 409 QString dateS = KGlobal::locale()->formatDate(dt, true );
410 database->writeField(ZdbAdrs::Birthday, dateS); 410 database->writeField(ZdbAdrs::Birthday, dateS);
411 } 411 }
412 database->writeField(ZdbAdrs::Nickname, addr.nickName()); 412 database->writeField(ZdbAdrs::Nickname, addr.nickName());
413 413
414 // other 414 // other
415 database->writeField(ZdbAdrs::Notes, addr.note()); 415 database->writeField(ZdbAdrs::Notes, addr.note());
416 416
417//US QString groups() const { return find( Qtopia::Groups ); } 417//US QString groups() const { return find( Qtopia::Groups ); }
418//US QStringList groupList() const; 418//US QStringList groupList() const;
419 419
420 420
421 //qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works"); 421 //qDebug("SharpDTMConverter::addresseeToSharp please check if category transformation works");
422 422
423 QStringList cats = addr.categories(); 423 QStringList cats = addr.categories();
424 int ii; 424 int ii;
425 for ( ii = 0; ii < cats.count() ;++ii ) { 425 for ( ii = 0; ii < cats.count() ;++ii ) {
426 if ( !catDB->exists( cats[ii] )) 426 if ( !catDB->exists( cats[ii] ))
427 catDB->addCategory(cats[ii]); 427 catDB->addCategory(cats[ii]);
428 } 428 }
429 QArray<int> iar; 429 QArray<int> iar;
430 if ( !cats.isEmpty() ) { 430 if ( !cats.isEmpty() ) {
431 QArray<int> iar = catDB->ids(cats); 431 QArray<int> iar = catDB->ids(cats);
432 qDebug("***cat count is %d ", iar.count()); 432 //qDebug("***cat count is %d ", iar.count());
433 database->updateCategories(contact, iar); 433 database->updateCategories(contact, iar);
434 } 434 }
435 435
436 return true; 436 return true;
437} 437}
438 438
439QDate SharpDTMConverter::convertDate( QString s) 439QDate SharpDTMConverter::convertDate( QString s)
440{ 440{
441 QDate dt = KGlobal::locale()->readDate( s ); 441 QDate dt = KGlobal::locale()->readDate( s );
442 return dt; 442 return dt;
443 return QDate (); 443 return QDate ();
444} 444}