summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseedialog.cpp73
-rw-r--r--kabc/addresseedialog.h5
2 files changed, 52 insertions, 26 deletions
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index 033e857..cb6c12f 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -41,4 +41,7 @@ AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) :
41{ 41{
42 setText( Name, addressee.realName() ); 42 QString name = addressee.familyName()+", "+ addressee.givenName();
43 setText( Email, addressee.preferredEmail() ); 43 if ( name.length() == 2 )
44 name = addressee.realName();
45 setText( Name,name);
46 setText( Email, addressee.preferredEmail() );
44} 47}
@@ -47,13 +50,8 @@ QString 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();
@@ -79,15 +77,10 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
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 ); 83
89 listLayout->addWidget( mAddresseeEdit ); 84 listLayout->addWidget( mAddresseeEdit );
90 85
91 //setInitialSize( QSize( 450, 300 ) );
92
93 if ( mMultiple ) { 86 if ( mMultiple ) {
@@ -114,4 +107,5 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
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 }
@@ -135,3 +129,14 @@ void AddresseeDialog::loadAddressBook()
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
@@ -139,5 +144,12 @@ void AddresseeDialog::loadAddressBook()
139 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 144 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
140 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); 145 QString name = (*it).familyName()+", "+ (*it).givenName();
141 addCompletionItem( (*it).realName(), item ); 146 if ( name.length() == 2 )
142 addCompletionItem( (*it).preferredEmail(), item ); 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
154 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
143 } 155 }
@@ -172,2 +184,12 @@ void AddresseeDialog::updateEdit( QListViewItem *item )
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 )
@@ -184,2 +206,3 @@ void AddresseeDialog::addSelected( QListViewItem *item )
184 } 206 }
207
185} 208}
@@ -191,5 +214,7 @@ void AddresseeDialog::removeSelected()
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}
diff --git a/kabc/addresseedialog.h b/kabc/addresseedialog.h
index 74e7871..99c74bd 100644
--- a/kabc/addresseedialog.h
+++ b/kabc/addresseedialog.h
@@ -131,2 +131,3 @@ class AddresseeDialog : public KDialogBase
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 );
@@ -134,2 +135,3 @@ class AddresseeDialog : public KDialogBase
134 void removeSelected(); 135 void removeSelected();
136 void loadAddressBook();
135 137
@@ -139,3 +141,2 @@ class AddresseeDialog : public KDialogBase
139 private: 141 private:
140 void loadAddressBook();
141 void addCompletionItem( const QString &str, QListViewItem *item ); 142 void addCompletionItem( const QString &str, QListViewItem *item );
@@ -145,3 +146,3 @@ class AddresseeDialog : public KDialogBase
145 KListView *mAddresseeList; 146 KListView *mAddresseeList;
146 KLineEdit *mAddresseeEdit; 147 QLineEdit *mAddresseeEdit;
147 148