You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
5.3 KiB
C++
172 lines
5.3 KiB
C++
15 years ago
|
/*
|
||
|
AddressBookSelectorWidget
|
||
|
|
||
|
Copyright (c) 2005 by Duncan Mac-Vicar Prett <duncan@kde.org>
|
||
|
|
||
|
Based on LinkAddressBookUI whose code was shamelessly stolen from
|
||
|
kopete's add new contact wizard, used in Konversation, and then
|
||
|
reappropriated by Kopete.
|
||
|
|
||
|
LinkAddressBookUI:
|
||
|
Copyright (c) 2004 by John Tapsell <john@geola.co.uk>
|
||
|
Copyright (c) 2003-2005 by Will Stephenson <will@stevello.free-online.co.uk>
|
||
|
Copyright (c) 2002 by Nick Betcher <nbetcher@kde.org>
|
||
|
Copyright (c) 2002 by Duncan Mac-Vicar Prett <duncan@kde.org>
|
||
|
|
||
|
Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@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. *
|
||
|
* *
|
||
|
*************************************************************************
|
||
|
*/
|
||
|
|
||
|
#include <qcheckbox.h>
|
||
|
#include <kapplication.h>
|
||
|
#include <kconfig.h>
|
||
|
#include <klocale.h>
|
||
|
#include <kiconloader.h>
|
||
|
|
||
|
#include <kdeversion.h>
|
||
|
#include <kinputdialog.h>
|
||
|
|
||
|
#include <kpushbutton.h>
|
||
|
#include <kactivelabel.h>
|
||
|
#include <kdebug.h>
|
||
|
#include <klistview.h>
|
||
|
#include <klistviewsearchline.h>
|
||
|
#include <qlabel.h>
|
||
|
#include <qtooltip.h>
|
||
|
#include <qwhatsthis.h>
|
||
|
|
||
|
#include "addressbookselectorwidget.h"
|
||
|
#include <addresseeitem.h>
|
||
|
#include "kabcpersistence.h"
|
||
|
|
||
|
using namespace Kopete::UI;
|
||
|
|
||
|
namespace Kopete
|
||
|
{
|
||
|
namespace UI
|
||
|
{
|
||
|
|
||
|
AddressBookSelectorWidget::AddressBookSelectorWidget( QWidget *parent, const char *name )
|
||
|
: AddressBookSelectorWidget_Base( parent, name )
|
||
|
{
|
||
|
m_addressBook = Kopete::KABCPersistence::self()->addressBook();
|
||
|
|
||
|
// Addressee validation connections
|
||
|
connect( addAddresseeButton, SIGNAL( clicked() ), SLOT( slotAddAddresseeClicked() ) );
|
||
|
connect( addAddresseeButton, SIGNAL( clicked() ), SIGNAL( addAddresseeClicked() ) );
|
||
|
|
||
|
connect( addresseeListView, SIGNAL( clicked(QListViewItem * ) ),
|
||
|
SIGNAL( addresseeListClicked( QListViewItem * ) ) );
|
||
|
connect( addresseeListView, SIGNAL( selectionChanged( QListViewItem * ) ),
|
||
|
SIGNAL( addresseeListClicked( QListViewItem * ) ) );
|
||
|
connect( addresseeListView, SIGNAL( spacePressed( QListViewItem * ) ),
|
||
|
SIGNAL( addresseeListClicked( QListViewItem * ) ) );
|
||
|
|
||
|
connect( m_addressBook, SIGNAL( addressBookChanged( AddressBook * ) ), this, SLOT( slotLoadAddressees() ) );
|
||
|
|
||
|
//We should add a clear KAction here. But we can't really do that with a designer file :\ this sucks
|
||
|
|
||
|
addresseeListView->setColumnText(2, SmallIconSet(QString::fromLatin1("email")), i18n("Email"));
|
||
|
|
||
|
kListViewSearchLine->setListView(addresseeListView);
|
||
|
slotLoadAddressees();
|
||
|
|
||
|
addresseeListView->setColumnWidthMode(0, QListView::Manual);
|
||
|
addresseeListView->setColumnWidth(0, 63); //Photo is 60, and it's nice to have a small gap, imho
|
||
|
}
|
||
|
|
||
|
|
||
|
AddressBookSelectorWidget::~AddressBookSelectorWidget()
|
||
|
{
|
||
|
disconnect( m_addressBook, SIGNAL( addressBookChanged( AddressBook * ) ), this, SLOT( slotLoadAddressees() ) );
|
||
|
}
|
||
|
|
||
|
|
||
|
KABC::Addressee AddressBookSelectorWidget::addressee()
|
||
|
{
|
||
|
AddresseeItem *item = 0L;
|
||
|
item = static_cast<AddresseeItem *>( addresseeListView->selectedItem() );
|
||
|
|
||
|
if ( item )
|
||
|
m_addressee = item->addressee();
|
||
|
|
||
|
return m_addressee;
|
||
|
}
|
||
|
|
||
|
void AddressBookSelectorWidget::selectAddressee( const QString &uid )
|
||
|
{
|
||
|
// iterate trough list view
|
||
|
QListViewItemIterator it( addresseeListView );
|
||
|
while( it.current() )
|
||
|
{
|
||
|
AddresseeItem *addrItem = (AddresseeItem *) it.current();
|
||
|
if ( addrItem->addressee().uid() == uid )
|
||
|
{
|
||
|
// select the contact item
|
||
|
addresseeListView->setSelected( addrItem, true );
|
||
|
addresseeListView->ensureItemVisible( addrItem );
|
||
|
}
|
||
|
++it;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool AddressBookSelectorWidget::addresseeSelected()
|
||
|
{
|
||
|
return addresseeListView->selectedItem() ? true : false;
|
||
|
}
|
||
|
|
||
|
/** Read in contacts from addressbook, and select the contact that is for our nick. */
|
||
|
void AddressBookSelectorWidget::slotLoadAddressees()
|
||
|
{
|
||
|
addresseeListView->clear();
|
||
|
KABC::AddressBook::Iterator it;
|
||
|
AddresseeItem *addr;
|
||
|
for( it = m_addressBook->begin(); it != m_addressBook->end(); ++it )
|
||
|
{
|
||
|
addr = new AddresseeItem( addresseeListView, (*it));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void AddressBookSelectorWidget::setLabelMessage( const QString &msg )
|
||
|
{
|
||
|
lblHeader->setText(msg);
|
||
|
}
|
||
|
|
||
|
void AddressBookSelectorWidget::slotAddAddresseeClicked()
|
||
|
{
|
||
|
// Pop up add addressee dialog
|
||
|
QString addresseeName = KInputDialog::getText( i18n( "New Address Book Entry" ), i18n( "Name the new entry:" ), QString::null, 0, this );
|
||
|
|
||
|
if ( !addresseeName.isEmpty() )
|
||
|
{
|
||
|
KABC::Addressee addr;
|
||
|
addr.setNameFromString( addresseeName );
|
||
|
m_addressBook->insertAddressee(addr);
|
||
|
Kopete::KABCPersistence::self()->writeAddressBook( 0 );
|
||
|
slotLoadAddressees();
|
||
|
// select the addressee we just added
|
||
|
QListViewItem * added = addresseeListView->findItem( addresseeName, 1 );
|
||
|
kListViewSearchLine->clear();
|
||
|
kListViewSearchLine->updateSearch();
|
||
|
addresseeListView->setSelected( added, true );
|
||
|
addresseeListView->ensureItemVisible( added );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} // namespace UI
|
||
|
} // namespace Kopete
|
||
|
|
||
|
#include "addressbookselectorwidget.moc"
|
||
|
|
||
|
// vim: set noet ts=4 sts=4 sw=4:
|
||
|
|