summaryrefslogtreecommitdiffabout
path: root/kaddressbook/phoneeditwidget.cpp
Unidiff
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp27
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()
192 mPrefCombo->updateTypes(); 192 mPrefCombo->updateTypes();
193 mSecondCombo->updateTypes(); 193 mSecondCombo->updateTypes();
194 mThirdCombo->updateTypes(); 194 mThirdCombo->updateTypes();
195 mFourthCombo->updateTypes(); 195 mFourthCombo->updateTypes();
196} 196}
197 197
198KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() 198KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
199{ 199{
200 KABC::PhoneNumber::List retList; 200 KABC::PhoneNumber::List retList;
201 201
202 KABC::PhoneNumber::List::Iterator it; 202 KABC::PhoneNumber::List::Iterator it;
203 for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) 203 for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it )
204 if ( !(*it).number().isEmpty() ) 204 if ( !(*it).number().isEmpty() )
205 retList.append( *it ); 205 retList.append( *it );
206 206
207 return retList; 207 return retList;
208} 208}
209 209
210void PhoneEditWidget::edit() 210void PhoneEditWidget::edit()
211{ 211{
212 PhoneEditDialog dlg( mPhoneList, this ); 212 PhoneEditDialog dlg( mPhoneList, this );
213 213
214 if ( dlg.exec() ) { 214 if ( dlg.exec() ) {
215 if ( dlg.changed() ) { 215 if ( dlg.changed() ) {
216 mPhoneList = dlg.phoneNumbers(); 216 KABC::PhoneNumber::List list = dlg.phoneNumbers();
217 setPhoneNumbers( list );
217 updateCombos(); 218 updateCombos();
218 updateLineEdits(); 219 updateLineEdits();
219 emit modified(); 220 emit modified();
220 } 221 }
221 } 222 }
222} 223}
223 224
224void PhoneEditWidget::updatePrefEdit() 225void PhoneEditWidget::updatePrefEdit()
225{ 226{
226 updateEdit( mPrefCombo ); 227 updateEdit( mPrefCombo );
227} 228}
228 229
229void PhoneEditWidget::updateSecondEdit() 230void PhoneEditWidget::updateSecondEdit()
230{ 231{
231 updateEdit( mSecondCombo ); 232 updateEdit( mSecondCombo );
232} 233}
233 234
234void PhoneEditWidget::updateThirdEdit() 235void PhoneEditWidget::updateThirdEdit()
235{ 236{
236 updateEdit( mThirdCombo ); 237 updateEdit( mThirdCombo );
237} 238}
238 239
239void PhoneEditWidget::updateFourthEdit() 240void PhoneEditWidget::updateFourthEdit()
240{ 241{
@@ -318,48 +319,51 @@ public:
318 PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ); 319 PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number );
319 320
320 void setPhoneNumber( const KABC::PhoneNumber &number ) 321 void setPhoneNumber( const KABC::PhoneNumber &number )
321 { 322 {
322 mPhoneNumber = number; 323 mPhoneNumber = number;
323 makeText(); 324 makeText();
324 } 325 }
325 326
326 QString key() { return mPhoneNumber.id(); } 327 QString key() { return mPhoneNumber.id(); }
327 QString country() { return ""; } 328 QString country() { return ""; }
328 QString region() { return ""; } 329 QString region() { return ""; }
329 QString number() { return ""; } 330 QString number() { return ""; }
330 331
331 KABC::PhoneNumber phoneNumber() { return mPhoneNumber; } 332 KABC::PhoneNumber phoneNumber() { return mPhoneNumber; }
332 333
333private: 334private:
334 void makeText(); 335 void makeText();
335 336
336 KABC::PhoneNumber mPhoneNumber; 337 KABC::PhoneNumber mPhoneNumber;
337}; 338};
338 339
339PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ) 340PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number )
340 : QListViewItem( parent ), mPhoneNumber( number ) 341 : QListViewItem( parent ), mPhoneNumber( number )
341{ 342{
343#ifdef DESKTOP_VERSION
344 setRenameEnabled ( 0, true );
345#endif
342 makeText(); 346 makeText();
343} 347}
344 348
345void PhoneViewItem::makeText() 349void PhoneViewItem::makeText()
346{ 350{
347 /** 351 /**
348 * Will be used in future versions of kaddressbook/libkabc 352 * Will be used in future versions of kaddressbook/libkabc
349 353
350 setText( 0, mPhoneNumber.country() ); 354 setText( 0, mPhoneNumber.country() );
351 setText( 1, mPhoneNumber.region() ); 355 setText( 1, mPhoneNumber.region() );
352 setText( 2, mPhoneNumber.number() ); 356 setText( 2, mPhoneNumber.number() );
353 setText( 3, mPhoneNumber.typeLabel() ); 357 setText( 3, mPhoneNumber.typeLabel() );
354 */ 358 */
355 359
356 setText( 0, mPhoneNumber.number() ); 360 setText( 0, mPhoneNumber.number() );
357 setText( 1, mPhoneNumber.typeLabel() ); 361 setText( 1, mPhoneNumber.typeLabel() );
358} 362}
359 363
360PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) 364PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name )
361 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), 365 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ),
362 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, 366 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
363 parent, name, true) 367 parent, name, true)
364{ 368{
365 mPhoneNumberList = list; 369 mPhoneNumberList = list;
@@ -385,52 +389,69 @@ PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *
385 389
386 layout->addWidget( mListView, 0, 0 ); 390 layout->addWidget( mListView, 0, 0 );
387 layout->addWidget( buttonBox, 0, 1 ); 391 layout->addWidget( buttonBox, 0, 1 );
388 392
389 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); 393 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) );
390 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); 394 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber()));
391 395
392 KABC::PhoneNumber::List::Iterator it; 396 KABC::PhoneNumber::List::Iterator it;
393 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) 397 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it )
394 new PhoneViewItem( mListView, *it ); 398 new PhoneViewItem( mListView, *it );
395 399
396 mChanged = false; 400 mChanged = false;
397} 401}
398 402
399PhoneEditDialog::~PhoneEditDialog() 403PhoneEditDialog::~PhoneEditDialog()
400{ 404{
401} 405}
402 406
403void PhoneEditDialog::slotAddPhoneNumber() 407void PhoneEditDialog::slotAddPhoneNumber()
404{ 408{
405 KABC::PhoneNumber tmp( "", 0 ); 409 KABC::PhoneNumber tmp( "", 0 );
406 PhoneTypeDialog dlg( tmp, this ); 410 PhoneTypeDialog dlg( tmp, this );
407 411
408 if ( dlg.exec() ) { 412 if ( dlg.exec() ) {
413 QListViewItem* i = mListView->firstChild();
409 KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); 414 KABC::PhoneNumber phoneNumber = dlg.phoneNumber();
415 bool insert = true;
416 while ( i ) {
417 PhoneViewItem* p = ( PhoneViewItem* ) i;
418 KABC::PhoneNumber pn = p->phoneNumber();
419 if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) {
420 if ( p->text(0).isEmpty()) {
421 p->setPhoneNumber( phoneNumber );
422 mPhoneNumberList.remove( pn );
423 mPhoneNumberList.append( phoneNumber );
424 insert = false;
425 break;
426 }
427 }
428 i = i->nextSibling();
429 }
430 if ( insert ) {
410 mPhoneNumberList.append( phoneNumber ); 431 mPhoneNumberList.append( phoneNumber );
411 new PhoneViewItem( mListView, phoneNumber ); 432 new PhoneViewItem( mListView, phoneNumber );
412 433 }
413 mChanged = true; 434 mChanged = true;
414 } 435 }
415} 436}
416 437
417void PhoneEditDialog::slotRemovePhoneNumber() 438void PhoneEditDialog::slotRemovePhoneNumber()
418{ 439{
419 PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); 440 PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() );
420 if ( !item ) 441 if ( !item )
421 return; 442 return;
422 443
423 mPhoneNumberList.remove( item->phoneNumber() ); 444 mPhoneNumberList.remove( item->phoneNumber() );
424 QListViewItem *currItem = mListView->currentItem(); 445 QListViewItem *currItem = mListView->currentItem();
425 mListView->takeItem( currItem ); 446 mListView->takeItem( currItem );
426 delete currItem; 447 delete currItem;
427 448
428 mChanged = true; 449 mChanged = true;
429} 450}
430 451
431void PhoneEditDialog::slotEditPhoneNumber() 452void PhoneEditDialog::slotEditPhoneNumber()
432{ 453{
433 PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); 454 PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() );
434 if ( !item ) 455 if ( !item )
435 return; 456 return;
436 457
@@ -483,48 +504,50 @@ PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber,
483 504
484 mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); 505 mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page );
485 layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); 506 layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 );
486 507
487 mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); 508 mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page );
488 layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); 509 layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 );
489 510
490 // fill widgets 511 // fill widgets
491 mNumber->setText( mPhoneNumber.number() ); 512 mNumber->setText( mPhoneNumber.number() );
492 513
493 mTypeList = KABC::PhoneNumber::typeList(); 514 mTypeList = KABC::PhoneNumber::typeList();
494 mTypeList.remove( KABC::PhoneNumber::Pref ); 515 mTypeList.remove( KABC::PhoneNumber::Pref );
495 516
496 KABC::PhoneNumber::TypeList::Iterator it; 517 KABC::PhoneNumber::TypeList::Iterator it;
497 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) 518 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it )
498 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); 519 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup );
499 520
500 for ( int i = 0; i < mGroup->count(); ++i ) { 521 for ( int i = 0; i < mGroup->count(); ++i ) {
501 int type = mPhoneNumber.type(); 522 int type = mPhoneNumber.type();
502 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 523 QCheckBox *box = (QCheckBox*)mGroup->find( i );
503 box->setChecked( type & mTypeList[ i ] ); 524 box->setChecked( type & mTypeList[ i ] );
504 } 525 }
505 526
506 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); 527 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref );
528 mNumber->setFocus();
529 mNumber->setSelection( 0, 1024);
507} 530}
508 531
509KABC::PhoneNumber PhoneTypeDialog::phoneNumber() 532KABC::PhoneNumber PhoneTypeDialog::phoneNumber()
510{ 533{
511 mPhoneNumber.setNumber( mNumber->text() ); 534 mPhoneNumber.setNumber( mNumber->text() );
512 535
513 int type = 0; 536 int type = 0;
514 for ( int i = 0; i < mGroup->count(); ++i ) { 537 for ( int i = 0; i < mGroup->count(); ++i ) {
515 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 538 QCheckBox *box = (QCheckBox*)mGroup->find( i );
516 if ( box->isChecked() ) 539 if ( box->isChecked() )
517 type += mTypeList[ i ]; 540 type += mTypeList[ i ];
518 } 541 }
519 542
520 if ( mPreferredBox->isChecked() ) 543 if ( mPreferredBox->isChecked() )
521 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); 544 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref );
522 else 545 else
523 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); 546 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref );
524 547
525 return mPhoneNumber; 548 return mPhoneNumber;
526} 549}
527 550
528#ifndef KAB_EMBEDDED 551#ifndef KAB_EMBEDDED
529#include "phoneeditwidget.moc" 552#include "phoneeditwidget.moc"
530#endif //KAB_EMBEDDED 553#endif //KAB_EMBEDDED