From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kmail/kmaddrbook.cpp | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 kmail/kmaddrbook.cpp (limited to 'kmail/kmaddrbook.cpp') diff --git a/kmail/kmaddrbook.cpp b/kmail/kmaddrbook.cpp new file mode 100644 index 000000000..288784db4 --- /dev/null +++ b/kmail/kmaddrbook.cpp @@ -0,0 +1,135 @@ +/* -*- mode: C++; c-file-style: "gnu" -*- + * kmail: KDE mail client + * Copyright (c) 1996-1998 Stefan Taferner + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#include +#include + +#include "kmaddrbook.h" +#include "kcursorsaver.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +void KabcBridge::addresses(QStringList& result) // includes lists +{ + KCursorSaver busy(KBusyPtr::busy()); // loading might take a while + + KABC::AddressBook *addressBook = KABC::StdAddressBook::self( true ); + 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( true ); + 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( true ); + 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( true ); + 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; +} -- cgit v1.2.1