Make the vcard import more robust

svn path=/trunk/kdepim/; revision=224540
wilder-work
Andreas Gungl 23 years ago
parent 6beeae94db
commit 0d1a17ded6
  1. 32
      kmaddrbook.cpp
  2. 4
      kmaddrbook.h
  3. 23
      vcardviewer.cpp

@ -19,6 +19,7 @@
#include <kprocess.h>
#include <kabc/stdaddressbook.h>
#include <kabc/distributionlist.h>
#include <kabc/vcardconverter.h>
void KabcBridge::addresses(QStringList* result) // includes lists
{
@ -273,3 +274,34 @@ void KMAddrBookExternal::addNewAddressee( QWidget* )
// silently to kabc.
}
bool KMAddrBookExternal::addVCard( KABC::Addressee addressee, QWidget *parent )
{
KABC::AddressBook *ab = KABC::StdAddressBook::self();
bool inserted = false;
KABC::Addressee::List addressees =
ab->findByEmail( addressee.preferredEmail() );
if ( addressees.isEmpty() ) {
ab->insertAddressee( addressee );
if ( !KABC::StdAddressBook::save() ) {
KMessageBox::error( parent, i18n("Can't save to addressbook.") );
inserted = false;
} else {
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;
}
return inserted;
}

@ -9,6 +9,7 @@
#include <qwidget.h>
#include <kdeversion.h>
#include <kabc/addressee.h>
class KabcBridge {
public:
@ -22,10 +23,11 @@ public:
static void addEmail( const QString &addr, QWidget *parent );
static void addNewAddressee( QWidget* );
static void openEmail( const QString &addr, QWidget *parent );
static void launch(QWidget *parent);
static void launch( QWidget *parent );
static bool useKab();
static bool useKAddressbook();
static bool checkForAddressBook();
static bool addVCard( KABC::Addressee addressee, QWidget *parent );
};
#endif /*KMAddrBook_h*/

@ -19,8 +19,10 @@
#include <kmessagebox.h>
#include <klocale.h>
#include <kdebug.h>
#include "vcardviewer.h"
#include "kmaddrbook.h"
#include "addresseeview.h"
using KPIM::AddresseeView;
@ -32,19 +34,22 @@ using namespace KABC;
using namespace KMail;
VCardViewer::VCardViewer(QWidget *parent, const QString& vCard, const char* name)
:KDialogBase(parent, name, true, i18n("VCard viewer"), User1|Close, Close,
:KDialogBase(parent, name, true, i18n("VCard viewer"), User1|Close, Close,
true, KGuiItem(i18n("&Import")))
{
AddresseeView *av = new AddresseeView(this);
av->setVScrollBarMode(QScrollView::Auto);
setMainWidget(av);
bool ok;
VCardConverter vc;
ok = vc.vCardToAddressee(vCard, mAddressee, VCardConverter::v3_0);
if (!ok)
ok = vc.vCardToAddressee(vCard, mAddressee, VCardConverter::v2_1);
VCardConverter vcc;
// FIXME This is not really a good solution. Would be fine
// if the VCardConverter could handle this internally.
if (vCard.contains("VERSION:3.0"))
ok = vcc.vCardToAddressee(vCard, mAddressee, VCardConverter::v3_0);
else
ok = vcc.vCardToAddressee(vCard, mAddressee, VCardConverter::v2_1);
if (ok)
av->setAddressee(mAddressee);
@ -62,10 +67,8 @@ VCardViewer::~VCardViewer()
void VCardViewer::slotUser1()
{
StdAddressBook::self()->insertAddressee(mAddressee);
KMessageBox::information(this, i18n("Successfully added vCard to contacts!"),
i18n("Imported vCard"));
showButton(User1, false);
if (KMAddrBookExternal::addVCard(mAddressee, this))
showButton(User1, false);
}
#include "vcardviewer.moc"

Loading…
Cancel
Save