summaryrefslogtreecommitdiffabout
path: root/kaddressbook/phoneeditwidget.cpp
Unidiff
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp37
1 files changed, 22 insertions, 15 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index b20275d..997fc05 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -54,115 +54,121 @@ PhoneEditWidget::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
@@ -494,48 +500,49 @@ PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *
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();