-rw-r--r-- | kabc/plugins/sharpdtm/resourcesharpdtm.cpp | 66 |
1 files changed, 41 insertions, 25 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 @@ -60,130 +60,143 @@ extern "C" void *init_microkabc_sharpdtm() { return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig>(); } } ResourceSharpDTM::ResourceSharpDTM( const KConfig *config ) : Resource( config ), mConverter (0) { // we can not choose the filename. Therefore use the default to display mAccess = 0; QString fileName = SlZDataBase::addressbookFileName(); init( fileName ); } ResourceSharpDTM::ResourceSharpDTM( const QString &fileName ) : Resource( 0 ) { mAccess = 0; init( fileName ); } void ResourceSharpDTM::init( const QString &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 ) { Resource::writeConfig( 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 ) { + 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) { @@ -228,58 +241,61 @@ bool ResourceSharpDTM::save( Ticket *ticket ) } } } 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() ); + } |