void ResourceSlox::createAddresseeFields( QDomDocument &doc, QDomElement &prop, const Addressee &a ) { // choose addressbook WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->folderId() ); // person WebdavHandler::addSloxElement( this, doc, prop, fieldName( GivenName ), a.givenName() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( FamilyName ), a.familyName() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Title ), a.title() ); if ( !a.birthday().isNull() ) WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ), WebdavHandler::qDateTimeToSlox( a.birthday() ) ); else WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Role ), a.role() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Department ), a.custom( "KADDRESSBOOK", "X-Department" ) ); if ( type() == "ox" ) { // OX only fields WebdavHandler::addSloxElement( this, doc, prop, fieldName( DisplayName ), a.formattedName() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondName ), a.additionalName() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Suffix ), a.suffix() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Organization ), a.organization() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( NickName ), a.nickName() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( InstantMsg ), a.custom( "KADDRESSBOOK", "X-IMAddress" ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Office ), a.custom( "KADDRESSBOOK", "X-Office" ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Profession ), a.custom( "KADDRESSBOOK", "X-Profession" ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( ManagersName ), a.custom( "KADDRESSBOOK", "X-ManagersName" ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( AssistantsName ), a.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( SpousesName ), a.custom( "KADDRESSBOOK", "X-SpousesName" ) ); QString anniversary = a.custom( "KADDRESSBOOK", "X-Anniversary" ); if ( !anniversary.isEmpty() ) WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ), WebdavHandler::qDateTimeToSlox( QDateTime::fromString( anniversary, Qt::ISODate ).date() ) ); else WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ) ); } WebdavHandler::addSloxElement( this, doc, prop, fieldName( Url ), a.url().url() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Comment ), a.note() ); WebdavHandler::addSloxElement( this, doc, prop, fieldName( Categories ), a.categories().join( ", " ) ); // emails QStringList email_list = a.emails(); QStringList::const_iterator emails_it = email_list.begin(); if ( emails_it != email_list.end() ) WebdavHandler::addSloxElement( this, doc, prop, fieldName( PrimaryEmail ), *(emails_it++) ); if ( emails_it != email_list.end() ) WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail1 ), *(emails_it++) ); if ( emails_it != email_list.end() ) WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail2 ), *(emails_it++) ); // phone numbers PhoneNumber::List pnlist = a.phoneNumbers(); QMap<int, QStringList> pnSaveMap; if ( type() == "ox" ) pnSaveMap = mPhoneNumberOxMap; else pnSaveMap = mPhoneNumberSloxMap; for ( PhoneNumber::List::ConstIterator it = pnlist.begin() ; it != pnlist.end(); ++it ) { if ( pnSaveMap.contains( (*it).type() ) ) { QStringList l = pnSaveMap[(*it).type()]; QString fn = l.first(); l.remove( l.begin() ); if ( !l.isEmpty() ) pnSaveMap[(*it).type()] = l; else pnSaveMap.remove( (*it).type() ); WebdavHandler::addSloxElement( this, doc, prop, fn, (*it).number() ); } else kdDebug() << k_funcinfo << "Can't save phone number " << (*it).number() << " of type " << (*it).type() << endl; } // send empty fields for the remaining ohone number fields // it's not possible to delete phone numbers otherwise for ( QMap<int, QStringList>::ConstIterator it = pnSaveMap.begin(); it != pnSaveMap.end(); ++it ) { QStringList l = it.data(); for ( QStringList::ConstIterator it2 = l.begin(); it2 != l.end(); ++it2 ) WebdavHandler::addSloxElement( this, doc, prop, (*it2) ); } // write addresses createAddressFields( doc, prop, fieldName( HomePrefix ), a.address( KABC::Address::Home ) ); if ( type() == "ox" ) { createAddressFields( doc, prop, fieldName( BusinessPrefix ), a.address( KABC::Address::Work ) ); createAddressFields( doc, prop, fieldName( OtherPrefix ), a.address( 0 ) ); } }
void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCARD::VCard *v, bool intern ) { ContentLine cl; QString value; addTextValue( v, EntityName, addressee.name() ); addTextValue( v, EntityUID, addressee.uid() ); addTextValue( v, EntityFullName, addressee.formattedName() ); QStringList emails = addressee.emails(); QStringList::ConstIterator it4; for( it4 = emails.begin(); it4 != emails.end(); ++it4 ) { addTextValue( v, EntityEmail, *it4 ); } QStringList customs = addressee.customs(); QStringList::ConstIterator it5; for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) { addCustomValue( v, *it5 ); } addTextValue( v, EntityURL, addressee.url().url() ); addNValue( v, addressee ); addTextValue( v, EntityNickname, addressee.nickName() ); addTextValue( v, EntityMailer, addressee.mailer() ); addTextValue( v, EntityTitle, addressee.title() ); addTextValue( v, EntityRole, addressee.role() ); addTextValue( v, EntityOrganisation, addressee.organization() ); addTextValue( v, EntityNote, addressee.note() ); addTextValue( v, EntityProductID, addressee.productId() ); addTextValue( v, EntitySortString, addressee.sortString() ); Address::List addresses = addressee.addresses(); Address::List::ConstIterator it3; for( it3 = addresses.begin(); it3 != addresses.end(); ++it3 ) { addAddressValue( v, *it3 ); addLabelValue( v, *it3 ); } PhoneNumber::List phoneNumbers = addressee.phoneNumbers(); PhoneNumber::List::ConstIterator it2; for( it2 = phoneNumbers.begin(); it2 != phoneNumbers.end(); ++it2 ) { addTelephoneValue( v, *it2 ); } Key::List keys = addressee.keys(); Key::List::ConstIterator it6; for( it6 = keys.begin(); it6 != keys.end(); ++it6 ) { addKeyValue( v, *it6 ); } addTextValue( v, EntityCategories, addressee.categories().join(",") ); addDateValue( v, EntityBirthday, addressee.birthday().date() ); addDateTimeValue( v, EntityRevision, addressee.revision() ); addGeoValue( v, addressee.geo() ); addUTCValue( v, addressee.timeZone() ); addClassValue( v, addressee.secrecy() ); addPictureValue( v, EntityPhoto, addressee.photo(), addressee, intern ); addPictureValue( v, EntityLogo, addressee.logo(), addressee, intern ); addAgentValue( v, addressee.agent() ); addSoundValue( v, addressee.sound(), addressee, intern ); }