summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Side-by-side diff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp37
-rw-r--r--kaddressbook/phoneeditwidget.h18
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
@@ -74,34 +74,29 @@ PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
QLabel *temp = new QLabel( i18n("Phone Number"),hb );
temp->setAlignment( Qt::AlignCenter );
temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
hbLayout->add( temp );
- appendEditCombo();
- appendEditCombo();
- appendEditCombo();
setDefaults();
+ mTypeNumberEditList.setAutoDelete( true );
}
PhoneEditWidget::~PhoneEditWidget()
{
}
void PhoneEditWidget::setDefaults()
{
- PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ mTypeNumberEditList.clear();
+ PhoneTypeNumberEdit* edit = appendEditCombo();
KABC::PhoneNumber phoneNumber;
phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
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();
- }
+
}
void PhoneEditWidget::addNumber()
{
@@ -110,24 +105,37 @@ PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
{
PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
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)) );
mainLayout->add( edit );
mTypeNumberEditList.append( edit );
return edit;
}
+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 )
{
if ( li.isEmpty() ) {
setDefaults();
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 ) {
if ( edit ) {
edit->setPhoneNumber( (*it ) );
edit = mTypeNumberEditList.next();
@@ -139,10 +147,8 @@ void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
while ( edit ) {
edit->hide();
edit = mTypeNumberEditList.next();
}
- //mainLayout->invalidate ();
- mw->update();
}
KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
{
KABC::PhoneNumber::List retList;
@@ -514,8 +520,9 @@ PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *
}
PhoneEditDialog::~PhoneEditDialog()
{
+ qDebug("PhoneEditDialog::~PhoneEditDialog() ");
}
void PhoneEditDialog::slotAddPhoneNumber()
{
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 6a514ed..c730c7b 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -65,12 +65,15 @@ class PhoneEditWidget : public QScrollView
void modified();
void typeChange( int oldType, int newType );
private slots:
- void addNumber();
+ void deleteEdit( PhoneTypeNumberEdit* ew );
+ void addNumber();
+ void pendingDelete();
protected:
private:
+ PhoneTypeNumberEdit* mPendingDelete;
void setDefaults();
PhoneTypeNumberEdit* appendEditCombo();
QWidget* mw;
QVBoxLayout* mainLayout;
@@ -211,18 +214,18 @@ public:
connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
this, SLOT ( textChanged ( const QString & ) ) );
mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
- mIsValid = true;
}
-
+ ~PhoneTypeNumberEdit() {
+ // qDebug("~PhoneTypeNumberEdit() ");
+ }
void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
{
mPhoneNumber = phoneNumber;
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
mNumber->setText( mPhoneNumber.number() );
- mIsValid = true;
show();
}
KABC::PhoneNumber phoneNumber()
@@ -233,9 +236,8 @@ public:
return mPhoneNumber;
}
bool isValid()
{
- if ( !mIsValid ) return false;
if ( mNumber->text().isEmpty() )return false;
return true;
}
private slots:
@@ -248,11 +250,9 @@ public:
}
}
void deleteNumber()
{
- emit modified();
- hide();
- mIsValid = false;
+ emit deleteMe( this );
}
void comboTypeChange( int index )
{
int old = mPhoneNumber.type();
@@ -274,11 +274,11 @@ public:
}
signals:
void typeChange( int oldType, int newType );
void modified();
+ void deleteMe( PhoneTypeNumberEdit* );
private:
- bool mIsValid;
KABC::PhoneNumber mPhoneNumber;
QPushButton* mMinusButton;
KComboBox *mCombo;
KLineEdit *mNumber;