summaryrefslogtreecommitdiffabout
path: root/kabc
Unidiff
Diffstat (limited to 'kabc') (more/less context) (show whitespace changes)
-rw-r--r--kabc/addresseedialog.cpp69
-rw-r--r--kabc/addresseedialog.h5
2 files changed, 50 insertions, 24 deletions
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index 033e857..cb6c12f 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -39,23 +39,21 @@ AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) :
39 QListViewItem( parent ), 39 QListViewItem( parent ),
40 mAddressee( addressee ) 40 mAddressee( addressee )
41{ 41{
42 setText( Name, addressee.realName() ); 42 QString name = addressee.familyName()+", "+ addressee.givenName();
43 if ( name.length() == 2 )
44 name = addressee.realName();
45 setText( Name,name);
43 setText( Email, addressee.preferredEmail() ); 46 setText( Email, addressee.preferredEmail() );
44} 47}
45 48
46QString AddresseeItem::key( int column, bool ) const 49QString AddresseeItem::key( int column, bool ) const
47{ 50{
48 /* LR 51
49 if (column == Email) { 52 if (column == Email) {
50 QString value = text(Email); 53 QString value = text(Email);
51 QRegExp emailRe("<\\S*>"); 54 int val = value.findRev("@");
52 int match = emailRe.search(value); 55 return value.mid( val) + value.left( val );
53 if (match > -1)
54 value = value.mid(match + 1, emailRe.matchedLength() - 2);
55
56 return value.lower();
57 } 56 }
58 */
59 return text(column).lower(); 57 return text(column).lower();
60} 58}
61 59
@@ -77,18 +75,13 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
77 listLayout->addWidget( mAddresseeList ); 75 listLayout->addWidget( mAddresseeList );
78 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), 76 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ),
79 SLOT( slotOk() ) ); 77 SLOT( slotOk() ) );
80 connect( mAddresseeList, SIGNAL( selectionChanged( QListViewItem * ) ),
81 SLOT( updateEdit( QListViewItem * ) ) );
82 78
83 mAddresseeEdit = new KLineEdit( topWidget ); 79 mAddresseeEdit = new QLineEdit( topWidget );
84 //mAddresseeEdit->setCompletionMode( KGlobalSettings::CompletionAuto ); 80 connect( mAddresseeEdit, SIGNAL( returnPressed() ),
85 // connect( mAddresseeEdit->completionObject(), SIGNAL( match( const QString & ) ), 81 SLOT( loadAddressBook() ) );
86 // SLOT( selectItem( const QString & ) ) );
87 mAddresseeEdit->setFocus(); 82 mAddresseeEdit->setFocus();
88 //mAddresseeEdit->completionObject()->setIgnoreCase( true );
89 listLayout->addWidget( mAddresseeEdit );
90 83
91 //setInitialSize( QSize( 450, 300 ) ); 84 listLayout->addWidget( mAddresseeEdit );
92 85
93 if ( mMultiple ) { 86 if ( mMultiple ) {
94 QBoxLayout *selectedLayout = new QVBoxLayout; 87 QBoxLayout *selectedLayout = new QVBoxLayout;
@@ -112,8 +105,9 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
112 105
113 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), 106 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ),
114 SLOT( addSelected( QListViewItem * ) ) ); 107 SLOT( addSelected( QListViewItem * ) ) );
108 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ),
109 SLOT( selectNextItem( QListViewItem * ) ) );
115 110
116 // setInitialSize( QSize( 650, 350 ) );
117 } 111 }
118 112
119 mAddressBook = StdAddressBook::self( true ); 113 mAddressBook = StdAddressBook::self( true );
@@ -133,13 +127,31 @@ void AddresseeDialog::loadAddressBook()
133{ 127{
134 mAddresseeList->clear(); 128 mAddresseeList->clear();
135 mItemDict.clear(); 129 mItemDict.clear();
130 if ( mAddresseeEdit->text().isEmpty() ) {
131 AddressBook::Iterator it;
132 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
133 new AddresseeItem( mAddresseeList, (*it) );
134 }
135 return;
136 }
136 //mAddresseeEdit->completionObject()->clear(); 137 //mAddresseeEdit->completionObject()->clear();
138 QRegExp re;
139 re.setWildcard(true); // most people understand these better.
140 re.setCaseSensitive(false);
141 re.setPattern( "*"+ mAddresseeEdit->text() + "*");
137 142
138 AddressBook::Iterator it; 143 AddressBook::Iterator it;
139 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 144 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
145 QString name = (*it).familyName()+", "+ (*it).givenName();
146 if ( name.length() == 2 )
147 name = (*it).realName();
148 name += (*it).preferredEmail();
149#if QT_VERSION >= 300
150 if (re.search(name)) != -1)
151#else
152 if (re.match(name) != -1)
153#endif
140 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); 154 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
141 addCompletionItem( (*it).realName(), item );
142 addCompletionItem( (*it).preferredEmail(), item );
143 } 155 }
144} 156}
145 157
@@ -170,6 +182,16 @@ void AddresseeDialog::updateEdit( QListViewItem *item )
170 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() ); 182 mAddresseeEdit->setSelection( 0, item->text( 0 ).length() );
171} 183}
172 184
185void AddresseeDialog::selectNextItem( QListViewItem *item )
186{
187 addSelected( item );
188 QListViewItem *next = item->nextSibling();
189 if ( next ) {
190 next->setSelected( true );
191 item->setSelected( false );
192 mAddresseeList->setCurrentItem( next );
193 }
194}
173void AddresseeDialog::addSelected( QListViewItem *item ) 195void AddresseeDialog::addSelected( QListViewItem *item )
174{ 196{
175 AddresseeItem *addrItem = (AddresseeItem *)( item ); 197 AddresseeItem *addrItem = (AddresseeItem *)( item );
@@ -182,6 +204,7 @@ void AddresseeDialog::addSelected( QListViewItem *item )
182 selectedItem = new AddresseeItem( mSelectedList, a ); 204 selectedItem = new AddresseeItem( mSelectedList, a );
183 mSelectedDict.insert( a.uid(), selectedItem ); 205 mSelectedDict.insert( a.uid(), selectedItem );
184 } 206 }
207
185} 208}
186 209
187void AddresseeDialog::removeSelected() 210void AddresseeDialog::removeSelected()
@@ -189,9 +212,11 @@ void AddresseeDialog::removeSelected()
189 QListViewItem *item = mSelectedList->selectedItem(); 212 QListViewItem *item = mSelectedList->selectedItem();
190 AddresseeItem *addrItem = (AddresseeItem *)( item ); 213 AddresseeItem *addrItem = (AddresseeItem *)( item );
191 if ( !addrItem ) return; 214 if ( !addrItem ) return;
192 215 QListViewItem *next = item->nextSibling();
193 mSelectedDict.remove( addrItem->addressee().uid() ); 216 mSelectedDict.remove( addrItem->addressee().uid() );
194 delete addrItem; 217 delete addrItem;
218 if ( next )
219 next->setSelected( true );
195} 220}
196 221
197Addressee AddresseeDialog::addressee() 222Addressee AddresseeDialog::addressee()
diff --git a/kabc/addresseedialog.h b/kabc/addresseedialog.h
index 74e7871..99c74bd 100644
--- a/kabc/addresseedialog.h
+++ b/kabc/addresseedialog.h
@@ -129,21 +129,22 @@ class AddresseeDialog : public KDialogBase
129 129
130 private slots: 130 private slots:
131 void selectItem( const QString & ); 131 void selectItem( const QString & );
132 void selectNextItem( QListViewItem *item );
132 void updateEdit( QListViewItem *item ); 133 void updateEdit( QListViewItem *item );
133 void addSelected( QListViewItem *item ); 134 void addSelected( QListViewItem *item );
134 void removeSelected(); 135 void removeSelected();
136 void loadAddressBook();
135 137
136 protected slots: 138 protected slots:
137 void addressBookChanged(); 139 void addressBookChanged();
138 140
139 private: 141 private:
140 void loadAddressBook();
141 void addCompletionItem( const QString &str, QListViewItem *item ); 142 void addCompletionItem( const QString &str, QListViewItem *item );
142 143
143 bool mMultiple; 144 bool mMultiple;
144 145
145 KListView *mAddresseeList; 146 KListView *mAddresseeList;
146 KLineEdit *mAddresseeEdit; 147 QLineEdit *mAddresseeEdit;
147 148
148 KListView *mSelectedList; 149 KListView *mSelectedList;
149 150