Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 19bb676..a435959 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp @@ -192,49 +192,50 @@ void PhoneEditWidget::updateCombos() mPrefCombo->updateTypes(); mSecondCombo->updateTypes(); mThirdCombo->updateTypes(); mFourthCombo->updateTypes(); } KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() { KABC::PhoneNumber::List retList; KABC::PhoneNumber::List::Iterator it; for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) if ( !(*it).number().isEmpty() ) retList.append( *it ); return retList; } void PhoneEditWidget::edit() { PhoneEditDialog dlg( mPhoneList, this ); if ( dlg.exec() ) { if ( dlg.changed() ) { - mPhoneList = dlg.phoneNumbers(); + KABC::PhoneNumber::List list = dlg.phoneNumbers(); + setPhoneNumbers( list ); updateCombos(); updateLineEdits(); emit modified(); } } } void PhoneEditWidget::updatePrefEdit() { updateEdit( mPrefCombo ); } void PhoneEditWidget::updateSecondEdit() { updateEdit( mSecondCombo ); } void PhoneEditWidget::updateThirdEdit() { updateEdit( mThirdCombo ); } void PhoneEditWidget::updateFourthEdit() { @@ -318,48 +319,51 @@ public: PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ); void setPhoneNumber( const KABC::PhoneNumber &number ) { mPhoneNumber = number; makeText(); } QString key() { return mPhoneNumber.id(); } QString country() { return ""; } QString region() { return ""; } QString number() { return ""; } KABC::PhoneNumber phoneNumber() { return mPhoneNumber; } private: void makeText(); KABC::PhoneNumber mPhoneNumber; }; PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ) : QListViewItem( parent ), mPhoneNumber( number ) { +#ifdef DESKTOP_VERSION + setRenameEnabled ( 0, true ); +#endif makeText(); } void PhoneViewItem::makeText() { /** * Will be used in future versions of kaddressbook/libkabc setText( 0, mPhoneNumber.country() ); setText( 1, mPhoneNumber.region() ); setText( 2, mPhoneNumber.number() ); setText( 3, mPhoneNumber.typeLabel() ); */ setText( 0, mPhoneNumber.number() ); setText( 1, mPhoneNumber.typeLabel() ); } PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent, name, true) { mPhoneNumberList = list; @@ -385,52 +389,69 @@ PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget * layout->addWidget( mListView, 0, 0 ); layout->addWidget( buttonBox, 0, 1 ); connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); KABC::PhoneNumber::List::Iterator it; for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) new PhoneViewItem( mListView, *it ); mChanged = false; } PhoneEditDialog::~PhoneEditDialog() { } void PhoneEditDialog::slotAddPhoneNumber() { KABC::PhoneNumber tmp( "", 0 ); PhoneTypeDialog dlg( tmp, this ); if ( dlg.exec() ) { + QListViewItem* i = mListView->firstChild(); KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); + bool insert = true; + while ( i ) { + PhoneViewItem* p = ( PhoneViewItem* ) i; + KABC::PhoneNumber pn = p->phoneNumber(); + if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) { + if ( p->text(0).isEmpty()) { + p->setPhoneNumber( phoneNumber ); + mPhoneNumberList.remove( pn ); + mPhoneNumberList.append( phoneNumber ); + insert = false; + break; + } + } + i = i->nextSibling(); + } + if ( insert ) { mPhoneNumberList.append( phoneNumber ); new PhoneViewItem( mListView, phoneNumber ); - + } mChanged = true; } } void PhoneEditDialog::slotRemovePhoneNumber() { PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); if ( !item ) return; mPhoneNumberList.remove( item->phoneNumber() ); QListViewItem *currItem = mListView->currentItem(); mListView->takeItem( currItem ); delete currItem; mChanged = true; } void PhoneEditDialog::slotEditPhoneNumber() { PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); if ( !item ) return; @@ -483,48 +504,50 @@ PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); // fill widgets mNumber->setText( mPhoneNumber.number() ); mTypeList = KABC::PhoneNumber::typeList(); mTypeList.remove( KABC::PhoneNumber::Pref ); KABC::PhoneNumber::TypeList::Iterator it; for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); for ( int i = 0; i < mGroup->count(); ++i ) { int type = mPhoneNumber.type(); QCheckBox *box = (QCheckBox*)mGroup->find( i ); box->setChecked( type & mTypeList[ i ] ); } mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); + mNumber->setFocus(); + mNumber->setSelection( 0, 1024); } KABC::PhoneNumber PhoneTypeDialog::phoneNumber() { mPhoneNumber.setNumber( mNumber->text() ); int type = 0; for ( int i = 0; i < mGroup->count(); ++i ) { QCheckBox *box = (QCheckBox*)mGroup->find( i ); if ( box->isChecked() ) type += mTypeList[ i ]; } if ( mPreferredBox->isChecked() ) mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); else mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); return mPhoneNumber; } #ifndef KAB_EMBEDDED #include "phoneeditwidget.moc" #endif //KAB_EMBEDDED |