You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.4 KiB
123 lines
3.4 KiB
// -*- mode: C++; c-file-style: "gnu" -*- |
|
// kmaddrbook.cpp |
|
// Author: Stefan Taferner <taferner@kde.org> |
|
// This code is under GPL |
|
|
|
#include <config.h> |
|
#include <unistd.h> |
|
|
|
#include "kmaddrbook.h" |
|
#include "kcursorsaver.h" |
|
#include "kmmessage.h" |
|
#include "kmkernel.h" // for KabcBridge |
|
|
|
#include <kapplication.h> |
|
#include <kdebug.h> |
|
#include <klocale.h> |
|
#include <kmessagebox.h> |
|
#include <kabc/stdaddressbook.h> |
|
#include <kabc/distributionlist.h> |
|
#include <kabc/vcardconverter.h> |
|
#include <dcopref.h> |
|
|
|
#include <qregexp.h> |
|
|
|
void KabcBridge::addresses(QStringList& result) // includes lists |
|
{ |
|
KCursorSaver busy(KBusyPtr::busy()); // loading might take a while |
|
|
|
KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); |
|
KABC::AddressBook::ConstIterator it; |
|
for( it = addressBook->begin(); it != addressBook->end(); ++it ) { |
|
const QStringList emails = (*it).emails(); |
|
QString n = (*it).prefix() + " " + |
|
(*it).givenName() + " " + |
|
(*it).additionalName() + " " + |
|
(*it).familyName() + " " + |
|
(*it).suffix(); |
|
n = n.simplifyWhiteSpace(); |
|
|
|
QRegExp needQuotes("[^ 0-9A-Za-z\\x0080-\\xFFFF]"); |
|
QString endQuote = "\" "; |
|
QStringList::ConstIterator mit; |
|
QString addr, email; |
|
|
|
for ( mit = emails.begin(); mit != emails.end(); ++mit ) { |
|
email = *mit; |
|
if (!email.isEmpty()) { |
|
if (n.isEmpty() || (email.find( '<' ) != -1)) |
|
addr = QString::null; |
|
else { // do we really need quotes around this name ? |
|
if (n.find(needQuotes) != -1) |
|
addr = '"' + n + endQuote; |
|
else |
|
addr = n + ' '; |
|
} |
|
|
|
if (!addr.isEmpty() && (email.find( '<' ) == -1) |
|
&& (email.find( '>' ) == -1) |
|
&& (email.find( ',' ) == -1)) |
|
addr += '<' + email + '>'; |
|
else |
|
addr += email; |
|
addr = addr.stripWhiteSpace(); |
|
result.append( addr ); |
|
} |
|
} |
|
} |
|
KABC::DistributionListManager manager( addressBook ); |
|
manager.load(); |
|
result += manager.listNames(); |
|
|
|
result.sort(); |
|
} |
|
|
|
QStringList KabcBridge::addresses() |
|
{ |
|
QStringList entries; |
|
KABC::AddressBook::ConstIterator it; |
|
|
|
const KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); |
|
for( it = addressBook->begin(); it != addressBook->end(); ++it ) { |
|
entries += (*it).fullEmail(); |
|
} |
|
return entries; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
QString KabcBridge::expandNickName( const QString& nickName ) |
|
{ |
|
if ( nickName.isEmpty() ) |
|
return QString::null; |
|
|
|
const QString lowerNickName = nickName.lower(); |
|
const KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); |
|
for( KABC::AddressBook::ConstIterator it = addressBook->begin(); |
|
it != addressBook->end(); ++it ) { |
|
if ( (*it).nickName().lower() == lowerNickName ) |
|
return (*it).fullEmail(); |
|
} |
|
return QString::null; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
QStringList KabcBridge::categories() |
|
{ |
|
KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); |
|
KABC::Addressee::List addresses = addressBook->allAddressees(); |
|
QStringList allcategories, aux; |
|
|
|
for ( KABC::Addressee::List::Iterator it = addresses.begin(); |
|
it != addresses.end(); ++it ) { |
|
aux = ( *it ).categories(); |
|
for ( QStringList::ConstIterator itAux = aux.begin(); |
|
itAux != aux.end(); ++itAux ) { |
|
// don't have duplicates in allcategories |
|
if ( allcategories.find( *itAux ) == allcategories.end() ) |
|
allcategories += *itAux; |
|
} |
|
} |
|
return allcategories; |
|
}
|
|
|