void FritzBoxPhoneBook::attach(const KABC::Addressee::List contacts) { KABC::Addressee::List::const_iterator contactI = contacts.begin(); for ( ; contactI != contacts.end(); contactI++) { // kDebug() << "Now are " // << m_Contacts.size() // << " Contacts in List "; // If a Name has 3 work numbers or 5 Phones it is necessary to generate // 2 or more entrys of the same name eg "Björn Lässig (2)" int count = 1; // counts the necessary doubled Names FritzBoxPhoneBookContact fbContact(contactI->formattedName().simplified()); KABC::PhoneNumber::List phoneNumbers = contactI->phoneNumbers(); KABC::PhoneNumber::List::const_iterator phoneNumber = phoneNumbers.begin(); for (; phoneNumber != phoneNumbers.end(); phoneNumber++) { FritzBoxPhoneNumber fbNumber(phoneNumber->number().simplified()); if ( phoneNumber->type() & KABC::PhoneNumber::Fax ) continue; if ( phoneNumber->type() & KABC::PhoneNumber::Cell ) fbNumber.setType(FritzBoxPhoneNumber::Mobile); if ( phoneNumber->type() & KABC::PhoneNumber::Home ) fbNumber.setType(FritzBoxPhoneNumber::Home); if ( phoneNumber->type() & KABC::PhoneNumber::Work ) fbNumber.setType(FritzBoxPhoneNumber::Work); // yes there is a bug, a number can have more than one Flag // @TODO find best numberType forthe label bool hasAdded = fbContact.addNumber(fbNumber); if (! hasAdded) { m_Contacts.addContact(fbContact); QString newName = contactI->formattedName().simplified() + " " + QString().number(count); count++; fbContact = FritzBoxPhoneBookContact(newName); hasAdded = fbContact.addNumber(fbNumber); if (! hasAdded) kDebug() << "something really wicked happened"; } } m_Contacts.addContact(fbContact); } }
void t_address_finder::find_address(t_user *user_config, const t_url &u) { if (u == last_url) return; last_url = u; last_name.clear(); last_photo = QImage(); #ifdef HAVE_KDE for (KABC::AddressBook::Iterator i = abook->begin(); i != abook->end(); i++) { // Normalize url using number conversion rules t_url u_normalized(u); u_normalized.apply_conversion_rules(user_config); KABC::PhoneNumber::List phoneNrs = i->phoneNumbers(); for (KABC::PhoneNumber::List::iterator j = phoneNrs.begin(); j != phoneNrs.end(); j++) { QString phone = (*j).number(); string full_address = ui->expand_destination( user_config, phone.ascii(), u_normalized.get_scheme()); t_url url_phone(full_address); if (!url_phone.is_valid()) continue; if (u_normalized.user_host_match(url_phone, user_config->get_remove_special_phone_symbols(), user_config->get_special_phone_symbols())) { last_name = i->realName().ascii(); last_photo = i->photo().data(); last_photo.detach(); // avoid sharing of QImage with kabc return; } } } #endif }
void AddresseeEditorWidget::save() { if ( !mDirty ) return; mAddressee.setRole( mRoleEdit->text() ); mAddressee.setOrganization( mOrgEdit->text() ); #if KDE_IS_VERSION(3,5,8) mAddressee.setDepartment( mDepartmentEdit->text() ); #else if ( !mDepartmentEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-Department", mDepartmentEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-Department" ); #endif QString homepage = mURLEdit->text().stripWhiteSpace(); if ( homepage.isEmpty() ) mAddressee.setUrl( KURL() ); else { if( !homepage.startsWith("http") ) homepage = "http://" + homepage; mAddressee.setUrl( KURL( homepage ) ); } if ( !mBlogEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "BlogFeed", mBlogEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "BlogFeed" ); mAddressee.setNote( mNoteEdit->text() ); if ( mBirthdayPicker->date().isValid() ) mAddressee.setBirthday( QDateTime( mBirthdayPicker->date() ) ); else mAddressee.setBirthday( QDateTime() ); mAddressee.setNickName( mNicknameEdit->text() ); mAddressee.setCategories( QStringList::split( ",", mCategoryEdit->text() ) ); mAddressee.setSecrecy( mSecrecyWidget->secrecy() ); // save custom fields if ( !mIMWidget->preferredIM().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", mIMWidget->preferredIM() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-IMAddress" ); if ( !mSpouseEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", mSpouseEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-SpousesName" ); if ( !mManagerEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", mManagerEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-ManagersName" ); if ( !mAssistantEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", mAssistantEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-AssistantsName" ); if ( !mOfficeEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-Office", mOfficeEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-Office" ); if ( !mProfessionEdit->text().isEmpty() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-Profession", mProfessionEdit->text() ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-Profession" ); if ( mAnniversaryPicker->date().isValid() ) mAddressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", mAnniversaryPicker->date().toString( Qt::ISODate ) ); else mAddressee.removeCustom( "KADDRESSBOOK", "X-Anniversary" ); mAddressee.setTitle( mTitleEdit->text() ); // Save the email addresses mAddressee.setEmails( mEmailWidget->emails() ); // Save the phone numbers KABC::PhoneNumber::List phoneNumbers; KABC::PhoneNumber::List::ConstIterator phoneIter; phoneNumbers = mAddressee.phoneNumbers(); for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); ++phoneIter ) mAddressee.removePhoneNumber( *phoneIter ); phoneNumbers = mPhoneEditWidget->phoneNumbers(); for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); ++phoneIter ) mAddressee.insertPhoneNumber( *phoneIter ); // Save the addresses KABC::Address::List addresses; KABC::Address::List::ConstIterator addressIter; addresses = mAddressee.addresses(); for ( addressIter = addresses.begin(); addressIter != addresses.end(); ++addressIter ) mAddressee.removeAddress( *addressIter ); addresses = mAddressEditWidget->addresses(); for ( addressIter = addresses.begin(); addressIter != addresses.end(); ++addressIter ) mAddressee.insertAddress( *addressIter ); QDictIterator<ContactEditorTabPage> it( mTabPages ); for ( ; it.current(); ++it ) it.current()->storeContact( &mAddressee ); mDirty = false; }
KABC::AddresseeList VCardXXPort::filterContacts( const KABC::AddresseeList &addrList ) { KABC::AddresseeList list; if ( addrList.isEmpty() ) return addrList; VCardExportSelectionDialog dlg( parentWidget() ); if ( !dlg.exec() ) return list; KABC::AddresseeList::ConstIterator it; for ( it = addrList.begin(); it != addrList.end(); ++it ) { KABC::Addressee addr; addr.setUid( (*it).uid() ); addr.setFormattedName( (*it).formattedName() ); addr.setPrefix( (*it).prefix() ); addr.setGivenName( (*it).givenName() ); addr.setAdditionalName( (*it).additionalName() ); addr.setFamilyName( (*it).familyName() ); addr.setSuffix( (*it).suffix() ); addr.setNickName( (*it).nickName() ); addr.setMailer( (*it).mailer() ); addr.setTimeZone( (*it).timeZone() ); addr.setGeo( (*it).geo() ); addr.setProductId( (*it).productId() ); addr.setSortString( (*it).sortString() ); addr.setUrl( (*it).url() ); addr.setSecrecy( (*it).secrecy() ); addr.setSound( (*it).sound() ); addr.setEmails( (*it).emails() ); addr.setCategories( (*it).categories() ); if ( dlg.exportPrivateFields() ) { addr.setBirthday( (*it).birthday() ); addr.setNote( (*it).note() ); addr.setPhoto( (*it).photo() ); } if ( dlg.exportBusinessFields() ) { addr.setTitle( (*it).title() ); addr.setRole( (*it).role() ); addr.setOrganization( (*it).organization() ); addr.setLogo( (*it).logo() ); KABC::PhoneNumber::List phones = (*it).phoneNumbers( KABC::PhoneNumber::Work ); KABC::PhoneNumber::List::Iterator phoneIt; for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) addr.insertPhoneNumber( *phoneIt ); KABC::Address::List addresses = (*it).addresses( KABC::Address::Work ); KABC::Address::List::Iterator addrIt; for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) addr.insertAddress( *addrIt ); } KABC::PhoneNumber::List phones = (*it).phoneNumbers(); KABC::PhoneNumber::List::Iterator phoneIt; for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { int type = (*phoneIt).type(); if ( type & KABC::PhoneNumber::Home && dlg.exportPrivateFields() ) addr.insertPhoneNumber( *phoneIt ); else if ( type & KABC::PhoneNumber::Work && dlg.exportBusinessFields() ) addr.insertPhoneNumber( *phoneIt ); else if ( dlg.exportOtherFields() ) addr.insertPhoneNumber( *phoneIt ); } KABC::Address::List addresses = (*it).addresses(); KABC::Address::List::Iterator addrIt; for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { int type = (*addrIt).type(); if ( type & KABC::Address::Home && dlg.exportPrivateFields() ) addr.insertAddress( *addrIt ); else if ( type & KABC::Address::Work && dlg.exportBusinessFields() ) addr.insertAddress( *addrIt ); else if ( dlg.exportOtherFields() ) addr.insertAddress( *addrIt ); } if ( dlg.exportOtherFields() ) addr.setCustoms( (*it).customs() ); if ( dlg.exportEncryptionKeys() ) { addKey( addr, KABC::Key::PGP ); addKey( addr, KABC::Key::X509 ); } list.append( addr ); } return list; }