22 #include <tqpushbutton.h>
23 #include <tqgroupbox.h>
29 #include "stdaddressbook.h"
31 #include "addresseedialog.h"
32 #include "addresseedialog.moc"
34 using namespace TDEABC;
37 TQListViewItem( parent ),
38 mAddressee( addressee )
40 setText( Name, addressee.
realName() );
46 if (column == Email) {
47 TQString value = text(Email);
48 TQRegExp emailRe(
"<\\S*>");
49 int match = emailRe.search(value);
51 value = value.mid(match + 1, emailRe.matchedLength() - 2);
56 return text(column).lower();
61 Ok|Cancel, Ok, parent ), mMultiple( multiple )
65 TQBoxLayout *topLayout =
new TQHBoxLayout( topWidget );
66 TQBoxLayout *listLayout =
new TQVBoxLayout;
67 topLayout->addLayout( listLayout );
70 mAddresseeList->
addColumn( i18n(
"Name") );
71 mAddresseeList->
addColumn( i18n(
"Email") );
72 mAddresseeList->setAllColumnsShowFocus(
true );
74 listLayout->addWidget( mAddresseeList );
75 connect( mAddresseeList, TQT_SIGNAL( doubleClicked( TQListViewItem * ) ),
77 connect( mAddresseeList, TQT_SIGNAL( selectionChanged( TQListViewItem * ) ),
78 TQT_SLOT( updateEdit( TQListViewItem * ) ) );
80 mAddresseeEdit =
new KLineEdit( topWidget );
82 connect( mAddresseeEdit->
completionObject(), TQT_SIGNAL( match(
const TQString & ) ),
83 TQT_SLOT( selectItem(
const TQString & ) ) );
84 mAddresseeEdit->setFocus();
86 listLayout->addWidget( mAddresseeEdit );
91 TQBoxLayout *selectedLayout =
new TQVBoxLayout;
92 topLayout->addLayout( selectedLayout );
95 TQGroupBox *selectedGroup =
new TQGroupBox( 1, Qt::Horizontal, i18n(
"Selected"),
97 selectedLayout->addWidget( selectedGroup );
100 mSelectedList->
addColumn( i18n(
"Name") );
101 mSelectedList->
addColumn( i18n(
"Email") );
102 mSelectedList->setAllColumnsShowFocus(
true );
104 connect( mSelectedList, TQT_SIGNAL( doubleClicked( TQListViewItem * ) ),
105 TQT_SLOT( removeSelected() ) );
107 TQPushButton *unselectButton =
new TQPushButton( i18n(
"Unselect"), selectedGroup );
108 connect ( unselectButton, TQT_SIGNAL( clicked() ), TQT_SLOT( removeSelected() ) );
110 connect( mAddresseeList, TQT_SIGNAL( clicked( TQListViewItem * ) ),
111 TQT_SLOT( addSelected( TQListViewItem * ) ) );
117 connect( mAddressBook, TQT_SIGNAL( addressBookChanged(
AddressBook* ) ),
118 TQT_SLOT( addressBookChanged() ) );
119 connect( mAddressBook, TQT_SIGNAL( loadingFinished( Resource* ) ),
120 TQT_SLOT( addressBookChanged() ) );
129 void AddresseeDialog::loadAddressBook()
131 mAddresseeList->clear();
136 for( it = mAddressBook->
begin(); it != mAddressBook->
end(); ++it ) {
138 addCompletionItem( (*it).realName(), item );
139 addCompletionItem( (*it).preferredEmail(), item );
143 void AddresseeDialog::addCompletionItem(
const TQString &str, TQListViewItem *item )
145 if ( str.isEmpty() )
return;
147 mItemDict.insert( str, item );
151 void AddresseeDialog::selectItem(
const TQString &str )
153 if ( str.isEmpty() )
return;
155 TQListViewItem *item = mItemDict.find( str );
157 mAddresseeList->blockSignals(
true );
158 mAddresseeList->setSelected( item,
true );
159 mAddresseeList->ensureItemVisible( item );
160 mAddresseeList->blockSignals(
false );
164 void AddresseeDialog::updateEdit( TQListViewItem *item )
166 mAddresseeEdit->
setText( item->text( 0 ) );
167 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
170 void AddresseeDialog::addSelected( TQListViewItem *item )
173 if ( !addrItem )
return;
177 TQListViewItem *selectedItem = mSelectedDict.find( a.
uid() );
178 if ( !selectedItem ) {
180 mSelectedDict.insert( a.
uid(), selectedItem );
184 void AddresseeDialog::removeSelected()
186 TQListViewItem *item = mSelectedList->selectedItem();
188 if ( !addrItem )
return;
199 aItem =
dynamic_cast<AddresseeItem *
>( mSelectedList->firstChild() );
201 aItem =
dynamic_cast<AddresseeItem *
>( mAddresseeList->selectedItem() );
213 TQListViewItem *item = mSelectedList->firstChild();
216 if ( aItem ) al.append( aItem->
addressee() );
217 item = item->nextSibling();
222 aItem =
dynamic_cast<AddresseeItem *
>( mAddresseeList->selectedItem() );
223 if (aItem) al.append( aItem->
addressee() );
233 int result = dlg->exec();
235 if ( result == TQDialog::Accepted ) {
247 int result = dlg->exec();
248 if ( result == TQDialog::Accepted ) {
256 void AddresseeDialog::addressBookChanged()