QString NameEditDialog::formattedName( const KABC::Addressee &addr, int type ) { QString name; switch ( type ) { case SimpleName: name = addr.givenName() + " " + addr.familyName(); break; case FullName: name = addr.assembledName(); break; case ReverseNameWithComma: name = addr.familyName() + ", " + addr.givenName(); break; case ReverseName: name = addr.familyName() + " " + addr.givenName(); break; case Organization: name = addr.organization(); break; default: name = ""; break; } return name.simplifyWhiteSpace(); }
bool KABCHandler::hasNameMatch(const KABC::Addressee& contact, const QString& name) { if (contact.assembledName().lower().find(name) != -1) return true; if (contact.formattedName().lower().find(name) != -1) return true; return false; }
void NameEditWidget::loadContact( const KABC::Addressee &contact ) { mContact = contact; disconnect( mNameEdit, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)) ); mNameEdit->setText( contact.assembledName() ); connect( mNameEdit, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)) ); }
// Tries to guess the display type that is used for the passed contact static DisplayNameEditWidget::DisplayType guessedDisplayType( const KABC::Addressee &contact ) { if ( contact.formattedName() == ( contact.givenName() + QLatin1Char( ' ' ) + contact.familyName() ) ) { return DisplayNameEditWidget::SimpleName; } else if ( contact.formattedName() == contact.assembledName() ) { return DisplayNameEditWidget::FullName; } else if ( contact.formattedName() == ( contact.familyName() + QLatin1String( ", " ) + contact.givenName() ) ) { return DisplayNameEditWidget::ReverseNameWithComma; } else if ( contact.formattedName() == ( contact.familyName() + QLatin1Char( ' ' ) + contact.givenName() ) ) { return DisplayNameEditWidget::ReverseName; } else if ( contact.formattedName() == contact.organization() ) { return DisplayNameEditWidget::Organization; } else { return DisplayNameEditWidget::CustomName; } }
bool TemplateInterface::expandMacros( QMap<QString, QString> &map, QWidget *parentWindow ) { KABC::StdAddressBook *addrBook = 0; KABC::Addressee userAddress; QDateTime datetime = QDateTime::currentDateTime(); QDate date = datetime.date(); QTime time = datetime.time(); QMap<QString,QString>::Iterator it; for ( it = map.begin(); it != map.end(); ++it ) { QString placeholder = it.key(); if ( map[ placeholder ].isEmpty() ) { if ( placeholder == "index" ) map[ placeholder ] = "i"; else if ( placeholder == "loginname" ) {} else if ( placeholder == "firstname" ) { INITKABC; if ( !userAddress.isEmpty() ) map[ placeholder ] = userAddress.givenName(); } else if ( placeholder == "lastname" ) { INITKABC; if ( !userAddress.isEmpty() ) map[ placeholder ] = userAddress.familyName(); } else if ( placeholder == "fullname" ) { INITKABC; if ( !userAddress.isEmpty() ) map[ placeholder ] = userAddress.assembledName(); } else if ( placeholder == "email" ) { INITKABC; if ( !userAddress.isEmpty() ) map[ placeholder ] = userAddress.preferredEmail(); } else if ( placeholder == "date" ) { map[ placeholder ] = KGlobal::locale() ->formatDate( date, true ); } else if ( placeholder == "time" ) { map[ placeholder ] = KGlobal::locale() ->formatTime( time, true, false ); } else if ( placeholder == "year" ) { map[ placeholder ] = KGlobal::locale() ->calendar() ->yearString( date, false ); } else if ( placeholder == "month" ) { map[ placeholder ] = QString::number( KGlobal::locale() ->calendar() ->month( date ) ); } else if ( placeholder == "day" ) { map[ placeholder ] = QString::number( KGlobal::locale() ->calendar() ->day( date ) ); } else if ( placeholder == "hostname" ) { char hostname[ 256 ]; hostname[ 0 ] = 0; gethostname( hostname, 255 ); hostname[ 255 ] = 0; map[ placeholder ] = QString::fromLocal8Bit( hostname ); } else if ( placeholder == "cursor" ) { map[ placeholder ] = "|"; } else map[ placeholder ] = placeholder; } } return true; }
QString Contact::toXml(const KABC::Addressee &addr) { /** * Handle distribution lists. */ if(KPIM::DistributionList::isDistributionList(addr)) { if(s_distListMap) return (*s_distListMap)[ addr.uid() ]; else return QString(); } /** * Handle normal contacts. */ QString xml; xml += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; xml += "<contact>\n"; xml += "<direct_ref>" + addr.uid() + "</direct_ref>\n"; xml += "<sensitivity>" + custom("sensitivity", addr, "0") + "</sensitivity>\n"; xml += "<message_class>IPM.Contact</message_class>\n"; xml += "<is_recurring>" + custom("is_recurring", addr, "false") + "</is_recurring>\n"; xml += "<reminder_set>" + custom("reminder_set", addr, "false") + "</reminder_set>\n"; xml += "<send_rich_info>" + custom("send_rich_info", addr, "false") + "</send_rich_info>\n"; xml += "<subject>" + addr.formattedName() + "</subject>\n"; xml += "<last_modification_time>" + addr.revision().toString(Qt::ISODate) + "</last_modification_time>\n"; xml += "<display_name_prefix>" + addr.prefix() + "</display_name_prefix>\n"; xml += "<first_name>" + addr.givenName() + "</first_name>\n"; xml += "<middle_name>" + addr.additionalName() + "</middle_name>\n"; xml += "<last_name>" + addr.familyName() + "</last_name>\n"; xml += "<suffix>" + addr.suffix() + "</suffix>\n"; xml += "<display_name>" + addr.assembledName() + "</display_name>\n"; xml += "<file_as>" + addr.formattedName() + "</file_as>\n"; xml += "<nickname>" + addr.nickName() + "</nickname>\n"; xml += "<web_page_address>" + addr.url().url() + "</web_page_address>\n"; xml += "<company_name>" + addr.organization() + "</company_name>\n"; xml += "<job_title>" + addr.title() + "</job_title>\n"; QStringList emails = addr.emails(); for(uint i = 0; i < 3; ++i) { QString type, address, comment, display; if(i < emails.count()) { type = "SMTP"; address = emails[ i ]; /** * If the contact was created by kontact use the email address as * display name and the formatted name as comment, otherwise we use * the values from the server. */ if(custom("comes_from_scalix", addr) != "true") { comment = addr.formattedName(); display = emails[ i ]; } else { comment = custom(QString("email%1_address_with_comment").arg(i + 1), addr); display = custom(QString("email%1_display_name").arg(i + 1), addr); } } xml += QString("<email%1_address_type>").arg(i + 1) + type + QString("</email%1_address_type>").arg(i + 1) + "\n"; xml += QString("<email%1_address>").arg(i + 1) + address + QString("</email%1_address>").arg(i + 1) + "\n"; xml += QString("<email%1_address_with_comment>").arg(i + 1) + comment + QString("</email%1_address_with_comment>").arg(i + 1) + "\n"; xml += QString("<email%1_display_name>").arg(i + 1) + display + QString("</email%1_display_name>").arg(i + 1) + "\n"; } KABC::PhoneNumber phone = addr.phoneNumber(KABC::PhoneNumber::Home); xml += "<home_phone_number>" + phone.number() + "</home_phone_number>\n"; phone = addr.phoneNumber(KABC::PhoneNumber::Work); xml += "<work_phone_number>" + phone.number() + "</work_phone_number>\n"; phone = addr.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax); xml += "<work_fax_number>" + phone.number() + "</work_fax_number>\n"; phone = addr.phoneNumber(KABC::PhoneNumber::Cell); xml += "<mobile_phone_number>" + phone.number() + "</mobile_phone_number>\n"; const KABC::Address workAddress = addr.address(KABC::Address::Work); xml += "<work_address_street>" + workAddress.street() + "</work_address_street>\n"; xml += "<work_address_zip>" + workAddress.postalCode() + "</work_address_zip>\n"; xml += "<work_address_city>" + workAddress.locality() + "</work_address_city>\n"; xml += "<work_address_state>" + workAddress.region() + "</work_address_state>\n"; xml += "<work_address_country>" + workAddress.country() + "</work_address_country>\n"; const KABC::Address homeAddress = addr.address(KABC::Address::Home); xml += "<home_address_street>" + homeAddress.street() + "</home_address_street>\n"; xml += "<home_address_zip>" + homeAddress.postalCode() + "</home_address_zip>\n"; xml += "<home_address_city>" + homeAddress.locality() + "</home_address_city>\n"; xml += "<home_address_state>" + homeAddress.region() + "</home_address_state>\n"; xml += "<home_address_country>" + homeAddress.country() + "</home_address_country>\n"; const KABC::Address otherAddress = addr.address(KABC::Address::Dom); xml += "<other_address_street>" + otherAddress.street() + "</other_address_street>\n"; xml += "<other_address_zip>" + otherAddress.postalCode() + "</other_address_zip>\n"; xml += "<other_address_city>" + otherAddress.locality() + "</other_address_city>\n"; xml += "<other_address_state>" + otherAddress.region() + "</other_address_state>\n"; xml += "<other_address_country>" + otherAddress.country() + "</other_address_country>\n"; if(homeAddress.type() & KABC::Address::Pref) xml += "<selected_mailing_address>1</selected_mailing_address>\n"; else if(workAddress.type() & KABC::Address::Pref) xml += "<selected_mailing_address>2</selected_mailing_address>\n"; else if(otherAddress.type() & KABC::Address::Pref) xml += "<selected_mailing_address>3</selected_mailing_address>\n"; xml += "<im_address>" + addr.custom("KADDRESSBOOK", "X-IMAddress") + "</im_address>\n"; xml += "<manager>" + addr.custom("KADDRESSBOOK", "X-ManagersName") + "</manager>\n"; xml += "<department>" + addr.custom("KADDRESSBOOK", "X-Department") + "</department>\n"; xml += "<assistant>" + addr.custom("KADDRESSBOOK", "X-AssistantsName") + "</assistant>\n"; xml += "<profession>" + addr.custom("KADDRESSBOOK", "X-Profession") + "</profession>\n"; xml += "<office_location>" + addr.custom("KADDRESSBOOK", "X-Office") + "</office_location>\n"; xml += "<spouse>" + addr.custom("KADDRESSBOOK", "X-SpousesName") + "</spouse>\n"; xml += "<bday>" + addr.birthday().toString(Qt::ISODate) + "</bday>\n"; xml += "<anniversary>" + addr.custom("KADDRESSBOOK", "X-Anniversary") + "</anniversary>\n"; xml += "<mapi_charset>" + custom("mapi_charset", addr, "UTF8") + "</mapi_charset>"; xml += "</contact>\n"; return xml; }
//----------------------------------------------------------------------------- void KAddrBookExternal::addEmail(const QString &addr, QWidget *parent) { QString email; QString name; KABC::Addressee::parseEmailAddress(addr, name, email); KABC::AddressBook *ab = KABC::StdAddressBook::self(true); ab->setErrorHandler(new KABC::GuiErrorHandler(parent)); // force a reload of the address book file so that changes that were made // by other programs are loaded ab->asyncLoad(); // if we have to reload the address book then we should also wait until // it's completely reloaded #if KDE_IS_VERSION(3,4,89) // This ugly hack will be removed in 4.0 while(!ab->loadingHasFinished()) { QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput); // use sleep here to reduce cpu usage usleep(100); } #endif KABC::Addressee::List addressees = ab->findByEmail(email); if(addressees.isEmpty()) { KABC::Addressee a; a.setNameFromString(name); a.insertEmail(email, true); { KConfig config("kaddressbookrc"); config.setGroup("General"); int type = config.readNumEntry("FormattedNameType", 1); QString name; switch(type) { case 1: name = a.givenName() + " " + a.familyName(); break; case 2: name = a.assembledName(); break; case 3: name = a.familyName() + ", " + a.givenName(); break; case 4: name = a.familyName() + " " + a.givenName(); break; case 5: name = a.organization(); break; default: name = ""; break; } name.simplifyWhiteSpace(); a.setFormattedName(name); } if(KAddrBookExternal::addAddressee(a)) { QString text = i18n("<qt>The email address <b>%1</b> was added to your " "addressbook; you can add more information to this " "entry by opening the addressbook.</qt>").arg(addr); KMessageBox::information(parent, text, QString::null, "addedtokabc"); } } else { QString text = i18n("<qt>The email address <b>%1</b> is already in your " "addressbook.</qt>").arg(addr); KMessageBox::information(parent, text, QString::null, "alreadyInAddressBook"); } ab->setErrorHandler(0); }