summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (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
@@ -46,131 +46,137 @@
46 46
47#include <kabc/phonenumber.h> 47#include <kabc/phonenumber.h>
48 48
49#include "typecombo.h" 49#include "typecombo.h"
50 50
51#include "phoneeditwidget.h" 51#include "phoneeditwidget.h"
52 52
53PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 53PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
54 : QScrollView(parent,name) 54 : QScrollView(parent,name)
55{ 55{
56 setFrameStyle ( QFrame::Panel | QFrame::Plain ); 56 setFrameStyle ( QFrame::Panel | QFrame::Plain );
57 setLineWidth ( 1 ); 57 setLineWidth ( 1 );
58 setMidLineWidth ( 1 ); 58 setMidLineWidth ( 1 );
59 mw = new QWidget ( viewport() ); 59 mw = new QWidget ( viewport() );
60 addChild(mw); 60 addChild(mw);
61 setResizePolicy( AutoOneFit ); 61 setResizePolicy( AutoOneFit );
62 mainLayout = new QVBoxLayout ( mw ); 62 mainLayout = new QVBoxLayout ( mw );
63 mainLayout->setMargin( 2 ); 63 mainLayout->setMargin( 2 );
64 mainLayout->setSpacing( 2 ); 64 mainLayout->setSpacing( 2 );
65 QWidget* hb = new QWidget ( mw ); 65 QWidget* hb = new QWidget ( mw );
66 mainLayout->add( hb ); 66 mainLayout->add( hb );
67 QHBoxLayout* hbLayout = new QHBoxLayout ( hb ); 67 QHBoxLayout* hbLayout = new QHBoxLayout ( hb );
68 QPushButton *addBut = new QPushButton ( "add", hb ); 68 QPushButton *addBut = new QPushButton ( "add", hb );
69 hbLayout->add( addBut ); 69 hbLayout->add( addBut );
70 addBut->setPixmap ( SmallIcon("plus")); 70 addBut->setPixmap ( SmallIcon("plus"));
71 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); 71 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
72 connect(addBut,SIGNAL(clicked()),SLOT(addNumber())); 72 connect(addBut,SIGNAL(clicked()),SLOT(addNumber()));
73 //QLabel * temp = new QLabel( i18n("Phone Type"), hb ); 73 //QLabel * temp = new QLabel( i18n("Phone Type"), hb );
74 QLabel *temp = new QLabel( i18n("Phone Number"),hb ); 74 QLabel *temp = new QLabel( i18n("Phone Number"),hb );
75 temp->setAlignment( Qt::AlignCenter ); 75 temp->setAlignment( Qt::AlignCenter );
76 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 76 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
77 hbLayout->add( temp ); 77 hbLayout->add( temp );
78 appendEditCombo();
79 appendEditCombo();
80 appendEditCombo();
81 setDefaults(); 78 setDefaults();
79 mTypeNumberEditList.setAutoDelete( true );
82} 80}
83 81
84PhoneEditWidget::~PhoneEditWidget() 82PhoneEditWidget::~PhoneEditWidget()
85{ 83{
86} 84}
87void PhoneEditWidget::setDefaults() 85void PhoneEditWidget::setDefaults()
88{ 86{
89 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); 87 mTypeNumberEditList.clear();
88 PhoneTypeNumberEdit* edit = appendEditCombo();
90 KABC::PhoneNumber phoneNumber; 89 KABC::PhoneNumber phoneNumber;
91 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); 90 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
92 edit->setPhoneNumber( phoneNumber ); 91 edit->setPhoneNumber( phoneNumber );
93 edit = mTypeNumberEditList.next(); 92 edit = appendEditCombo();
94 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); 93 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
95 edit->setPhoneNumber( phoneNumber ); 94 edit->setPhoneNumber( phoneNumber );
96 edit = mTypeNumberEditList.next(); 95 edit = appendEditCombo();
97 phoneNumber.setType( KABC::PhoneNumber::Cell ); 96 phoneNumber.setType( KABC::PhoneNumber::Cell );
98 edit->setPhoneNumber( phoneNumber ); 97 edit->setPhoneNumber( phoneNumber );
99 edit = mTypeNumberEditList.next(); 98
100 while ( edit ) {
101 edit->hide();
102 edit = mTypeNumberEditList.next();
103 }
104} 99}
105void PhoneEditWidget::addNumber() 100void PhoneEditWidget::addNumber()
106{ 101{
107 102
108} 103}
109PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() 104PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
110{ 105{
111 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); 106 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
112 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); 107 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
113 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); 108 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
109 connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) );
114 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); 110 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
115 111
116 mainLayout->add( edit ); 112 mainLayout->add( edit );
117 mTypeNumberEditList.append( edit ); 113 mTypeNumberEditList.append( edit );
118 return edit; 114 return edit;
119} 115}
120 116
117void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew )
118{
119 mPendingDelete = ew;
120 QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) );
121}
122void PhoneEditWidget::pendingDelete()
123{
124 mTypeNumberEditList.removeRef( mPendingDelete );
125 emit modified();
126}
127
121void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) 128void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
122{ 129{
123 if ( li.isEmpty() ) { 130 if ( li.isEmpty() ) {
124 setDefaults(); 131 setDefaults();
125 return; 132 return;
126 } 133 }
134 mTypeNumberEditList.clear();
127 KABC::PhoneNumber::List::Iterator it; 135 KABC::PhoneNumber::List::Iterator it;
128 KABC::PhoneNumber::List list = li; 136 KABC::PhoneNumber::List list = li;
129 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); 137 PhoneTypeNumberEdit* edit = 0;//mTypeNumberEditList.first();
130 for ( it = list.begin(); it != list.end(); ++it ) { 138 for ( it = list.begin(); it != list.end(); ++it ) {
131 if ( edit ) { 139 if ( edit ) {
132 edit->setPhoneNumber( (*it ) ); 140 edit->setPhoneNumber( (*it ) );
133 edit = mTypeNumberEditList.next(); 141 edit = mTypeNumberEditList.next();
134 } else { 142 } else {
135 PhoneTypeNumberEdit* editNew = appendEditCombo(); 143 PhoneTypeNumberEdit* editNew = appendEditCombo();
136 editNew->setPhoneNumber( (*it ) ); 144 editNew->setPhoneNumber( (*it ) );
137 } 145 }
138 } 146 }
139 while ( edit ) { 147 while ( edit ) {
140 edit->hide(); 148 edit->hide();
141 edit = mTypeNumberEditList.next(); 149 edit = mTypeNumberEditList.next();
142 } 150 }
143 //mainLayout->invalidate ();
144 mw->update();
145} 151}
146KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() 152KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
147{ 153{
148 KABC::PhoneNumber::List retList; 154 KABC::PhoneNumber::List retList;
149 155
150 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); 156 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
151 while ( edit ) { 157 while ( edit ) {
152 if ( edit->isValid() ) { 158 if ( edit->isValid() ) {
153 retList.append( edit->phoneNumber()); 159 retList.append( edit->phoneNumber());
154 } 160 }
155 edit = mTypeNumberEditList.next(); 161 edit = mTypeNumberEditList.next();
156 162
157 } 163 }
158 return retList; 164 return retList;
159} 165}
160 166
161#if 0 167#if 0
162PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 168PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
163 : QWidget( parent, name ) 169 : QWidget( parent, name )
164{ 170{
165 QGridLayout *layout = new QGridLayout( this, 4, 1 ); 171 QGridLayout *layout = new QGridLayout( this, 4, 1 );
166//US layout->setSpacing( KDialog::spacingHint() ); 172//US layout->setSpacing( KDialog::spacingHint() );
167 layout->setSpacing( KDialogBase::spacingHintSmall() ); 173 layout->setSpacing( KDialogBase::spacingHintSmall() );
168 174
169 175
170 176
171 QLabel* label = new QLabel( this ); 177 QLabel* label = new QLabel( this );
172//US loadIcon call is ambiguous. Add one more parameter 178//US loadIcon call is ambiguous. Add one more parameter
173//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 179//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
174 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 180 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
175 label->setAlignment( AlignCenter ); 181 label->setAlignment( AlignCenter );
176//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 182//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
@@ -486,64 +492,65 @@ PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *
486 mListView = new KListView( page ); 492 mListView = new KListView( page );
487 mListView->setAllColumnsShowFocus( true ); 493 mListView->setAllColumnsShowFocus( true );
488 mListView->addColumn( i18n( "Number" ) ); 494 mListView->addColumn( i18n( "Number" ) );
489 mListView->addColumn( i18n( "Type" ) ); 495 mListView->addColumn( i18n( "Type" ) );
490 496
491 KButtonBox *buttonBox = new KButtonBox( page, Vertical ); 497 KButtonBox *buttonBox = new KButtonBox( page, Vertical );
492 498
493 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) ); 499 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) );
494 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) ); 500 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) );
495 mEditButton->setEnabled( false ); 501 mEditButton->setEnabled( false );
496 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) ); 502 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) );
497 mRemoveButton->setEnabled( false ); 503 mRemoveButton->setEnabled( false );
498 buttonBox->layout(); 504 buttonBox->layout();
499 505
500 layout->addWidget( mListView, 0, 0 ); 506 layout->addWidget( mListView, 0, 0 );
501 layout->addWidget( buttonBox, 0, 1 ); 507 layout->addWidget( buttonBox, 0, 1 );
502 508
503 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); 509 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) );
504 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); 510 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber()));
505 511
506 KABC::PhoneNumber::List::Iterator it; 512 KABC::PhoneNumber::List::Iterator it;
507 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) 513 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it )
508 new PhoneViewItem( mListView, *it ); 514 new PhoneViewItem( mListView, *it );
509 if (QApplication::desktop()->width() < 480 ) 515 if (QApplication::desktop()->width() < 480 )
510 showMaximized(); 516 showMaximized();
511 else 517 else
512 resize( 400, 400 ); 518 resize( 400, 400 );
513 mChanged = false; 519 mChanged = false;
514} 520}
515 521
516PhoneEditDialog::~PhoneEditDialog() 522PhoneEditDialog::~PhoneEditDialog()
517{ 523{
524 qDebug("PhoneEditDialog::~PhoneEditDialog() ");
518} 525}
519 526
520void PhoneEditDialog::slotAddPhoneNumber() 527void PhoneEditDialog::slotAddPhoneNumber()
521{ 528{
522 KABC::PhoneNumber tmp( "", 0 ); 529 KABC::PhoneNumber tmp( "", 0 );
523 PhoneTypeDialog dlg( tmp, this ); 530 PhoneTypeDialog dlg( tmp, this );
524 531
525 if ( dlg.exec() ) { 532 if ( dlg.exec() ) {
526 QListViewItem* i = mListView->firstChild(); 533 QListViewItem* i = mListView->firstChild();
527 KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); 534 KABC::PhoneNumber phoneNumber = dlg.phoneNumber();
528 bool insert = true; 535 bool insert = true;
529 while ( i ) { 536 while ( i ) {
530 PhoneViewItem* p = ( PhoneViewItem* ) i; 537 PhoneViewItem* p = ( PhoneViewItem* ) i;
531 KABC::PhoneNumber pn = p->phoneNumber(); 538 KABC::PhoneNumber pn = p->phoneNumber();
532 if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) { 539 if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) {
533 if ( p->text(0).isEmpty()) { 540 if ( p->text(0).isEmpty()) {
534 p->setPhoneNumber( phoneNumber ); 541 p->setPhoneNumber( phoneNumber );
535 mPhoneNumberList.remove( pn ); 542 mPhoneNumberList.remove( pn );
536 mPhoneNumberList.append( phoneNumber ); 543 mPhoneNumberList.append( phoneNumber );
537 insert = false; 544 insert = false;
538 break; 545 break;
539 } 546 }
540 } 547 }
541 i = i->nextSibling(); 548 i = i->nextSibling();
542 } 549 }
543 if ( insert ) { 550 if ( insert ) {
544 mPhoneNumberList.append( phoneNumber ); 551 mPhoneNumberList.append( phoneNumber );
545 new PhoneViewItem( mListView, phoneNumber ); 552 new PhoneViewItem( mListView, phoneNumber );
546 } 553 }
547 mChanged = true; 554 mChanged = true;
548 } 555 }
549} 556}
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 6a514ed..c730c7b 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -37,68 +37,71 @@
37class QButtonGroup; 37class QButtonGroup;
38class QCheckBox; 38class QCheckBox;
39class PhoneTypeNumberEdit; 39class PhoneTypeNumberEdit;
40 40
41#include <klineedit.h> 41#include <klineedit.h>
42#include <kcombobox.h> 42#include <kcombobox.h>
43#include <kabc/phonenumber.h> 43#include <kabc/phonenumber.h>
44 44
45typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; 45typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
46 46
47/** 47/**
48 Widget for editing phone numbers. 48 Widget for editing phone numbers.
49*/ 49*/
50class PhoneEditWidget : public QScrollView 50class PhoneEditWidget : public QScrollView
51{ 51{
52 Q_OBJECT 52 Q_OBJECT
53 53
54 public: 54 public:
55 PhoneEditWidget( QWidget *parent, const char *name = 0 ); 55 PhoneEditWidget( QWidget *parent, const char *name = 0 );
56 ~PhoneEditWidget(); 56 ~PhoneEditWidget();
57 57
58 void setPhoneNumbers( const KABC::PhoneNumber::List &list ); 58 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
59 KABC::PhoneNumber::List phoneNumbers(); 59 KABC::PhoneNumber::List phoneNumbers();
60 60
61 // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); 61 // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
62 //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); 62 //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
63 63
64 signals: 64 signals:
65 void modified(); 65 void modified();
66 void typeChange( int oldType, int newType ); 66 void typeChange( int oldType, int newType );
67 67
68 private slots: 68 private slots:
69 void addNumber(); 69 void deleteEdit( PhoneTypeNumberEdit* ew );
70 void addNumber();
71 void pendingDelete();
70 protected: 72 protected:
71 73
72 private: 74 private:
75 PhoneTypeNumberEdit* mPendingDelete;
73 void setDefaults(); 76 void setDefaults();
74 PhoneTypeNumberEdit* appendEditCombo(); 77 PhoneTypeNumberEdit* appendEditCombo();
75 QWidget* mw; 78 QWidget* mw;
76 QVBoxLayout* mainLayout; 79 QVBoxLayout* mainLayout;
77 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList; 80 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
78 81
79 KABC::PhoneNumber::List mPhoneList; 82 KABC::PhoneNumber::List mPhoneList;
80}; 83};
81 84
82 85
83 86
84 87
85 88
86#if 0 89#if 0
87class PhoneEditWidget : public QWidget 90class PhoneEditWidget : public QWidget
88{ 91{
89 Q___OBJECT 92 Q___OBJECT
90 93
91 public: 94 public:
92 PhoneEditWidget( QWidget *parent, const char *name = 0 ); 95 PhoneEditWidget( QWidget *parent, const char *name = 0 );
93 ~PhoneEditWidget(); 96 ~PhoneEditWidget();
94 97
95 void setPhoneNumbers( const KABC::PhoneNumber::List &list ); 98 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
96 KABC::PhoneNumber::List phoneNumbers(); 99 KABC::PhoneNumber::List phoneNumbers();
97 100
98 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); 101 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
99 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); 102 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
100 103
101 sig_nals: 104 sig_nals:
102 void modified(); 105 void modified();
103 void typeChange( int oldType, int newType ); 106 void typeChange( int oldType, int newType );
104 107
@@ -183,105 +186,102 @@ public:
183 186
184private: 187private:
185 KABC::PhoneNumber mPhoneNumber; 188 KABC::PhoneNumber mPhoneNumber;
186 KABC::PhoneNumber::TypeList mTypeList; 189 KABC::PhoneNumber::TypeList mTypeList;
187 190
188 QButtonGroup *mGroup; 191 QButtonGroup *mGroup;
189 QCheckBox *mPreferredBox; 192 QCheckBox *mPreferredBox;
190 KLineEdit *mNumber; 193 KLineEdit *mNumber;
191}; 194};
192#endif 195#endif
193 196
194class PhoneTypeNumberEdit : public QWidget 197class PhoneTypeNumberEdit : public QWidget
195{ 198{
196 Q_OBJECT 199 Q_OBJECT
197public: 200public:
198 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent ) 201 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent )
199 { 202 {
200 QHBoxLayout * lay = new QHBoxLayout( this ); 203 QHBoxLayout * lay = new QHBoxLayout( this );
201 lay->setSpacing( KDialogBase::spacingHintSmall() ); 204 lay->setSpacing( KDialogBase::spacingHintSmall() );
202 lay->setMargin( KDialogBase::marginHintSmall() ); 205 lay->setMargin( KDialogBase::marginHintSmall() );
203 mMinusButton = new QPushButton ( this ); 206 mMinusButton = new QPushButton ( this );
204 mMinusButton->setPixmap ( SmallIcon("minus")); 207 mMinusButton->setPixmap ( SmallIcon("minus"));
205 mCombo = new KComboBox( this ); 208 mCombo = new KComboBox( this );
206 mNumber = new KLineEdit( this ); 209 mNumber = new KLineEdit( this );
207 lay->addWidget( mMinusButton ); 210 lay->addWidget( mMinusButton );
208 lay->addWidget( mCombo ); 211 lay->addWidget( mCombo );
209 lay->addWidget( mNumber ); 212 lay->addWidget( mNumber );
210 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) ); 213 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
211 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) ); 214 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
212 connect( mNumber , SIGNAL ( textChanged ( const QString & ) ), 215 connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
213 this, SLOT ( textChanged ( const QString & ) ) ); 216 this, SLOT ( textChanged ( const QString & ) ) );
214 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); 217 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
215 mIsValid = true;
216 } 218 }
217 219 ~PhoneTypeNumberEdit() {
220 // qDebug("~PhoneTypeNumberEdit() ");
221 }
218 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) 222 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
219 { 223 {
220 mPhoneNumber = phoneNumber; 224 mPhoneNumber = phoneNumber;
221 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 225 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
222 mCombo->setCurrentItem( index ); 226 mCombo->setCurrentItem( index );
223 mNumber->setText( mPhoneNumber.number() ); 227 mNumber->setText( mPhoneNumber.number() );
224 mIsValid = true;
225 show(); 228 show();
226 229
227 } 230 }
228 KABC::PhoneNumber phoneNumber() 231 KABC::PhoneNumber phoneNumber()
229 { 232 {
230 mPhoneNumber.setNumber( mNumber->text() ); 233 mPhoneNumber.setNumber( mNumber->text() );
231 int index = mCombo->currentItem(); 234 int index = mCombo->currentItem();
232 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); 235 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
233 return mPhoneNumber; 236 return mPhoneNumber;
234 } 237 }
235 bool isValid() 238 bool isValid()
236 { 239 {
237 if ( !mIsValid ) return false;
238 if ( mNumber->text().isEmpty() )return false; 240 if ( mNumber->text().isEmpty() )return false;
239 return true; 241 return true;
240 } 242 }
241 private slots: 243 private slots:
242 void typeExternalChanged( int oldType, int newType ) 244 void typeExternalChanged( int oldType, int newType )
243 { 245 {
244 if ( mPhoneNumber.type() == newType ) { 246 if ( mPhoneNumber.type() == newType ) {
245 mPhoneNumber.setType(oldType); 247 mPhoneNumber.setType(oldType);
246 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 248 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
247 mCombo->setCurrentItem( index ); 249 mCombo->setCurrentItem( index );
248 } 250 }
249 } 251 }
250 void deleteNumber() 252 void deleteNumber()
251 { 253 {
252 emit modified(); 254 emit deleteMe( this );
253 hide();
254 mIsValid = false;
255 } 255 }
256 void comboTypeChange( int index ) 256 void comboTypeChange( int index )
257 { 257 {
258 int old = mPhoneNumber.type(); 258 int old = mPhoneNumber.type();
259 int newT = PhoneNumber::supportedTypeList()[index]; 259 int newT = PhoneNumber::supportedTypeList()[index];
260 if ( old != newT ) { 260 if ( old != newT ) {
261 emit modified(); 261 emit modified();
262 emit typeChange ( old, newT ); 262 emit typeChange ( old, newT );
263 mPhoneNumber.setType(newT ); 263 mPhoneNumber.setType(newT );
264 } 264 }
265 265
266 } 266 }
267 int currentType() 267 int currentType()
268 { 268 {
269 return mCombo->currentItem(); 269 return mCombo->currentItem();
270 } 270 }
271 void textChanged ( const QString & ) 271 void textChanged ( const QString & )
272 { 272 {
273 emit modified(); 273 emit modified();
274 } 274 }
275 signals: 275 signals:
276void typeChange( int oldType, int newType ); 276void typeChange( int oldType, int newType );
277 void modified(); 277 void modified();
278 void deleteMe( PhoneTypeNumberEdit* );
278 279
279private: 280private:
280 bool mIsValid;
281 KABC::PhoneNumber mPhoneNumber; 281 KABC::PhoneNumber mPhoneNumber;
282 QPushButton* mMinusButton; 282 QPushButton* mMinusButton;
283 KComboBox *mCombo; 283 KComboBox *mCombo;
284 KLineEdit *mNumber; 284 KLineEdit *mNumber;
285}; 285};
286 286
287#endif 287#endif