• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeabc
 

tdeabc

  • tdeabc
addresseedialog.cpp
1/*
2 This file is part of libtdeabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include <tqlayout.h>
22#include <tqpushbutton.h>
23#include <tqgroupbox.h>
24#include <tqregexp.h>
25
26#include <tdelocale.h>
27#include <kdebug.h>
28
29#include "stdaddressbook.h"
30
31#include "addresseedialog.h"
32#include "addresseedialog.moc"
33
34using namespace TDEABC;
35
36AddresseeItem::AddresseeItem( TQListView *parent, const Addressee &addressee ) :
37 TQListViewItem( parent ),
38 mAddressee( addressee )
39{
40 setText( Name, addressee.realName() );
41 setText( Email, addressee.preferredEmail() );
42}
43
44TQString AddresseeItem::key( int column, bool ) const
45{
46 if (column == Email) {
47 TQString value = text(Email);
48 TQRegExp emailRe("<\\S*>");
49 int match = emailRe.search(value);
50 if (match > -1)
51 value = value.mid(match + 1, emailRe.matchedLength() - 2);
52
53 return value.lower();
54 }
55
56 return text(column).lower();
57}
58
59AddresseeDialog::AddresseeDialog( TQWidget *parent, bool multiple ) :
60 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"),
61 Ok|Cancel, Ok, parent ), mMultiple( multiple )
62{
63 TQWidget *topWidget = plainPage();
64
65 TQBoxLayout *topLayout = new TQHBoxLayout( topWidget );
66 TQBoxLayout *listLayout = new TQVBoxLayout;
67 topLayout->addLayout( listLayout );
68
69 mAddresseeList = new TDEListView( topWidget );
70 mAddresseeList->addColumn( i18n("Name") );
71 mAddresseeList->addColumn( i18n("Email") );
72 mAddresseeList->setAllColumnsShowFocus( true );
73 mAddresseeList->setFullWidth( true );
74 listLayout->addWidget( mAddresseeList );
75 connect( mAddresseeList, TQ_SIGNAL( doubleClicked( TQListViewItem * ) ),
76 TQ_SLOT( slotOk() ) );
77 connect( mAddresseeList, TQ_SIGNAL( selectionChanged( TQListViewItem * ) ),
78 TQ_SLOT( updateEdit( TQListViewItem * ) ) );
79
80 mAddresseeEdit = new KLineEdit( topWidget );
81 mAddresseeEdit->setCompletionMode( TDEGlobalSettings::CompletionAuto );
82 connect( mAddresseeEdit->completionObject(), TQ_SIGNAL( match( const TQString & ) ),
83 TQ_SLOT( selectItem( const TQString & ) ) );
84 mAddresseeEdit->setFocus();
85 mAddresseeEdit->completionObject()->setIgnoreCase( true );
86 listLayout->addWidget( mAddresseeEdit );
87
88 setInitialSize( TQSize( 450, 300 ) );
89
90 if ( mMultiple ) {
91 TQBoxLayout *selectedLayout = new TQVBoxLayout;
92 topLayout->addLayout( selectedLayout );
93 topLayout->setSpacing( spacingHint() );
94
95 TQGroupBox *selectedGroup = new TQGroupBox( 1, TQt::Horizontal, i18n("Selected"),
96 topWidget );
97 selectedLayout->addWidget( selectedGroup );
98
99 mSelectedList = new TDEListView( selectedGroup );
100 mSelectedList->addColumn( i18n("Name") );
101 mSelectedList->addColumn( i18n("Email") );
102 mSelectedList->setAllColumnsShowFocus( true );
103 mSelectedList->setFullWidth( true );
104 connect( mSelectedList, TQ_SIGNAL( doubleClicked( TQListViewItem * ) ),
105 TQ_SLOT( removeSelected() ) );
106
107 TQPushButton *unselectButton = new TQPushButton( i18n("Unselect"), selectedGroup );
108 connect ( unselectButton, TQ_SIGNAL( clicked() ), TQ_SLOT( removeSelected() ) );
109
110 connect( mAddresseeList, TQ_SIGNAL( clicked( TQListViewItem * ) ),
111 TQ_SLOT( addSelected( TQListViewItem * ) ) );
112
113 setInitialSize( TQSize( 650, 350 ) );
114 }
115
116 mAddressBook = StdAddressBook::self( true );
117 connect( mAddressBook, TQ_SIGNAL( addressBookChanged( AddressBook* ) ),
118 TQ_SLOT( addressBookChanged() ) );
119 connect( mAddressBook, TQ_SIGNAL( loadingFinished( Resource* ) ),
120 TQ_SLOT( addressBookChanged() ) );
121
122 loadAddressBook();
123}
124
125AddresseeDialog::~AddresseeDialog()
126{
127}
128
129void AddresseeDialog::loadAddressBook()
130{
131 mAddresseeList->clear();
132 mItemDict.clear();
133 mAddresseeEdit->completionObject()->clear();
134
135 AddressBook::Iterator it;
136 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
137 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
138 addCompletionItem( (*it).realName(), item );
139 addCompletionItem( (*it).preferredEmail(), item );
140 }
141}
142
143void AddresseeDialog::addCompletionItem( const TQString &str, TQListViewItem *item )
144{
145 if ( str.isEmpty() ) return;
146
147 mItemDict.insert( str, item );
148 mAddresseeEdit->completionObject()->addItem( str );
149}
150
151void AddresseeDialog::selectItem( const TQString &str )
152{
153 if ( str.isEmpty() ) return;
154
155 TQListViewItem *item = mItemDict.find( str );
156 if ( item ) {
157 mAddresseeList->blockSignals( true );
158 mAddresseeList->setSelected( item, true );
159 mAddresseeList->ensureItemVisible( item );
160 mAddresseeList->blockSignals( false );
161 }
162}
163
164void AddresseeDialog::updateEdit( TQListViewItem *item )
165{
166 mAddresseeEdit->setText( item->text( 0 ) );
167 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
168}
169
170void AddresseeDialog::addSelected( TQListViewItem *item )
171{
172 AddresseeItem *addrItem = dynamic_cast<AddresseeItem *>( item );
173 if ( !addrItem ) return;
174
175 Addressee a = addrItem->addressee();
176
177 TQListViewItem *selectedItem = mSelectedDict.find( a.uid() );
178 if ( !selectedItem ) {
179 selectedItem = new AddresseeItem( mSelectedList, a );
180 mSelectedDict.insert( a.uid(), selectedItem );
181 }
182}
183
184void AddresseeDialog::removeSelected()
185{
186 TQListViewItem *item = mSelectedList->selectedItem();
187 AddresseeItem *addrItem = dynamic_cast<AddresseeItem *>( item );
188 if ( !addrItem ) return;
189
190 mSelectedDict.remove( addrItem->addressee().uid() );
191 delete addrItem;
192}
193
194Addressee AddresseeDialog::addressee()
195{
196 AddresseeItem *aItem = 0;
197
198 if ( mMultiple )
199 aItem = dynamic_cast<AddresseeItem *>( mSelectedList->firstChild() );
200 else
201 aItem = dynamic_cast<AddresseeItem *>( mAddresseeList->selectedItem() );
202
203 if (aItem) return aItem->addressee();
204 return Addressee();
205}
206
207Addressee::List AddresseeDialog::addressees()
208{
209 Addressee::List al;
210 AddresseeItem *aItem = 0;
211
212 if ( mMultiple ) {
213 TQListViewItem *item = mSelectedList->firstChild();
214 while( item ) {
215 aItem = dynamic_cast<AddresseeItem *>( item );
216 if ( aItem ) al.append( aItem->addressee() );
217 item = item->nextSibling();
218 }
219 }
220 else
221 {
222 aItem = dynamic_cast<AddresseeItem *>( mAddresseeList->selectedItem() );
223 if (aItem) al.append( aItem->addressee() );
224 }
225
226 return al;
227}
228
229Addressee AddresseeDialog::getAddressee( TQWidget *parent )
230{
231 AddresseeDialog *dlg = new AddresseeDialog( parent );
232 Addressee addressee;
233 int result = dlg->exec();
234
235 if ( result == TQDialog::Accepted ) {
236 addressee = dlg->addressee();
237 }
238
239 delete dlg;
240 return addressee;
241}
242
243Addressee::List AddresseeDialog::getAddressees( TQWidget *parent )
244{
245 AddresseeDialog *dlg = new AddresseeDialog( parent, true );
246 Addressee::List addressees;
247 int result = dlg->exec();
248 if ( result == TQDialog::Accepted ) {
249 addressees = dlg->addressees();
250 }
251
252 delete dlg;
253 return addressees;
254}
255
256void AddresseeDialog::addressBookChanged()
257{
258 loadAddressBook();
259}
KDialogBase
KDialogBase::plainPage
TQFrame * plainPage()
KDialogBase::setInitialSize
void setInitialSize(const TQSize &s, bool noResize=false)
KDialogBase::slotOk
virtual void slotOk()
KDialog::spacingHint
static int spacingHint()
KLineEdit
KLineEdit::setText
virtual void setText(const TQString &)
KLineEdit::setCompletionMode
virtual void setCompletionMode(TDEGlobalSettings::Completion mode)
TDEABC::AddressBook::Iterator
Address Book Iterator.
Definition: addressbook.h:58
TDEABC::AddressBook
Address Book.
Definition: addressbook.h:44
TDEABC::AddressBook::begin
ConstIterator begin() const
Returns an iterator pointing to the first addressee of address book.
Definition: addressbook.cpp:428
TDEABC::AddressBook::end
ConstIterator end() const
Returns an iterator pointing to the last addressee of address book.
Definition: addressbook.cpp:468
TDEABC::AddresseeDialog
Dialog for selecting address book entries.
Definition: addresseedialog.h:84
TDEABC::AddresseeDialog::AddresseeDialog
AddresseeDialog(TQWidget *parent=0, bool multiple=false)
Construct addressbook entry select dialog.
Definition: addresseedialog.cpp:59
TDEABC::AddresseeDialog::getAddressee
static Addressee getAddressee(TQWidget *parent)
Select a single address book entry.
Definition: addresseedialog.cpp:229
TDEABC::AddresseeDialog::~AddresseeDialog
virtual ~AddresseeDialog()
Destructor.
Definition: addresseedialog.cpp:125
TDEABC::AddresseeDialog::getAddressees
static Addressee::List getAddressees(TQWidget *parent)
Select multiple address book entries.
Definition: addresseedialog.cpp:243
TDEABC::AddresseeDialog::addressee
Addressee addressee()
Return the address chosen.
Definition: addresseedialog.cpp:194
TDEABC::AddresseeDialog::addressees
Addressee::List addressees()
Return the list of addresses chosen.
Definition: addresseedialog.cpp:207
TDEABC::AddresseeItem
Special ListViewItem, that is used by the AddresseeDialog.
Definition: addresseedialog.h:38
TDEABC::AddresseeItem::addressee
Addressee addressee() const
Returns the addressee.
Definition: addresseedialog.h:59
TDEABC::AddresseeItem::key
virtual TQString key(int column, bool ascending) const
Method used by TQListView to sort the items.
Definition: addresseedialog.cpp:44
TDEABC::Addressee
address book entry
Definition: addressee.src.h:75
TDEABC::Addressee::realName
TQString realName() const
Return the name of the addressee.
Definition: addressee.src.cpp:361
TDEABC::Addressee::uid
TQString uid() const
Return unique identifier.
Definition: addressee.src.cpp:174
TDEABC::Addressee::preferredEmail
TQString preferredEmail() const
Return preferred email address.
Definition: addressee.src.cpp:445
TDEABC::StdAddressBook::self
static StdAddressBook * self()
Returns the standard addressbook object.
Definition: stdaddressbook.cpp:57
TDECompletionBase::completionObject
TDECompletion * completionObject(bool hsig=true)
TDECompletion::setIgnoreCase
virtual void setIgnoreCase(bool ignoreCase)
TDECompletion::clear
virtual void clear()
TDECompletion::addItem
void addItem(const TQString &item)
TDEGlobalSettings::CompletionAuto
CompletionAuto
TDEListView
TDEListView::addColumn
virtual int addColumn(const TQString &label, int width=-1)
TDEListView::setFullWidth
void setFullWidth() TDE_DEPRECATED
TDEABC
static data, shared by ALL addressee objects
Definition: address.h:48
tdelocale.h

tdeabc

Skip menu "tdeabc"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeabc

Skip menu "tdeabc"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeabc by doxygen 1.9.4
This website is maintained by Timothy Pearson.