-rw-r--r-- | kabc/addresseedialog.cpp | 18 | ||||
-rw-r--r-- | kabc/addresseedialog.h | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp index e89584d..3e7b72c 100644 --- a/kabc/addresseedialog.cpp +++ b/kabc/addresseedialog.cpp @@ -15,184 +15,196 @@ You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <qlayout.h> #include <qpushbutton.h> #include <qgroupbox.h> #include <qapplication.h> #include <qregexp.h> #include <qvbox.h> #include <qlabel.h> #include <klocale.h> #include <kdebug.h> #include <kglobalsettings.h> #include "stdaddressbook.h" #include "addresseedialog.h" #include "KDGanttMinimizeSplitter.h" //#include "addresseedialog.moc" using namespace KABC; AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : QListViewItem( parent ), mAddressee( addressee ) { setText( Name,addressee.realName()); setText( Email, addressee.preferredEmail() ); + setText( Category, addressee.categories().join(";") ); } QString AddresseeItem::key( int column, bool ) const { if (column == Email) { QString value = text(Email); int val = value.findRev("@"); return value.mid( val) + value.left( val ); } return text(column).lower(); } AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), Ok|Cancel, No, parent ), mMultiple( multiple ) { qDebug("NEW AddresseeDialog "); QWidget *topWidget = plainPage(); QBoxLayout *topLayout = new QHBoxLayout( topWidget ); KDGanttMinimizeSplitter* mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, topWidget); mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); topLayout->addWidget(mMiniSplitter ); QWidget *listWidget = new QWidget( mMiniSplitter ); QBoxLayout *listLayout = new QVBoxLayout (listWidget) ; //topLayout->addLayout( listLayout ); mAddresseeList = new KListView( listWidget ); mAddresseeList->addColumn( i18n("Name") ); mAddresseeList->addColumn( i18n("Email") ); + mAddresseeList->addColumn( i18n("Category") ); mAddresseeList->setAllColumnsShowFocus( true ); mAddresseeList->setFullWidth( true ); listLayout->addWidget( mAddresseeList ); connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), SLOT( slotOk() ) ); - mAddresseeEdit = new QLineEdit( listWidget ); + QHBox* searchBox = new QHBox ( listWidget ); + mAddresseeEdit = new QLineEdit( searchBox ); connect( mAddresseeEdit, SIGNAL( returnPressed() ), SLOT( loadAddressBook() ) ); mAddresseeEdit->setFocus(); + QPushButton *searchButton = new QPushButton( i18n("Search!"), searchBox ); + connect ( searchButton, SIGNAL( clicked() ), SLOT( loadAddressBook() ) ); - listLayout->addWidget( mAddresseeEdit ); + listLayout->addWidget( searchBox ); if ( mMultiple ) { //QBoxLayout *selectedLayout = new QVBoxLayout; //topLayout->addLayout( selectedLayout ); //topLayout->setSpacing( spacingHint() ); QVBox *selectedGroup = new QVBox( mMiniSplitter ); new QLabel ( i18n("Selected:"), selectedGroup ); //selectedLayout->addWidget( selectedGroup ); mSelectedList = new KListView( selectedGroup ); mSelectedList->addColumn( i18n("Name") ); mSelectedList->addColumn( i18n("Email") ); mSelectedList->setAllColumnsShowFocus( true ); mSelectedList->setFullWidth( true ); - connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), + //connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), + // SLOT( removeSelected() ) ); + connect( mSelectedList, SIGNAL( clicked( QListViewItem * ) ), + SLOT( removeSelected() ) ); + connect( mSelectedList, SIGNAL( returnPressed( QListViewItem *) ), SLOT( removeSelected() ) ); +#if 0 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); +#endif connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), SLOT( addSelected( QListViewItem * ) ) ); connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), SLOT( selectNextItem( QListViewItem * ) ) ); } mAddressBook = StdAddressBook::self( true ); connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), SLOT( addressBookChanged() ) ); #if 0 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), SLOT( addressBookChanged() ) ); #endif loadAddressBook(); QValueList<int> splitterSize; splitterSize.append( ( width() / 5 ) * 3 ); splitterSize.append( ( width() / 5 ) *2 ); mMiniSplitter->setSizes( splitterSize ); } AddresseeDialog::~AddresseeDialog() { qDebug("DELETE AddresseeDialog "); } void AddresseeDialog::loadAddressBook() { mAddresseeList->clear(); mItemDict.clear(); if ( mAddresseeEdit->text().isEmpty() ) { AddressBook::Iterator it; for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) continue; 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() + "*"); AddressBook::Iterator it; for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) continue; QString name = (*it).realName(); name += (*it).preferredEmail(); + name += (*it).categories().join(";"); #if QT_VERSION >= 0x030000 if (re.search(name) != -1) #else if (re.match(name) != -1) #endif AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); } } void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) { if ( str.isEmpty() ) return; mItemDict.insert( str, item ); //mAddresseeEdit->completionObject()->addItem( str ); } void AddresseeDialog::selectItem( const QString &str ) { if ( str.isEmpty() ) return; QListViewItem *item = mItemDict.find( str ); if ( item ) { mAddresseeList->blockSignals( true ); mAddresseeList->setSelected( item, true ); mAddresseeList->ensureItemVisible( item ); mAddresseeList->blockSignals( false ); } } void AddresseeDialog::updateEdit( QListViewItem *item ) { diff --git a/kabc/addresseedialog.h b/kabc/addresseedialog.h index 99c74bd..6fab62d 100644 --- a/kabc/addresseedialog.h +++ b/kabc/addresseedialog.h @@ -14,65 +14,65 @@ You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef KABC_ADDRESSEEDIALOG_H #define KABC_ADDRESSEEDIALOG_H #include <qdict.h> #include <kdialogbase.h> #include <klineedit.h> #include <klistview.h> #include "addressbook.h" namespace KABC { /** @short Special ListViewItem, that is used by the AddresseeDialog. */ class AddresseeItem : public QListViewItem { public: /** Type of column @li @p Name - Name in Addressee @li @p Email - Email in Addressee */ - enum columns { Name = 0, Email = 1 }; + enum columns { Name = 0, Email = 1,Category = 2 }; /** Constructor. @param parent The parent listview. @param addressee The associated addressee. */ AddresseeItem( QListView *parent, const Addressee &addressee ); /** Returns the addressee. */ Addressee addressee() const { return mAddressee; } /** Method used by QListView to sort the items. */ virtual QString key( int column, bool ascending ) const; private: Addressee mAddressee; }; /** @short Dialog for selecting address book entries. This class provides a dialog for selecting entries from the standard KDE address book. Use the getAddressee() function to open a modal dialog, returning an address book entry. In the dialog you can select an entry from the list with the mouse or type in the first letters of the name or email address you are searching for. The |