-rw-r--r-- | kabc/plugins/sharpdtm/resourcesharpdtm.cpp | 242 |
1 files changed, 129 insertions, 113 deletions
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp index 48b7d91..7069f5d 100644 --- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp +++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp @@ -72,25 +72,35 @@ ResourceSharpDTM::ResourceSharpDTM( const KConfig *config ) init( fileName ); } ResourceSharpDTM::ResourceSharpDTM( const QString &fileName ) : Resource( 0 ) { mAccess = 0; init( fileName ); } void ResourceSharpDTM::init( const QString &fileName ) { - setFileName( fileName ); + if (mConverter == 0) { + mConverter = new SharpDTMConverter(); + bool res = mConverter->init(); + if ( !res ) + { + QString msg("Unable to initialize sharp converter. Most likely a problem with the category file"); + qDebug(msg); + return; + } + } + setFileName( fileName ); } ResourceSharpDTM::~ResourceSharpDTM() { if (mConverter != 0) delete mConverter; if(mAccess != 0) delete mAccess; } void ResourceSharpDTM::writeConfig( KConfig *config ) @@ -100,186 +110,192 @@ void ResourceSharpDTM::writeConfig( KConfig *config ) Ticket *ResourceSharpDTM::requestSaveTicket() { qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1()); if ( !addressBook() ) return 0; return createTicket( this ); } bool ResourceSharpDTM::doOpen() -{ - qDebug("%xResourceSharpDTM::doOpen: %s", this,fileName().latin1()); - - if ( ! mAccess ) { - // the last parameter in the SlZDataBase constructor means "readonly" - mAccess = new SlZDataBase(fileName(), - SlZDataBase::addressbookItems(), - NULL, false); - } - if ( !mAccess ) { - qDebug("Unable to load file() %s", fileName().latin1()); +{ + if (!mConverter) return false; - } - if (mConverter == 0) { - mConverter = new SharpDTMConverter(); - bool res = mConverter->init(); - if ( !res ) - { - QString msg("Unable to initialize sharp converter. Most likely a problem with the category file"); - qDebug(msg); - delete mAccess; - mAccess = 0; - return false; - } - } return true; } void ResourceSharpDTM::doClose() { return; } bool ResourceSharpDTM::load() { + if (!mConverter) + return false; + QString fileN = SlZDataBase::addressbookFileName(); + if ( ! mAccess ) { + mAccess = new SlZDataBase(fileN, + SlZDataBase::addressbookItems(), + 0, false); + } + if(mAccess == 0) + return false; + qDebug("%xResourceSharpDTM::load: %s",this, fileName().latin1()); bool res = false; CardId id; for (bool res=mAccess->first(); res == true; res=mAccess->next()) { id = mAccess->cardId(); KABC::Addressee addressee; res = mConverter->sharpToAddressee( id, mAccess, addressee ); if ( !addressee.isEmpty() && res ) { addressee.setResource( this ); addressBook()->insertAddressee( addressee ); } } + if(mAccess != 0) + delete mAccess; + mAccess = 0; + return true; } bool ResourceSharpDTM::save( Ticket *ticket ) -{ - qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); - KABC::AddressBook::Iterator it; - bool res; - KABC::Addressee::List changedAddressees; - typedef QMap<int,QString> AddresseeMap; - AddresseeMap map; - CardId id ; - for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { - - if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { - QString uid = (*it).originalExternalUID(); - bool res; - if ( uid.isEmpty() ) - id = 0; - else - id = uid.toUInt(); - KABC::Addressee addressee = (*it); - if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { - res = mAccess->startEditCard(id); - if (res == true) - { - res = mConverter->addresseeToSharp( (*it), mAccess, id ); - if (res == true) - { - res = mAccess->finishEditCard(&id);; - map.insert(id,(*it).uid()); - if (res == false) - qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); +{ + if (!mConverter) + return false; + QString fileN = SlZDataBase::addressbookFileName(); + if ( ! mAccess ) { + mAccess = new SlZDataBase(fileN, + SlZDataBase::addressbookItems(), + 0, false); + } + if(mAccess == 0) + return false; + qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); + KABC::AddressBook::Iterator it; + bool res; + KABC::Addressee::List changedAddressees; + typedef QMap<int,QString> AddresseeMap; + AddresseeMap map; + CardId id ; + for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { + + if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { + QString uid = (*it).originalExternalUID(); + bool res; + if ( uid.isEmpty() ) + id = 0; + else + id = uid.toUInt(); + KABC::Addressee addressee = (*it); + if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { + res = mAccess->startEditCard(id); + if (res == true) + { + res = mConverter->addresseeToSharp( (*it), mAccess, id ); + if (res == true) + { + res = mAccess->finishEditCard(&id);; + map.insert(id,(*it).uid()); + if (res == false) + qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); - } - else - { - qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); - mAccess->cancelEditCard(); - } - } - - } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { - res = mAccess->deleteCard(&id); - if ( !res ) - qDebug("delete error "); - - - } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { - //changed - res = mAccess->startEditCard(id); - if (res == true) - { - res = mConverter->addresseeToSharp( (*it), mAccess, id ); - if (res == true) - { - res = mAccess->finishEditCard(&id); - map.insert(id,(*it).uid()); - if (res == false) - qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); - } - else - { - qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); - mAccess->cancelEditCard(); - } - } - } - } + } + else + { + qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); + mAccess->cancelEditCard(); + } + } + + } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { + res = mAccess->deleteCard(&id); + if ( !res ) + qDebug("delete error "); + + + } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { + //changed + res = mAccess->startEditCard(id); + if (res == true) + { + res = mConverter->addresseeToSharp( (*it), mAccess, id ); + if (res == true) + { + res = mAccess->finishEditCard(&id); + map.insert(id,(*it).uid()); + if (res == false) + qDebug("Unable to append Contact: %s", addressee.formattedName().latin1()); + } + else + { + qDebug("Unable to convert Addressee: %s", addressee.formattedName().latin1()); + mAccess->cancelEditCard(); + } + } + } + } - } - AddresseeMap::Iterator itam; - for ( res=mAccess->first(); res == true; res=mAccess->next()) - { - id = mAccess->cardId(); - int idint = id; - itam = map.find( idint ); - if ( itam != map.end() ) { - KABC::Addressee addressee; - res = mConverter->sharpToAddressee( id, mAccess, addressee ); - - if ( !addressee.isEmpty() && res ) - { - addressee.setResource( this ); - addressee.setUid( itam.data() ); - addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); - addressBook()->insertAddressee( addressee , false ); - } - } - } - delete ticket; - - return true; + } + AddresseeMap::Iterator itam; + for ( res=mAccess->first(); res == true; res=mAccess->next()) + { + id = mAccess->cardId(); + int idint = id; + itam = map.find( idint ); + if ( itam != map.end() ) { + KABC::Addressee addressee; + res = mConverter->sharpToAddressee( id, mAccess, addressee ); + + if ( !addressee.isEmpty() && res ) + { + addressee.setResource( this ); + addressee.setUid( itam.data() ); + addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); + addressBook()->insertAddressee( addressee , false ); + } + } + } + delete ticket; + if(mAccess != 0) + delete mAccess; + mAccess = 0; + return true; } bool ResourceSharpDTM::lock( const QString &lockfileName ) { + return true; } void ResourceSharpDTM::unlock( const QString &fileName ) { } void ResourceSharpDTM::setFileName( const QString &newFileName ) { Resource::setFileName( newFileName ); } void ResourceSharpDTM::fileChanged() { } void ResourceSharpDTM::removeAddressee( const Addressee &addr ) { } void ResourceSharpDTM::cleanUp() { - unlock( fileName() ); + } |