• 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 
34 using namespace TDEABC;
35 
36 AddresseeItem::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 
44 TQString 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 
59 AddresseeDialog::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, TQT_SIGNAL( doubleClicked( TQListViewItem * ) ),
76  TQT_SLOT( slotOk() ) );
77  connect( mAddresseeList, TQT_SIGNAL( selectionChanged( TQListViewItem * ) ),
78  TQT_SLOT( updateEdit( TQListViewItem * ) ) );
79 
80  mAddresseeEdit = new KLineEdit( topWidget );
81  mAddresseeEdit->setCompletionMode( TDEGlobalSettings::CompletionAuto );
82  connect( mAddresseeEdit->completionObject(), TQT_SIGNAL( match( const TQString & ) ),
83  TQT_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, Qt::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, TQT_SIGNAL( doubleClicked( TQListViewItem * ) ),
105  TQT_SLOT( removeSelected() ) );
106 
107  TQPushButton *unselectButton = new TQPushButton( i18n("Unselect"), selectedGroup );
108  connect ( unselectButton, TQT_SIGNAL( clicked() ), TQT_SLOT( removeSelected() ) );
109 
110  connect( mAddresseeList, TQT_SIGNAL( clicked( TQListViewItem * ) ),
111  TQT_SLOT( addSelected( TQListViewItem * ) ) );
112 
113  setInitialSize( TQSize( 650, 350 ) );
114  }
115 
116  mAddressBook = StdAddressBook::self( true );
117  connect( mAddressBook, TQT_SIGNAL( addressBookChanged( AddressBook* ) ),
118  TQT_SLOT( addressBookChanged() ) );
119  connect( mAddressBook, TQT_SIGNAL( loadingFinished( Resource* ) ),
120  TQT_SLOT( addressBookChanged() ) );
121 
122  loadAddressBook();
123 }
124 
125 AddresseeDialog::~AddresseeDialog()
126 {
127 }
128 
129 void 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 
143 void 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 
151 void 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 
164 void AddresseeDialog::updateEdit( TQListViewItem *item )
165 {
166  mAddresseeEdit->setText( item->text( 0 ) );
167  mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
168 }
169 
170 void 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 
184 void 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 
194 Addressee 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 
207 Addressee::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 
229 Addressee 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 
243 Addressee::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 
256 void AddresseeDialog::addressBookChanged()
257 {
258  loadAddressBook();
259 }
TDEABC::AddresseeDialog::getAddressees
static Addressee::List getAddressees(TQWidget *parent)
Select multiple address book entries.
Definition: addresseedialog.cpp:243
TDEABC::AddresseeItem::addressee
Addressee addressee() const
Returns the addressee.
Definition: addresseedialog.h:59
TDEABC::AddresseeItem::AddresseeItem
AddresseeItem(TQListView *parent, const Addressee &addressee)
Constructor.
Definition: addresseedialog.cpp:36
TDECompletion::setIgnoreCase
virtual void setIgnoreCase(bool ignoreCase)
TDEABC::AddressBook
Address Book.
Definition: addressbook.h:43
TDEABC::StdAddressBook::self
static StdAddressBook * self()
Returns the standard addressbook object.
Definition: stdaddressbook.cpp:57
TDEABC::AddresseeItem::key
virtual TQString key(int column, bool ascending) const
Method used by TQListView to sort the items.
Definition: addresseedialog.cpp:44
TDEABC::AddressBook::end
ConstIterator end() const
Returns an iterator pointing to the last addressee of address book.
Definition: addressbook.cpp:468
TDEABC::AddresseeItem
Special ListViewItem, that is used by the AddresseeDialog.
Definition: addresseedialog.h:37
TDECompletion::addItem
void addItem(const TQString &item)
KDialogBase
TDEABC::Addressee::realName
TQString realName() const
Return the name of the addressee.
Definition: addressee.src.cpp:361
TDEABC
static data, shared by ALL addressee objects
Definition: address.h:48
tdelocale.h
TDEABC::AddresseeDialog::~AddresseeDialog
virtual ~AddresseeDialog()
Destructor.
Definition: addresseedialog.cpp:125
TDEABC::Addressee::uid
TQString uid() const
Return unique identifier.
Definition: addressee.src.cpp:174
TDEABC::AddressBook::begin
ConstIterator begin() const
Returns an iterator pointing to the first addressee of address book.
Definition: addressbook.cpp:428
TDECompletion::clear
virtual void clear()
TDEABC::AddresseeDialog::addressee
Addressee addressee()
Return the address chosen.
Definition: addresseedialog.cpp:194
TDEListView
TDEABC::AddresseeDialog
Dialog for selecting address book entries.
Definition: addresseedialog.h:83
TDEGlobalSettings::CompletionAuto
TDEABC::AddressBook::Iterator
Address Book Iterator.
Definition: addressbook.h:57
TDEABC::AddresseeDialog::getAddressee
static Addressee getAddressee(TQWidget *parent)
Select a single address book entry.
Definition: addresseedialog.cpp:229
KLineEdit
TDEABC::Addressee
address book entry
Definition: addressee.src.h:74
TDEABC::AddresseeDialog::addressees
Addressee::List addressees()
Return the list of addresses chosen.
Definition: addresseedialog.cpp:207
TDEABC::AddresseeDialog::AddresseeDialog
AddresseeDialog(TQWidget *parent=0, bool multiple=false)
Construct addressbook entry select dialog.
Definition: addresseedialog.cpp:59
TDEABC::Addressee::preferredEmail
TQString preferredEmail() const
Return preferred email address.
Definition: addressee.src.cpp:445
TDECompletionBase::completionObject
TDECompletion * completionObject(bool hsig=true)
KLineEdit::setCompletionMode
virtual void setCompletionMode(TDEGlobalSettings::Completion mode)
KLineEdit::setText
virtual void setText(const TQString &)

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
  •     tdecore
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  • tdeioslave
  •   http
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeabc by doxygen 1.8.8
This website is maintained by Timothy Pearson.