예제 #1
0
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;
}
예제 #2
0
Addressee::List
vCardsAsAddresseeList()
{
    Addressee::List l;

    l.append( vcard1() );
    l.append( vcard2() );
    l.append( vcard3() );

    return l;
}
예제 #3
0
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;
}
예제 #4
0
QString VCardConverter::createVCard( const Addressee &addr, Version version )
{
    Addressee::List list;
    list.append( addr );

    return createVCards( list, version );
}
예제 #5
0
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;
}
예제 #6
0
void VCardFormat::save( const Addressee &addressee, QFile *file )
{
  VCardConverter converter;
  Addressee::List vcardlist;

  vcardlist.append( addressee );

  QByteArray data = converter.createVCards( vcardlist );

  file->write( data );
}
예제 #7
0
Addressee::List AddressBook::allAddressees() const
{
  Addressee::List list;

  ConstIterator it;
  for ( it = begin(); it != end(); ++it ) {
    list.append( *it );
  }

  return list;
}
예제 #8
0
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;
}
예제 #9
0
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;
}
예제 #10
0
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 );
}
예제 #11
0
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;
}
예제 #12
0
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;
}