Addressee::List AddresseeDialog::addressees() { Addressee::List al; AddresseeItem *aItem = 0; if(mMultiple) { QListViewItem *item = mSelectedList->firstChild(); while(item) { aItem = dynamic_cast< AddresseeItem * >(item); if(aItem) al.append(aItem->addressee()); item = item->nextSibling(); } } else { aItem = dynamic_cast< AddresseeItem * >(mAddresseeList->selectedItem()); if(aItem) al.append(aItem->addressee()); } return al; }
Addressee::List vCardsAsAddresseeList() { Addressee::List l; l.append( vcard1() ); l.append( vcard2() ); l.append( vcard3() ); return l; }
VCardLine VCardTool::createAgent(VCard::Version version, const Agent &agent) { VCardLine line("AGENT"); if(agent.isIntern()) { if(agent.addressee() != 0) { Addressee::List list; list.append(*agent.addressee()); QString str = createVCards(list, version); str.replace("\r\n", "\\n"); str.replace(";", "\\;"); str.replace(":", "\\:"); str.replace(",", "\\,"); line.setValue(str); } } else if(!agent.url().isEmpty()) { line.setValue(agent.url()); line.addParameter("value", "URI"); } return line; }
QString VCardConverter::createVCard( const Addressee &addr, Version version ) { Addressee::List list; list.append( addr ); return createVCards( list, version ); }
bool ResourceEvolution::save(Ticket *ticket) { delete ticket; if(!m_isOpen) return false; // just delete the summary so evolution will regenerate it // on next start up (void)QFile::remove(QDir::homeDirPath() + "/evolution/local/Contacts/addressbook.db.summary"); AddressBook::Iterator it; Addressee::List list; for(it = addressBook()->begin(); it != addressBook()->end(); ++it) { if((*it).resource() != this || !(*it).changed()) continue; // remove, convert add set unchanged false list.clear(); mWrap->remove((*it).uid()); VCardTool tool; list.append((*it)); mWrap->add((*it).uid(), tool.createVCards(list, VCard::v2_1)); (*it).setChanged(false); } return true; }
void VCardFormat::save( const Addressee &addressee, QFile *file ) { VCardConverter converter; Addressee::List vcardlist; vcardlist.append( addressee ); QByteArray data = converter.createVCards( vcardlist ); file->write( data ); }
Addressee::List AddressBook::allAddressees() const { Addressee::List list; ConstIterator it; for ( it = begin(); it != end(); ++it ) { list.append( *it ); } return list; }
Addressee::List Resource::findByName( const TQString &name ) { Addressee::List results; ConstIterator it; for ( it = begin(); it != end(); ++it ) { if ( name == (*it).name() ) results.append( *it ); } return results; }
Addressee::List Resource::findByCategory( const TQString &category ) { Addressee::List results; ConstIterator it; for ( it = begin(); it != end(); ++it ) { if ( (*it).hasCategory( category) ) { results.append( *it ); } } return results; }
void VCardFormat::saveAll( AddressBook *, Resource *resource, QFile *file ) { VCardConverter converter; Addressee::List vcardlist; Resource::Iterator it; Resource::Iterator end( resource->end() ); for ( it = resource->begin(); it != end; ++it ) { ( *it ).setChanged( false ); vcardlist.append( *it ); } QByteArray data = converter.createVCards( vcardlist ); file->write( data ); }
Addressee::List Resource::findByEmail( const TQString &email ) { Addressee::List results; const TQString lowerEmail = email.lower(); ConstIterator it; for ( it = begin(); it != end(); ++it ) { const TQStringList mailList = (*it).emails(); for ( TQStringList::ConstIterator ite = mailList.begin(); ite != mailList.end(); ++ite ) { if ( lowerEmail == (*ite).lower() ) results.append( *it ); } } return results; }
Addressee::List VCardTool::parseVCards(const QString &vcard) { static const QChar semicolonSep(';'); static const QChar commaSep(','); QString identifier; Addressee::List addrList; const VCard::List vCardList = VCardParser::parseVCards(vcard); VCard::List::ConstIterator cardIt; VCard::List::ConstIterator listEnd(vCardList.end()); for(cardIt = vCardList.begin(); cardIt != listEnd; ++cardIt) { Addressee addr; const QStringList idents = (*cardIt).identifiers(); QStringList::ConstIterator identIt; QStringList::ConstIterator identEnd(idents.end()); for(identIt = idents.begin(); identIt != identEnd; ++identIt) { const VCardLine::List lines = (*cardIt).lines((*identIt)); VCardLine::List::ConstIterator lineIt; // iterate over the lines for(lineIt = lines.begin(); lineIt != lines.end(); ++lineIt) { identifier = (*lineIt).identifier().lower(); // ADR if(identifier == "adr") { Address address; const QStringList addrParts = splitString(semicolonSep, (*lineIt).value().asString()); if(addrParts.count() > 0) address.setPostOfficeBox(addrParts[0]); if(addrParts.count() > 1) address.setExtended(addrParts[1]); if(addrParts.count() > 2) address.setStreet(addrParts[2]); if(addrParts.count() > 3) address.setLocality(addrParts[3]); if(addrParts.count() > 4) address.setRegion(addrParts[4]); if(addrParts.count() > 5) address.setPostalCode(addrParts[5]); if(addrParts.count() > 6) address.setCountry(addrParts[6]); int type = 0; const QStringList types = (*lineIt).parameters("type"); for(QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) type += mAddressTypeMap[(*it).lower()]; address.setType(type); addr.insertAddress(address); } // AGENT else if(identifier == "agent") addr.setAgent(parseAgent(*lineIt)); // BDAY else if(identifier == "bday") addr.setBirthday(parseDateTime((*lineIt).value().asString())); // CATEGORIES else if(identifier == "categories") { const QStringList categories = splitString(commaSep, (*lineIt).value().asString()); addr.setCategories(categories); } // CLASS else if(identifier == "class") addr.setSecrecy(parseSecrecy(*lineIt)); // EMAIL else if(identifier == "email") { const QStringList types = (*lineIt).parameters("type"); addr.insertEmail((*lineIt).value().asString(), types.findIndex("PREF") != -1); } // FN else if(identifier == "fn") addr.setFormattedName((*lineIt).value().asString()); // GEO else if(identifier == "geo") { Geo geo; const QStringList geoParts = QStringList::split(';', (*lineIt).value().asString(), true); geo.setLatitude(geoParts[0].toFloat()); geo.setLongitude(geoParts[1].toFloat()); addr.setGeo(geo); } // KEY else if(identifier == "key") addr.insertKey(parseKey(*lineIt)); // LABEL else if(identifier == "label") { int type = 0; const QStringList types = (*lineIt).parameters("type"); for(QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) type += mAddressTypeMap[(*it).lower()]; bool available = false; KABC::Address::List addressList = addr.addresses(); KABC::Address::List::Iterator it; for(it = addressList.begin(); it != addressList.end(); ++it) { if((*it).type() == type) { (*it).setLabel((*lineIt).value().asString()); addr.insertAddress(*it); available = true; break; } } if(!available) { // a standalone LABEL tag KABC::Address address(type); address.setLabel((*lineIt).value().asString()); addr.insertAddress(address); } } // LOGO else if(identifier == "logo") addr.setLogo(parsePicture(*lineIt)); // MAILER else if(identifier == "mailer") addr.setMailer((*lineIt).value().asString()); // N else if(identifier == "n") { const QStringList nameParts = splitString(semicolonSep, (*lineIt).value().asString()); if(nameParts.count() > 0) addr.setFamilyName(nameParts[0]); if(nameParts.count() > 1) addr.setGivenName(nameParts[1]); if(nameParts.count() > 2) addr.setAdditionalName(nameParts[2]); if(nameParts.count() > 3) addr.setPrefix(nameParts[3]); if(nameParts.count() > 4) addr.setSuffix(nameParts[4]); } // NAME else if(identifier == "name") addr.setName((*lineIt).value().asString()); // NICKNAME else if(identifier == "nickname") addr.setNickName((*lineIt).value().asString()); // NOTE else if(identifier == "note") addr.setNote((*lineIt).value().asString()); // ORGANIZATION else if(identifier == "org") { const QStringList orgParts = splitString(semicolonSep, (*lineIt).value().asString()); if(orgParts.count() > 0) addr.setOrganization(orgParts[0]); if(orgParts.count() > 1) addr.setDepartment(orgParts[1]); } // PHOTO else if(identifier == "photo") addr.setPhoto(parsePicture(*lineIt)); // PROID else if(identifier == "prodid") addr.setProductId((*lineIt).value().asString()); // REV else if(identifier == "rev") addr.setRevision(parseDateTime((*lineIt).value().asString())); // ROLE else if(identifier == "role") addr.setRole((*lineIt).value().asString()); // SORT-STRING else if(identifier == "sort-string") addr.setSortString((*lineIt).value().asString()); // SOUND else if(identifier == "sound") addr.setSound(parseSound(*lineIt)); // TEL else if(identifier == "tel") { PhoneNumber phone; phone.setNumber((*lineIt).value().asString()); int type = 0; const QStringList types = (*lineIt).parameters("type"); for(QStringList::ConstIterator it = types.begin(); it != types.end(); ++it) type += mPhoneTypeMap[(*it).upper()]; phone.setType(type); addr.insertPhoneNumber(phone); } // TITLE else if(identifier == "title") addr.setTitle((*lineIt).value().asString()); // TZ else if(identifier == "tz") { TimeZone tz; const QString date = (*lineIt).value().asString(); int hours = date.mid(1, 2).toInt(); int minutes = date.mid(4, 2).toInt(); int offset = (hours * 60) + minutes; offset = offset * (date[0] == '+' ? 1 : -1); tz.setOffset(offset); addr.setTimeZone(tz); } // UID else if(identifier == "uid") addr.setUid((*lineIt).value().asString()); // URL else if(identifier == "url") addr.setUrl(KURL((*lineIt).value().asString())); // X- else if(identifier.startsWith("x-")) { const QString key = (*lineIt).identifier().mid(2); int dash = key.find("-"); addr.insertCustom(key.left(dash), key.mid(dash + 1), (*lineIt).value().asString()); } } } addrList.append(addr); } return addrList; }