kaddrbook.cpp
00001
00002
00003
00004
00005
00006 #include <config.h>
00007 #include <unistd.h>
00008
00009 #include "kaddrbook.h"
00010
00011 #include <kapplication.h>
00012 #include <kdebug.h>
00013 #include <klocale.h>
00014 #include <kmessagebox.h>
00015 #include <kabc/stdaddressbook.h>
00016 #include <kabc/distributionlist.h>
00017 #include <kabc/vcardconverter.h>
00018 #include <dcopref.h>
00019 #include <dcopclient.h>
00020
00021 #include <qregexp.h>
00022
00023
00024 void KAddrBookExternal::openEmail( const QString &email, const QString &addr, QWidget *) {
00025
00026 KABC::AddressBook *addressBook = KABC::StdAddressBook::self();
00027 KABC::Addressee::List addresseeList = addressBook->findByEmail(email);
00028 if ( kapp->dcopClient()->isApplicationRegistered( "kaddressbook" ) ){
00029
00030
00031 DCOPRef call ( "kaddressbook", "kaddressbook" );
00032 call.send( "newInstance()" );
00033 }
00034 else
00035 kapp->startServiceByDesktopName( "kaddressbook" );
00036
00037 DCOPRef call( "kaddressbook", "KAddressBookIface" );
00038 if( !addresseeList.isEmpty() ) {
00039 call.send( "showContactEditor(QString)", addresseeList.first().uid() );
00040 }
00041 else {
00042 call.send( "addEmail(QString)", addr );
00043 }
00044 }
00045
00046
00047 void KAddrBookExternal::addEmail( const QString& addr, QWidget *parent) {
00048 QString email;
00049 QString name;
00050
00051 KABC::Addressee::parseEmailAddress( addr, name, email );
00052
00053 KABC::AddressBook *ab = KABC::StdAddressBook::self();
00054
00055
00056
00057 ab->load();
00058
00059 KABC::Addressee::List addressees = ab->findByEmail( email );
00060
00061 if ( addressees.isEmpty() ) {
00062 KABC::Addressee a;
00063 a.setNameFromString( name );
00064 a.insertEmail( email, true );
00065
00066 if ( !KAddrBookExternal::addAddressee( a ) ) {
00067 KMessageBox::error( parent, i18n("Cannot save to addressbook.") );
00068 } else {
00069 QString text = i18n("<qt>The email address <b>%1</b> was added to your "
00070 "addressbook; you can add more information to this "
00071 "entry by opening the addressbook.</qt>").arg( addr );
00072 KMessageBox::information( parent, text, QString::null, "addedtokabc" );
00073 }
00074 } else {
00075 QString text = i18n("<qt>The email address <b>%1</b> is already in your "
00076 "addressbook.</qt>").arg( addr );
00077 KMessageBox::information( parent, text, QString::null,
00078 "alreadyInAddressBook" );
00079 }
00080 }
00081
00082 void KAddrBookExternal::openAddressBook(QWidget *) {
00083 kapp->startServiceByDesktopName( "kaddressbook" );
00084 }
00085
00086 void KAddrBookExternal::addNewAddressee( QWidget* )
00087 {
00088 kapp->startServiceByDesktopName("kaddressbook");
00089 sleep(2);
00090 DCOPRef call("kaddressbook", "KAddressBookIface");
00091 call.send("newContact()");
00092 }
00093
00094 bool KAddrBookExternal::addVCard( const KABC::Addressee& addressee, QWidget *parent )
00095 {
00096 KABC::AddressBook *ab = KABC::StdAddressBook::self();
00097 bool inserted = false;
00098
00099 KABC::Addressee::List addressees =
00100 ab->findByEmail( addressee.preferredEmail() );
00101
00102 if ( addressees.isEmpty() ) {
00103 if ( !KAddrBookExternal::addAddressee( addressee ) ) {
00104 KMessageBox::error( parent, i18n("Cannot save to addressbook.") );
00105 inserted = false;
00106 } else {
00107 QString text = i18n("The VCard was added to your addressbook; "
00108 "you can add more information to this "
00109 "entry by opening the addressbook.");
00110 KMessageBox::information( parent, text, QString::null, "addedtokabc" );
00111 inserted = true;
00112 }
00113 } else {
00114 QString text = i18n("The VCard's primary email address is already in "
00115 "your addressbook; however, you may save the VCard "
00116 "into a file and import it into the addressbook "
00117 "manually.");
00118 KMessageBox::information( parent, text );
00119 inserted = true;
00120 }
00121
00122 return inserted;
00123 }
00124
00125 bool KAddrBookExternal::addAddressee( const KABC::Addressee& addressee )
00126 {
00127 KABC::AddressBook *ab = KABC::StdAddressBook::self();
00128 KABC::Ticket *t = ab->requestSaveTicket();
00129 bool saved = false;
00130 if ( t ) {
00131 ab->insertAddressee( addressee );
00132 saved = ab->save( t );
00133 if ( !saved )
00134 ab->releaseSaveTicket( t );
00135 }
00136 return saved;
00137 }
00138
00139 QString KAddrBookExternal::expandDistributionList( const QString& listName )
00140 {
00141 if ( listName.isEmpty() )
00142 return QString::null;
00143
00144 const QString lowerListName = listName.lower();
00145 KABC::AddressBook *addressBook = KABC::StdAddressBook::self();
00146 KABC::DistributionListManager manager( addressBook );
00147 manager.load();
00148 const QStringList listNames = manager.listNames();
00149
00150 for ( QStringList::ConstIterator it = listNames.begin();
00151 it != listNames.end(); ++it) {
00152 if ( (*it).lower() == lowerListName ) {
00153 const QStringList addressList = manager.list( *it )->emails();
00154 return addressList.join( ", " );
00155 }
00156 }
00157 return QString::null;
00158 }
This file is part of the documentation for libkdenetwork Library Version 3.3.2.