예제 #1
0
bool KAddrBookExternal::addVCard(const KABC::Addressee &addressee, QWidget *parent)
{
    KABC::AddressBook *ab = KABC::StdAddressBook::self(true);
    bool inserted = false;

    ab->setErrorHandler(new KABC::GuiErrorHandler(parent));

    KABC::Addressee::List addressees =
        ab->findByEmail(addressee.preferredEmail());

    if(addressees.isEmpty())
    {
        if(KAddrBookExternal::addAddressee(addressee))
        {
            QString text = i18n("The VCard was added to your addressbook; "
                                "you can add more information to this "
                                "entry by opening the addressbook.");
            KMessageBox::information(parent, text, QString::null, "addedtokabc");
            inserted = true;
        }
    }
    else
    {
        QString text = i18n("The VCard's primary email address is already in "
                            "your addressbook; however, you may save the VCard "
                            "into a file and import it into the addressbook "
                            "manually.");
        KMessageBox::information(parent, text);
        inserted = true;
    }

    ab->setErrorHandler(0);
    return inserted;
}
예제 #2
0
//-----------------------------------------------------------------------------
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);
}