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.
135 lines
4.1 KiB
135 lines
4.1 KiB
/* -*- mode: C++; c-file-style: "gnu" -*-
|
|
* kmail: KDE mail client
|
|
* Copyright (c) 1996-1998 Stefan Taferner <taferner@kde.org>
|
|
*
|
|
* 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 <config.h>
|
|
#include <unistd.h>
|
|
|
|
#include "kmaddrbook.h"
|
|
#include "kcursorsaver.h"
|
|
|
|
#include <tdeapplication.h>
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <tdemessagebox.h>
|
|
#include <tdeabc/stdaddressbook.h>
|
|
#include <tdeabc/distributionlist.h>
|
|
#include <dcopref.h>
|
|
|
|
#include <tqregexp.h>
|
|
|
|
void KabcBridge::addresses(TQStringList& result) // includes lists
|
|
{
|
|
KCursorSaver busy(KBusyPtr::busy()); // loading might take a while
|
|
|
|
TDEABC::AddressBook *addressBook = TDEABC::StdAddressBook::self( true );
|
|
TDEABC::AddressBook::ConstIterator it;
|
|
for( it = addressBook->begin(); it != addressBook->end(); ++it ) {
|
|
const TQStringList emails = (*it).emails();
|
|
TQString n = (*it).prefix() + " " +
|
|
(*it).givenName() + " " +
|
|
(*it).additionalName() + " " +
|
|
(*it).familyName() + " " +
|
|
(*it).suffix();
|
|
n = n.simplifyWhiteSpace();
|
|
|
|
TQRegExp needQuotes("[^ 0-9A-Za-z\\x0080-\\xFFFF]");
|
|
TQString endQuote = "\" ";
|
|
TQStringList::ConstIterator mit;
|
|
TQString addr, email;
|
|
|
|
for ( mit = emails.begin(); mit != emails.end(); ++mit ) {
|
|
email = *mit;
|
|
if (!email.isEmpty()) {
|
|
if (n.isEmpty() || (email.find( '<' ) != -1))
|
|
addr = TQString();
|
|
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 );
|
|
}
|
|
}
|
|
}
|
|
TDEABC::DistributionListManager manager( addressBook );
|
|
manager.load();
|
|
result += manager.listNames();
|
|
|
|
result.sort();
|
|
}
|
|
|
|
TQStringList KabcBridge::addresses()
|
|
{
|
|
TQStringList entries;
|
|
TDEABC::AddressBook::ConstIterator it;
|
|
|
|
const TDEABC::AddressBook *addressBook = TDEABC::StdAddressBook::self( true );
|
|
for( it = addressBook->begin(); it != addressBook->end(); ++it ) {
|
|
entries += (*it).fullEmail();
|
|
}
|
|
return entries;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
TQString KabcBridge::expandNickName( const TQString& nickName )
|
|
{
|
|
if ( nickName.isEmpty() )
|
|
return TQString();
|
|
|
|
const TQString lowerNickName = nickName.lower();
|
|
const TDEABC::AddressBook *addressBook = TDEABC::StdAddressBook::self( true );
|
|
for( TDEABC::AddressBook::ConstIterator it = addressBook->begin();
|
|
it != addressBook->end(); ++it ) {
|
|
if ( (*it).nickName().lower() == lowerNickName )
|
|
return (*it).fullEmail();
|
|
}
|
|
return TQString();
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
TQStringList KabcBridge::categories()
|
|
{
|
|
TDEABC::AddressBook *addressBook = TDEABC::StdAddressBook::self( true );
|
|
TDEABC::Addressee::List addresses = addressBook->allAddressees();
|
|
TQStringList allcategories, aux;
|
|
|
|
for ( TDEABC::Addressee::List::Iterator it = addresses.begin();
|
|
it != addresses.end(); ++it ) {
|
|
aux = ( *it ).categories();
|
|
for ( TQStringList::ConstIterator itAux = aux.begin();
|
|
itAux != aux.end(); ++itAux ) {
|
|
// don't have duplicates in allcategories
|
|
if ( allcategories.find( *itAux ) == allcategories.end() )
|
|
allcategories += *itAux;
|
|
}
|
|
}
|
|
return allcategories;
|
|
}
|