diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /kaddressbook/kaddressbookview.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
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
Diffstat (limited to 'kaddressbook/kaddressbookview.cpp')
-rw-r--r-- | kaddressbook/kaddressbookview.cpp | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/kaddressbook/kaddressbookview.cpp b/kaddressbook/kaddressbookview.cpp new file mode 100644 index 000000000..72e70675f --- /dev/null +++ b/kaddressbook/kaddressbookview.cpp @@ -0,0 +1,203 @@ +/* + This file is part of KAddressBook. + Copyright (c) 2002 Mike Pilone <mpilone@slac.com> + + 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 <qlayout.h> +#include <qpopupmenu.h> + +#include <kabc/addressbook.h> +#include <kabc/distributionlistdialog.h> +#include <kconfig.h> +#include <kdebug.h> +#include <klocale.h> +#include <kxmlguifactory.h> +#include <kxmlguiclient.h> + +#include "core.h" +#include "searchmanager.h" + +#include "kaddressbookview.h" + +KAddressBookView::KAddressBookView( KAB::Core *core, QWidget *parent, + const char *name ) + : QWidget( parent, name ), mCore( core ), mFieldList() +{ + initGUI(); + + connect( mCore->searchManager(), SIGNAL( contactsUpdated() ), + 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 +} + +QString KAddressBookView::selectedEmails() +{ + bool first = true; + QString emailAddrs; + const QStringList uidList = selectedUids(); + KABC::Addressee addr; + QString email; + + QStringList::ConstIterator it; + for ( it = uidList.begin(); it != uidList.end(); ++it ) { + addr = mCore->addressBook()->findByUid( *it ); + + if ( !addr.isEmpty() ) { + QString m = QString::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 + QVBoxLayout *layout = new QVBoxLayout( this ); + + // Add the view widget + mViewWidget = new QWidget( 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 QString &KAddressBookView::defaultFilterName() const +{ + return mDefaultFilterName; +} + +KAB::Core *KAddressBookView::core() const +{ + return mCore; +} + +void KAddressBookView::popup( const QPoint &point ) +{ + if ( !mCore->guiClient() ) { + kdWarning() << "No GUI client set!" << endl; + return; + } + + QPopupMenu *menu = static_cast<QPopupMenu*>( mCore->guiClient()->factory()->container( "RMBPopup", + mCore->guiClient() ) ); + if ( menu ) + menu->popup( point ); +} + +QWidget *KAddressBookView::viewWidget() +{ + return mViewWidget; +} + +void KAddressBookView::updateView() +{ + const QStringList uidList = selectedUids(); + + refresh(); // This relists and deselects everything, in all views + + if ( !uidList.isEmpty() ) { + // Keep previous selection + QStringList::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( QString::null ); + } +} + +ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, + QWidget *parent, + const char *name ) +{ + return new ViewConfigureWidget( ab, parent, name ); +} + +#include "kaddressbookview.moc" |