/* This file is part of KAddressBook. Copyright (c) 2002 Mike Pilone 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. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ #include #include #include #include #include #include #include #include #include #include "core.h" #include "searchmanager.h" #include "kaddressbookview.h" KAddressBookView::KAddressBookView( KAB::Core *core, TQWidget *parent, const char *name ) : TQWidget( parent, name ), mCore( core ), mFieldList() { initGUI(); connect( mCore->searchManager(), TQT_SIGNAL( contactsUpdated() ), TQT_SLOT( updateView() ) ); } KAddressBookView::~KAddressBookView() { kdDebug(5720) << "KAddressBookView::~KAddressBookView: destroying - " << name() << endl; } void KAddressBookView::readConfig( KConfig *config ) { mFieldList = KABC::Field::restoreFields( config, "KABCFields" ); if ( mFieldList.isEmpty() ) mFieldList = KABC::Field::defaultFields(); mDefaultFilterType = (DefaultFilterType)config->readNumEntry( "DefaultFilterType", 1 ); mDefaultFilterName = config->readEntry( "DefaultFilterName" ); } void KAddressBookView::writeConfig( KConfig* ) { // Most of writing the config is handled by the ConfigureViewDialog } TQString KAddressBookView::selectedEmails() { bool first = true; TQString emailAddrs; const TQStringList uidList = selectedUids(); KABC::Addressee addr; TQString email; TQStringList::ConstIterator it; for ( it = uidList.begin(); it != uidList.end(); ++it ) { addr = mCore->addressBook()->findByUid( *it ); if ( !addr.isEmpty() ) { TQString m = TQString::null; if ( addr.emails().count() > 1 ) m = KABC::EmailSelector::getEmail( addr.emails(), addr.preferredEmail(), this ); email = addr.fullEmail( m ); if ( !first ) emailAddrs += ", "; else first = false; emailAddrs += email; } } return emailAddrs; } KABC::Addressee::List KAddressBookView::addressees() { if ( mFilter.isEmpty() ) return mCore->searchManager()->contacts(); KABC::Addressee::List addresseeList; const KABC::Addressee::List contacts = mCore->searchManager()->contacts(); KABC::Addressee::List::ConstIterator it; KABC::Addressee::List::ConstIterator contactsEnd( contacts.end() ); for ( it = contacts.begin(); it != contactsEnd; ++it ) { if ( mFilter.filterAddressee( *it ) ) addresseeList.append( *it ); } return addresseeList; } void KAddressBookView::initGUI() { // Create the layout TQVBoxLayout *layout = new TQVBoxLayout( this ); // Add the view widget mViewWidget = new TQWidget( this ); layout->addWidget( mViewWidget ); } KABC::Field::List KAddressBookView::fields() const { return mFieldList; } void KAddressBookView::setFilter( const Filter &filter ) { mFilter = filter; } KAddressBookView::DefaultFilterType KAddressBookView::defaultFilterType() const { return mDefaultFilterType; } const TQString &KAddressBookView::defaultFilterName() const { return mDefaultFilterName; } KAB::Core *KAddressBookView::core() const { return mCore; } void KAddressBookView::popup( const TQPoint &point ) { if ( !mCore->guiClient() ) { kdWarning() << "No GUI client set!" << endl; return; } TQPopupMenu *menu = static_cast( mCore->guiClient()->factory()->container( "RMBPopup", mCore->guiClient() ) ); if ( menu ) menu->popup( point ); } TQWidget *KAddressBookView::viewWidget() { return mViewWidget; } void KAddressBookView::updateView() { const TQStringList uidList = selectedUids(); refresh(); // This relists and deselects everything, in all views if ( !uidList.isEmpty() ) { // Keep previous selection TQStringList::ConstIterator it, uidListEnd( uidList.end() ); for ( it = uidList.begin(); it != uidListEnd; ++it ) setSelected( *it, true ); } else { const KABC::Addressee::List contacts = mCore->searchManager()->contacts(); if ( !contacts.isEmpty() ) setFirstSelected( true ); else emit selected( TQString::null ); } } ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, TQWidget *parent, const char *name ) { return new ViewConfigureWidget( ab, parent, name ); } #include "kaddressbookview.moc"