kmail Library API Documentation

kmaddrbook.cpp

00001 // -*- mode: C++; c-file-style: "gnu" -*- 00002 // kmaddrbook.cpp 00003 // Author: Stefan Taferner <taferner@kde.org> 00004 // This code is under GPL 00005 00006 #include <config.h> 00007 #include <unistd.h> 00008 00009 #include "kmaddrbook.h" 00010 #include "kcursorsaver.h" 00011 #include "kmmessage.h" 00012 #include "kmkernel.h" // for KabcBridge 00013 00014 #include <kapplication.h> 00015 #include <kdebug.h> 00016 #include <klocale.h> 00017 #include <kmessagebox.h> 00018 #include <kabc/stdaddressbook.h> 00019 #include <kabc/distributionlist.h> 00020 #include <kabc/vcardconverter.h> 00021 #include <dcopref.h> 00022 00023 #include <qregexp.h> 00024 00025 void KabcBridge::addresses(QStringList& result) // includes lists 00026 { 00027 KCursorSaver busy(KBusyPtr::busy()); // loading might take a while 00028 00029 KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); 00030 KABC::AddressBook::ConstIterator it; 00031 for( it = addressBook->begin(); it != addressBook->end(); ++it ) { 00032 const QStringList emails = (*it).emails(); 00033 QString n = (*it).prefix() + " " + 00034 (*it).givenName() + " " + 00035 (*it).additionalName() + " " + 00036 (*it).familyName() + " " + 00037 (*it).suffix(); 00038 n = n.simplifyWhiteSpace(); 00039 00040 QRegExp needQuotes("[^ 0-9A-Za-z\\x0080-\\xFFFF]"); 00041 QString endQuote = "\" "; 00042 QStringList::ConstIterator mit; 00043 QString addr, email; 00044 00045 for ( mit = emails.begin(); mit != emails.end(); ++mit ) { 00046 email = *mit; 00047 if (!email.isEmpty()) { 00048 if (n.isEmpty() || (email.find( '<' ) != -1)) 00049 addr = QString::null; 00050 else { // do we really need quotes around this name ? 00051 if (n.find(needQuotes) != -1) 00052 addr = '"' + n + endQuote; 00053 else 00054 addr = n + ' '; 00055 } 00056 00057 if (!addr.isEmpty() && (email.find( '<' ) == -1) 00058 && (email.find( '>' ) == -1) 00059 && (email.find( ',' ) == -1)) 00060 addr += '<' + email + '>'; 00061 else 00062 addr += email; 00063 addr = addr.stripWhiteSpace(); 00064 result.append( addr ); 00065 } 00066 } 00067 } 00068 KABC::DistributionListManager manager( addressBook ); 00069 manager.load(); 00070 result += manager.listNames(); 00071 00072 result.sort(); 00073 } 00074 00075 QStringList KabcBridge::addresses() 00076 { 00077 QStringList entries; 00078 KABC::AddressBook::ConstIterator it; 00079 00080 const KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); 00081 for( it = addressBook->begin(); it != addressBook->end(); ++it ) { 00082 entries += (*it).fullEmail(); 00083 } 00084 return entries; 00085 } 00086 00087 //----------------------------------------------------------------------------- 00088 QString KabcBridge::expandNickName( const QString& nickName ) 00089 { 00090 if ( nickName.isEmpty() ) 00091 return QString::null; 00092 00093 const QString lowerNickName = nickName.lower(); 00094 const KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); 00095 for( KABC::AddressBook::ConstIterator it = addressBook->begin(); 00096 it != addressBook->end(); ++it ) { 00097 if ( (*it).nickName().lower() == lowerNickName ) 00098 return (*it).fullEmail(); 00099 } 00100 return QString::null; 00101 } 00102 00103 00104 //----------------------------------------------------------------------------- 00105 00106 QStringList KabcBridge::categories() 00107 { 00108 KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); 00109 KABC::Addressee::List addresses = addressBook->allAddressees(); 00110 QStringList allcategories, aux; 00111 00112 for ( KABC::Addressee::List::Iterator it = addresses.begin(); 00113 it != addresses.end(); ++it ) { 00114 aux = ( *it ).categories(); 00115 for ( QStringList::ConstIterator itAux = aux.begin(); 00116 itAux != aux.end(); ++itAux ) { 00117 // don't have duplicates in allcategories 00118 if ( allcategories.find( *itAux ) == allcategories.end() ) 00119 allcategories += *itAux; 00120 } 00121 } 00122 return allcategories; 00123 }
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:19:17 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003