-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 37 | ||||
-rw-r--r-- | kaddressbook/phoneeditwidget.h | 18 |
2 files changed, 31 insertions, 24 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index b20275d..997fc05 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp @@ -77,6 +77,4 @@ PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) hbLayout->add( temp ); - appendEditCombo(); - appendEditCombo(); - appendEditCombo(); setDefaults(); + mTypeNumberEditList.setAutoDelete( true ); } @@ -88,3 +86,4 @@ void PhoneEditWidget::setDefaults() { - PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); + mTypeNumberEditList.clear(); + PhoneTypeNumberEdit* edit = appendEditCombo(); KABC::PhoneNumber phoneNumber; @@ -92,13 +91,9 @@ void PhoneEditWidget::setDefaults() edit->setPhoneNumber( phoneNumber ); - edit = mTypeNumberEditList.next(); + edit = appendEditCombo(); phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); edit->setPhoneNumber( phoneNumber ); - edit = mTypeNumberEditList.next(); + edit = appendEditCombo(); phoneNumber.setType( KABC::PhoneNumber::Cell ); edit->setPhoneNumber( phoneNumber ); - edit = mTypeNumberEditList.next(); - while ( edit ) { - edit->hide(); - edit = mTypeNumberEditList.next(); - } + } @@ -113,2 +108,3 @@ PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); + connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) ); connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); @@ -120,2 +116,13 @@ PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() +void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew ) +{ + mPendingDelete = ew; + QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) ); +} +void PhoneEditWidget::pendingDelete() +{ + mTypeNumberEditList.removeRef( mPendingDelete ); + emit modified(); +} + void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) @@ -125,6 +132,7 @@ void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) return; - } + } + mTypeNumberEditList.clear(); KABC::PhoneNumber::List::Iterator it; KABC::PhoneNumber::List list = li; - PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); + PhoneTypeNumberEdit* edit = 0;//mTypeNumberEditList.first(); for ( it = list.begin(); it != list.end(); ++it ) { @@ -142,4 +150,2 @@ void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) } - //mainLayout->invalidate (); - mw->update(); } @@ -517,2 +523,3 @@ PhoneEditDialog::~PhoneEditDialog() { + qDebug("PhoneEditDialog::~PhoneEditDialog() "); } diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h index 6a514ed..c730c7b 100644 --- a/kaddressbook/phoneeditwidget.h +++ b/kaddressbook/phoneeditwidget.h @@ -68,3 +68,5 @@ class PhoneEditWidget : public QScrollView private slots: - void addNumber(); + void deleteEdit( PhoneTypeNumberEdit* ew ); + void addNumber(); + void pendingDelete(); protected: @@ -72,2 +74,3 @@ class PhoneEditWidget : public QScrollView private: + PhoneTypeNumberEdit* mPendingDelete; void setDefaults(); @@ -214,5 +217,6 @@ public: mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); - mIsValid = true; } - + ~PhoneTypeNumberEdit() { + // qDebug("~PhoneTypeNumberEdit() "); + } void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) @@ -223,3 +227,2 @@ public: mNumber->setText( mPhoneNumber.number() ); - mIsValid = true; show(); @@ -236,3 +239,2 @@ public: { - if ( !mIsValid ) return false; if ( mNumber->text().isEmpty() )return false; @@ -251,5 +253,3 @@ public: { - emit modified(); - hide(); - mIsValid = false; + emit deleteMe( this ); } @@ -277,5 +277,5 @@ void typeChange( int oldType, int newType ); void modified(); + void deleteMe( PhoneTypeNumberEdit* ); private: - bool mIsValid; KABC::PhoneNumber mPhoneNumber; |