summaryrefslogtreecommitdiffabout
path: root/kabc
Side-by-side diff
Diffstat (limited to 'kabc') (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 ) :
{
- setText( Name, addressee.realName() );
- setText( Email, addressee.preferredEmail() );
+ QString name = addressee.familyName()+", "+ addressee.givenName();
+ if ( name.length() == 2 )
+ name = addressee.realName();
+ setText( Name,name);
+ setText( Email, addressee.preferredEmail() );
}
@@ -47,13 +50,8 @@ QString AddresseeItem::key( int column, bool ) const
{
- /* LR
+
if (column == Email) {
QString value = text(Email);
- QRegExp emailRe("<\\S*>");
- int match = emailRe.search(value);
- if (match > -1)
- value = value.mid(match + 1, emailRe.matchedLength() - 2);
-
- return value.lower();
+ int val = value.findRev("@");
+ return value.mid( val) + value.left( val );
}
- */
return text(column).lower();
@@ -79,15 +77,10 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
SLOT( slotOk() ) );
- connect( mAddresseeList, SIGNAL( selectionChanged( QListViewItem * ) ),
- SLOT( updateEdit( QListViewItem * ) ) );
- mAddresseeEdit = new KLineEdit( topWidget );
- //mAddresseeEdit->setCompletionMode( KGlobalSettings::CompletionAuto );
- // connect( mAddresseeEdit->completionObject(), SIGNAL( match( const QString & ) ),
- // SLOT( selectItem( const QString & ) ) );
+ mAddresseeEdit = new QLineEdit( topWidget );
+ connect( mAddresseeEdit, SIGNAL( returnPressed() ),
+ SLOT( loadAddressBook() ) );
mAddresseeEdit->setFocus();
- //mAddresseeEdit->completionObject()->setIgnoreCase( true );
+
listLayout->addWidget( mAddresseeEdit );
- //setInitialSize( QSize( 450, 300 ) );
-
if ( mMultiple ) {
@@ -114,4 +107,5 @@ AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
SLOT( addSelected( QListViewItem * ) ) );
+ connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ),
+ SLOT( selectNextItem( QListViewItem * ) ) );
- // setInitialSize( QSize( 650, 350 ) );
}
@@ -135,3 +129,14 @@ void AddresseeDialog::loadAddressBook()
mItemDict.clear();
+ if ( mAddresseeEdit->text().isEmpty() ) {
+ AddressBook::Iterator it;
+ for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
+ new AddresseeItem( mAddresseeList, (*it) );
+ }
+ return;
+ }
//mAddresseeEdit->completionObject()->clear();
+ QRegExp re;
+ re.setWildcard(true); // most people understand these better.
+ re.setCaseSensitive(false);
+ re.setPattern( "*"+ mAddresseeEdit->text() + "*");
@@ -139,5 +144,12 @@ void AddresseeDialog::loadAddressBook()
for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
- AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
- addCompletionItem( (*it).realName(), item );
- addCompletionItem( (*it).preferredEmail(), item );
+ QString name = (*it).familyName()+", "+ (*it).givenName();
+ if ( name.length() == 2 )
+ name = (*it).realName();
+ name += (*it).preferredEmail();
+#if QT_VERSION >= 300
+ if (re.search(name)) != -1)
+#else
+ if (re.match(name) != -1)
+#endif
+ AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
}
@@ -172,2 +184,12 @@ void AddresseeDialog::updateEdit( QListViewItem *item )
+void AddresseeDialog::selectNextItem( QListViewItem *item )
+{
+ addSelected( item );
+ QListViewItem *next = item->nextSibling();
+ if ( next ) {
+ next->setSelected( true );
+ item->setSelected( false );
+ mAddresseeList->setCurrentItem( next );
+ }
+}
void AddresseeDialog::addSelected( QListViewItem *item )
@@ -184,2 +206,3 @@ void AddresseeDialog::addSelected( QListViewItem *item )
}
+
}
@@ -191,5 +214,7 @@ void AddresseeDialog::removeSelected()
if ( !addrItem ) return;
-
+ QListViewItem *next = item->nextSibling();
mSelectedDict.remove( addrItem->addressee().uid() );
delete addrItem;
+ if ( next )
+ next->setSelected( true );
}
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
void selectItem( const QString & );
+ void selectNextItem( QListViewItem *item );
void updateEdit( QListViewItem *item );
@@ -134,2 +135,3 @@ class AddresseeDialog : public KDialogBase
void removeSelected();
+ void loadAddressBook();
@@ -139,3 +141,2 @@ class AddresseeDialog : public KDialogBase
private:
- void loadAddressBook();
void addCompletionItem( const QString &str, QListViewItem *item );
@@ -145,3 +146,3 @@ class AddresseeDialog : public KDialogBase
KListView *mAddresseeList;
- KLineEdit *mAddresseeEdit;
+ QLineEdit *mAddresseeEdit;