summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 75e539a..6984501 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -283,601 +283,604 @@ void AddressbookWindow::setDocument( const QString &filename )
283 }else 283 }else
284 m_abView->addEntry( *it ); 284 m_abView->addEntry( *it );
285 285
286 } 286 }
287 287
288 delete access; 288 delete access;
289} 289}
290 290
291void AddressbookWindow::resizeEvent( QResizeEvent *e ) 291void AddressbookWindow::resizeEvent( QResizeEvent *e )
292{ 292{
293 QMainWindow::resizeEvent( e ); 293 QMainWindow::resizeEvent( e );
294 294
295 295
296} 296}
297 297
298AddressbookWindow::~AddressbookWindow() 298AddressbookWindow::~AddressbookWindow()
299{ 299{
300 ToolBarDock dock; 300 ToolBarDock dock;
301 int dummy; 301 int dummy;
302 bool bDummy; 302 bool bDummy;
303 getLocation ( listTools, dock, dummy, bDummy, dummy ); 303 getLocation ( listTools, dock, dummy, bDummy, dummy );
304 m_config.setToolBarDock( dock ); 304 m_config.setToolBarDock( dock );
305 m_config.save(); 305 m_config.save();
306} 306}
307 307
308int AddressbookWindow::create() 308int AddressbookWindow::create()
309{ 309{
310 return 0; 310 return 0;
311} 311}
312 312
313bool AddressbookWindow::remove( int /*uid*/ ) 313bool AddressbookWindow::remove( int /*uid*/ )
314{ 314{
315 return false; 315 return false;
316} 316}
317 317
318void AddressbookWindow::beam( int /*uid*/ ) 318void AddressbookWindow::beam( int /*uid*/ )
319{ 319{
320} 320}
321 321
322void AddressbookWindow::show( int /*uid*/ ) 322void AddressbookWindow::show( int /*uid*/ )
323{ 323{
324} 324}
325 325
326void AddressbookWindow::edit( int /*uid*/ ) 326void AddressbookWindow::edit( int /*uid*/ )
327{ 327{
328} 328}
329 329
330void AddressbookWindow::add( const Opie::OPimRecord& ) 330void AddressbookWindow::add( const Opie::OPimRecord& )
331{ 331{
332} 332}
333 333
334void AddressbookWindow::slotItemNew() 334void AddressbookWindow::slotItemNew()
335{ 335{
336 Opie::OPimContact cnt; 336 Opie::OPimContact cnt;
337 if( !syncing ) { 337 if( !syncing ) {
338 editEntry( NewEntry ); 338 editEntry( NewEntry );
339 } else { 339 } else {
340 QMessageBox::warning(this, tr("Contacts"), 340 QMessageBox::warning(this, tr("Contacts"),
341 tr("Can not edit data, currently syncing")); 341 tr("Can not edit data, currently syncing"));
342 } 342 }
343} 343}
344 344
345void AddressbookWindow::slotItemEdit() 345void AddressbookWindow::slotItemEdit()
346{ 346{
347 if(!syncing) { 347 if(!syncing) {
348 if (m_actionPersonal->isOn()) { 348 if (m_actionPersonal->isOn()) {
349 editPersonal(); 349 editPersonal();
350 } else { 350 } else {
351 editEntry( EditEntry ); 351 editEntry( EditEntry );
352 } 352 }
353 } else { 353 } else {
354 QMessageBox::warning( this, tr("Contacts"), 354 QMessageBox::warning( this, tr("Contacts"),
355 tr("Can not edit data, currently syncing") ); 355 tr("Can not edit data, currently syncing") );
356 } 356 }
357} 357}
358 358
359void AddressbookWindow::slotItemDuplicate() 359void AddressbookWindow::slotItemDuplicate()
360{ 360{
361 if(!syncing) 361 if(!syncing)
362 { 362 {
363 Opie::OPimContact entry = m_abView->currentEntry(); 363 Opie::OPimContact entry = m_abView->currentEntry();
364 entry.assignUid(); 364 entry.assignUid();
365 m_abView->addEntry( entry ); 365 m_abView->addEntry( entry );
366 m_abView->setCurrentUid( entry.uid() ); 366 m_abView->setCurrentUid( entry.uid() );
367 } 367 }
368 else 368 else
369 { 369 {
370 QMessageBox::warning( this, tr("Contacts"), 370 QMessageBox::warning( this, tr("Contacts"),
371 tr("Can not edit data, currently syncing") ); 371 tr("Can not edit data, currently syncing") );
372 } 372 }
373} 373}
374 374
375void AddressbookWindow::slotItemDelete() 375void AddressbookWindow::slotItemDelete()
376{ 376{
377 if(!syncing) { 377 if(!syncing) {
378 Opie::OPimContact tmpEntry = m_abView ->currentEntry(); 378 Opie::OPimContact tmpEntry = m_abView ->currentEntry();
379 379
380 // get a name, do the best we can... 380 // get a name, do the best we can...
381 QString strName = tmpEntry.fullName(); 381 QString strName = tmpEntry.fullName();
382 if ( strName.isEmpty() ) { 382 if ( strName.isEmpty() ) {
383 strName = tmpEntry.company(); 383 strName = tmpEntry.company();
384 if ( strName.isEmpty() ) 384 if ( strName.isEmpty() )
385 strName = "No Name"; 385 strName = "No Name";
386 } 386 }
387 387
388 388
389 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ), 389 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ),
390 strName ) ) { 390 strName ) ) {
391 m_abView->removeEntry( tmpEntry.uid() ); 391 m_abView->removeEntry( tmpEntry.uid() );
392 } 392 }
393 } else { 393 } else {
394 QMessageBox::warning( this, tr("Contacts"), 394 QMessageBox::warning( this, tr("Contacts"),
395 tr("Can not edit data, currently syncing") ); 395 tr("Can not edit data, currently syncing") );
396 } 396 }
397} 397}
398 398
399static const char * beamfile = "/tmp/obex/contact.vcf"; 399static const char * beamfile = "/tmp/obex/contact.vcf";
400 400
401void AddressbookWindow::slotItemBeam() 401void AddressbookWindow::slotItemBeam()
402{ 402{
403 QString beamFilename; 403 QString beamFilename;
404 Opie::OPimContact c; 404 Opie::OPimContact c;
405 if ( m_actionPersonal->isOn() ) { 405 if ( m_actionPersonal->isOn() ) {
406 beamFilename = addressbookPersonalVCardName(); 406 beamFilename = addressbookPersonalVCardName();
407 if ( !QFile::exists( beamFilename ) ) 407 if ( !QFile::exists( beamFilename ) )
408 return; // can't beam a non-existent file 408 return; // can't beam a non-existent file
409 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 409 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
410 beamFilename ); 410 beamFilename );
411 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 411 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
412 Opie::OPimContactAccess::List allList = access->allRecords(); 412 Opie::OPimContactAccess::List allList = access->allRecords();
413 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 413 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
414 c = *it; 414 c = *it;
415 415
416 delete access; 416 delete access;
417 } else { 417 } else {
418 unlink( beamfile ); // delete if exists 418 unlink( beamfile ); // delete if exists
419 mkdir("/tmp/obex/", 0755); 419 mkdir("/tmp/obex/", 0755);
420 c = m_abView -> currentEntry(); 420 c = m_abView -> currentEntry();
421 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 421 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
422 beamfile ); 422 beamfile );
423 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 423 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
424 access->add( c ); 424 access->add( c );
425 access->save(); 425 access->save();
426 delete access; 426 delete access;
427 427
428 beamFilename = beamfile; 428 beamFilename = beamfile;
429 } 429 }
430 430
431 odebug << "Beaming: " << beamFilename << oendl; 431 odebug << "Beaming: " << beamFilename << oendl;
432 432
433 Ir *ir = new Ir( this ); 433 Ir *ir = new Ir( this );
434 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 434 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
435 QString description = c.fullName(); 435 QString description = c.fullName();
436 ir->send( beamFilename, description, "text/x-vCard" ); 436 ir->send( beamFilename, description, "text/x-vCard" );
437} 437}
438 438
439void AddressbookWindow::slotItemFind() 439void AddressbookWindow::slotItemFind()
440{ 440{
441} 441}
442 442
443void AddressbookWindow::slotConfigure() 443void AddressbookWindow::slotConfigure()
444{ 444{
445 ConfigDlg* dlg = new ConfigDlg( this, "Config" ); 445 ConfigDlg* dlg = new ConfigDlg( this, "Config" );
446 dlg -> setConfig( m_config ); 446 dlg -> setConfig( m_config );
447 if ( QPEApplication::execDialog( dlg ) ) { 447 if ( QPEApplication::execDialog( dlg ) ) {
448 odebug << "Config Dialog accepted!" << oendl; 448 odebug << "Config Dialog accepted!" << oendl;
449 m_config = dlg -> getConfig(); 449 m_config = dlg -> getConfig();
450 if ( m_curFontSize != m_config.fontSize() ){ 450 if ( m_curFontSize != m_config.fontSize() ){
451 odebug << "Font was changed!" << oendl; 451 odebug << "Font was changed!" << oendl;
452 m_curFontSize = m_config.fontSize(); 452 m_curFontSize = m_config.fontSize();
453 emit slotSetFont( m_curFontSize ); 453 emit slotSetFont( m_curFontSize );
454 } 454 }
455 m_abView -> setListOrder( m_config.orderList() ); 455 m_abView -> setListOrder( m_config.orderList() );
456 } 456 }
457 457
458 delete dlg; 458 delete dlg;
459} 459}
460 460
461void AddressbookWindow::slotShowFind( bool show ) 461void AddressbookWindow::slotShowFind( bool show )
462{ 462{
463 if ( show ) 463 if ( show )
464 { 464 {
465 // Display search bar 465 // Display search bar
466 m_searchBar->show(); 466 m_searchBar->show();
467 m_abView -> inSearch(); 467 m_abView -> inSearch();
468 m_searchEdit->setFocus(); 468 m_searchEdit->setFocus();
469 } 469 }
470 else 470 else
471 { 471 {
472 // Hide search bar 472 // Hide search bar
473 m_searchBar->hide(); 473 m_searchBar->hide();
474 m_abView -> offSearch(); 474 m_abView -> offSearch();
475 } 475 }
476} 476}
477 477
478void AddressbookWindow::slotFind() 478void AddressbookWindow::slotFind()
479{ 479{
480 m_abView->slotDoFind( m_searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false); 480 m_abView->slotDoFind( m_searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false);
481 481
482 m_searchEdit->clearFocus(); 482 m_searchEdit->clearFocus();
483 // m_abView->setFocus(); 483 // m_abView->setFocus();
484 484
485} 485}
486 486
487void AddressbookWindow::slotViewBack() 487void AddressbookWindow::slotViewBack()
488{ 488{
489 // :SX showList(); 489 // :SX showList();
490} 490}
491 491
492void AddressbookWindow::writeMail() 492void AddressbookWindow::writeMail()
493{ 493{
494 Opie::OPimContact c = m_abView -> currentEntry(); 494 Opie::OPimContact c = m_abView -> currentEntry();
495 QString name = c.fileAs(); 495 QString name = c.fileAs();
496 QString email = c.defaultEmail(); 496 QString email = c.defaultEmail();
497 497
498 // I prefer the OPIE-Environment variable before the 498 // I prefer the OPIE-Environment variable before the
499 // QPE-one.. 499 // QPE-one..
500 QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); 500 QString basepath = QString::fromLatin1( getenv("OPIEDIR") );
501 if ( basepath.isEmpty() ) 501 if ( basepath.isEmpty() )
502 basepath = QString::fromLatin1( getenv("QPEDIR") ); 502 basepath = QString::fromLatin1( getenv("QPEDIR") );
503 503
504 // Try to access the preferred. If not possible, try to 504 // Try to access the preferred. If not possible, try to
505 // switch to the other one.. 505 // switch to the other one..
506 if ( m_config.useQtMail() ){ 506 if ( m_config.useQtMail() ){
507 odebug << "Accessing: " << (basepath + "/bin/qtmail") << oendl; 507 odebug << "Accessing: " << (basepath + "/bin/qtmail") << oendl;
508 if ( QFile::exists( basepath + "/bin/qtmail" ) ){ 508 if ( QFile::exists( basepath + "/bin/qtmail" ) ){
509 odebug << "QCop" << oendl; 509 odebug << "QCop" << oendl;
510 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); 510 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
511 e << name << email; 511 e << name << email;
512 return; 512 return;
513 } else 513 } else
514 m_config.setUseOpieMail( true ); 514 m_config.setUseOpieMail( true );
515 } 515 }
516 if ( m_config.useOpieMail() ){ 516 if ( m_config.useOpieMail() ){
517 odebug << "Accessing: " << (basepath + "/bin/opiemail") << oendl; 517 odebug << "Accessing: " << (basepath + "/bin/opiemail") << oendl;
518 if ( QFile::exists( basepath + "/bin/opiemail" ) ){ 518 if ( QFile::exists( basepath + "/bin/opiemail" ) ){
519 odebug << "QCop" << oendl; 519 odebug << "QCop" << oendl;
520 QCopEnvelope e("QPE/Application/opiemail", "writeMail(QString,QString)"); 520 QCopEnvelope e("QPE/Application/opiemail", "writeMail(QString,QString)");
521 e << name << email; 521 e << name << email;
522 return; 522 return;
523 } else 523 } else
524 m_config.setUseQtMail( true ); 524 m_config.setUseQtMail( true );
525 } 525 }
526 526
527} 527}
528 528
529void AddressbookWindow::beamDone( Ir *ir ) 529void AddressbookWindow::beamDone( Ir *ir )
530{ 530{
531 531
532 delete ir; 532 delete ir;
533 unlink( beamfile ); 533 unlink( beamfile );
534} 534}
535 535
536 536
537static void parseName( const QString& name, QString *first, QString *middle, 537static void parseName( const QString& name, QString *first, QString *middle,
538 QString * last ) 538 QString * last )
539{ 539{
540 540
541 int comma = name.find ( "," ); 541 int comma = name.find ( "," );
542 QString rest; 542 QString rest;
543 if ( comma > 0 ) { 543 if ( comma > 0 ) {
544 *last = name.left( comma ); 544 *last = name.left( comma );
545 comma++; 545 comma++;
546 while ( comma < int(name.length()) && name[comma] == ' ' ) 546 while ( comma < int(name.length()) && name[comma] == ' ' )
547 comma++; 547 comma++;
548 rest = name.mid( comma ); 548 rest = name.mid( comma );
549 } else { 549 } else {
550 int space = name.findRev( ' ' ); 550 int space = name.findRev( ' ' );
551 *last = name.mid( space+1 ); 551 *last = name.mid( space+1 );
552 rest = name.left( space ); 552 rest = name.left( space );
553 } 553 }
554 int space = rest.find( ' ' ); 554 int space = rest.find( ' ' );
555 if ( space <= 0 ) { 555 if ( space <= 0 ) {
556 *first = rest; 556 *first = rest;
557 } else { 557 } else {
558 *first = rest.left( space ); 558 *first = rest.left( space );
559 *middle = rest.mid( space+1 ); 559 *middle = rest.mid( space+1 );
560 } 560 }
561 561
562} 562}
563 563
564 564
565void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) 565void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
566{ 566{
567 bool needShow = false; 567 bool needShow = false;
568 odebug << "Receiving QCop-Call with message " << msg << oendl; 568 odebug << "Receiving QCop-Call with message " << msg << oendl;
569 569
570 570
571 if (msg == "editPersonal()") { 571 if (msg == "editPersonal()") {
572 editPersonal(); 572 editPersonal();
573 573
574 // Categories might have changed, so reload 574 // Categories might have changed, so reload
575 reloadCategories(); 575 reloadCategories();
576 } else if (msg == "editPersonalAndClose()") { 576 } else if (msg == "editPersonalAndClose()") {
577 editPersonal(); 577 editPersonal();
578 close(); 578 close();
579 } else if ( msg == "addContact(QString,QString)" ) { 579 } else if ( msg == "addContact(QString,QString)" ) {
580 QDataStream stream(data,IO_ReadOnly); 580 QDataStream stream(data,IO_ReadOnly);
581 QString name, email; 581 QString name, email;
582 stream >> name >> email; 582 stream >> name >> email;
583 583
584 Opie::OPimContact cnt; 584 Opie::OPimContact cnt;
585 QString fn, mn, ln; 585 QString fn, mn, ln;
586 parseName( name, &fn, &mn, &ln ); 586 parseName( name, &fn, &mn, &ln );
587 //odebug << " " << fn << " - " << mn " - " << ln << oendl; 587 //odebug << " " << fn << " - " << mn " - " << ln << oendl;
588 cnt.setFirstName( fn ); 588 cnt.setFirstName( fn );
589 cnt.setMiddleName( mn ); 589 cnt.setMiddleName( mn );
590 cnt.setLastName( ln ); 590 cnt.setLastName( ln );
591 cnt.insertEmails( email ); 591 cnt.insertEmails( email );
592 cnt.setDefaultEmail( email ); 592 cnt.setDefaultEmail( email );
593 cnt.setFileAs(); 593 cnt.setFileAs();
594 594
595 m_abView -> addEntry( cnt ); 595 m_abView -> addEntry( cnt );
596 596
597 // :SXm_abView()->init( cnt ); 597 // :SXm_abView()->init( cnt );
598 editEntry( EditEntry ); 598 editEntry( EditEntry );
599 599
600 // Categories might have changed, so reload 600 // Categories might have changed, so reload
601 reloadCategories(); 601 reloadCategories();
602 } else if ( msg == "beamBusinessCard()" ) { 602 } else if ( msg == "beamBusinessCard()" ) {
603 QString beamFilename = addressbookPersonalVCardName(); 603 QString beamFilename = addressbookPersonalVCardName();
604 if ( !QFile::exists( beamFilename ) ) 604 if ( !QFile::exists( beamFilename ) )
605 return; // can't beam a non-existent file 605 return; // can't beam a non-existent file
606 606
607 Ir *ir = new Ir( this ); 607 Ir *ir = new Ir( this );
608 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 608 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
609 QString description = "mycard.vcf"; 609 QString description = "mycard.vcf";
610 ir->send( beamFilename, description, "text/x-vCard" ); 610 ir->send( beamFilename, description, "text/x-vCard" );
611 } else if ( msg == "show(int)" ) { 611 } else if ( msg == "show(int)" ) {
612 raise(); 612 raise();
613 QDataStream stream(data,IO_ReadOnly); 613 QDataStream stream(data,IO_ReadOnly);
614 int uid; 614 int uid;
615 stream >> uid; 615 stream >> uid;
616 616
617 odebug << "Showing uid: " << uid << oendl; 617 odebug << "Showing uid: " << uid << oendl;
618 618
619 // Deactivate Personal View.. 619 // Deactivate Personal View..
620 if ( m_actionPersonal->isOn() ){ 620 if ( m_actionPersonal->isOn() ){
621 m_actionPersonal->setOn( false ); 621 m_actionPersonal->setOn( false );
622 slotPersonalView(); 622 slotPersonalView();
623 } 623 }
624 624
625 // Reset category and show as card.. 625 // Reset category and show as card..
626 m_abView -> setShowByCategory( QString::null ); 626 m_abView -> setShowByCategory( QString::null );
627 m_abView -> setCurrentUid( uid ); 627 m_abView -> setCurrentUid( uid );
628 slotViewSwitched ( AbView::CardView ); 628 slotViewSwitched ( AbView::CardView );
629 629
630 needShow = true; 630 needShow = true;
631 631
632 632
633 } else if ( msg == "edit(int)" ) { 633 } else if ( msg == "edit(int)" ) {
634 QDataStream stream(data,IO_ReadOnly); 634 QDataStream stream(data,IO_ReadOnly);
635 int uid; 635 int uid;
636 stream >> uid; 636 stream >> uid;
637 637
638 // Deactivate Personal View.. 638 // Deactivate Personal View..
639 if ( m_actionPersonal->isOn() ){ 639 if ( m_actionPersonal->isOn() ){
640 m_actionPersonal->setOn( false ); 640 m_actionPersonal->setOn( false );
641 slotPersonalView(); 641 slotPersonalView();
642 } 642 }
643 643
644 // Reset category and edit.. 644 // Reset category and edit..
645 m_abView -> setShowByCategory( QString::null ); 645 m_abView -> setShowByCategory( QString::null );
646 m_abView -> setCurrentUid( uid ); 646 m_abView -> setCurrentUid( uid );
647 slotItemEdit(); 647 slotItemEdit();
648 648
649 // Categories might have changed, so reload 649 // Categories might have changed, so reload
650 reloadCategories(); 650 reloadCategories();
651 } 651 }
652 652
653 if (needShow) 653 if (needShow)
654 QPEApplication::setKeepRunning(); 654 QPEApplication::setKeepRunning();
655} 655}
656 656
657void AddressbookWindow::editEntry( EntryMode entryMode ) 657void AddressbookWindow::editEntry( EntryMode entryMode )
658{ 658{
659 Opie::OPimContact entry; 659 Opie::OPimContact entry;
660 if ( !abEditor ) { 660 if ( !abEditor ) {
661 abEditor = new ContactEditor( entry, this, "editor" ); 661 abEditor = new ContactEditor( entry, this, "editor" );
662 } 662 }
663 if ( entryMode == EditEntry ) 663 if ( entryMode == EditEntry )
664 abEditor->setEntry( m_abView -> currentEntry() ); 664 abEditor->setEntry( m_abView -> currentEntry() );
665 else if ( entryMode == NewEntry ) 665 else if ( entryMode == NewEntry )
666 abEditor->setEntry( entry ); 666 abEditor->setEntry( entry );
667 // other things may change the caption. 667
668 abEditor->setCaption( tr("Edit Address") ); 668 // Set the dialog caption
669 if ( m_actionPersonal->isOn() )
670 abEditor->setCaption( tr( "Edit My Personal Details" ) );
671 else
672 abEditor->setCaption( tr( "Edit Contact" ) );
669 673
670 // fix the focus... 674 // fix the focus...
671 abEditor->setNameFocus(); 675 abEditor->setNameFocus();
672 if ( QPEApplication::execDialog( abEditor ) == QDialog::Accepted ) { 676 if ( QPEApplication::execDialog( abEditor ) == QDialog::Accepted ) {
673 setFocus(); 677 setFocus();
674 if ( entryMode == NewEntry ) { 678 if ( entryMode == NewEntry ) {
675 Opie::OPimContact insertEntry = abEditor->entry(); 679 Opie::OPimContact insertEntry = abEditor->entry();
676 insertEntry.assignUid(); 680 insertEntry.assignUid();
677 m_abView -> addEntry( insertEntry ); 681 m_abView -> addEntry( insertEntry );
678 m_abView -> setCurrentUid( insertEntry.uid() ); 682 m_abView -> setCurrentUid( insertEntry.uid() );
679 } else { 683 } else {
680 Opie::OPimContact replEntry = abEditor->entry(); 684 Opie::OPimContact replEntry = abEditor->entry();
681 685
682 if ( !replEntry.isValidUid() ) 686 if ( !replEntry.isValidUid() )
683 replEntry.assignUid(); 687 replEntry.assignUid();
684 688
685 m_abView -> replaceEntry( replEntry ); 689 m_abView -> replaceEntry( replEntry );
686 } 690 }
687 691
688 // Categories might have changed, so reload 692 // Categories might have changed, so reload
689 reloadCategories(); 693 reloadCategories();
690 } 694 }
691} 695}
692 696
693void AddressbookWindow::editPersonal() 697void AddressbookWindow::editPersonal()
694{ 698{
695 Opie::OPimContact entry; 699 Opie::OPimContact entry;
696 700
697 // Switch to personal view if not selected 701 // Switch to personal view if not selected
698 // but take care of the menu, too 702 // but take care of the menu, too
699 if ( ! m_actionPersonal->isOn() ){ 703 if ( ! m_actionPersonal->isOn() ){
700 odebug << "*** ++++" << oendl; 704 odebug << "*** ++++" << oendl;
701 m_actionPersonal->setOn( true ); 705 m_actionPersonal->setOn( true );
702 slotPersonalView(); 706 slotPersonalView();
703 } 707 }
704 708
705 if ( !abEditor ) { 709 if ( !abEditor ) {
706 abEditor = new ContactEditor( entry, this, "editor" ); 710 abEditor = new ContactEditor( entry, this, "editor" );
707 } 711 }
708 712
709 abEditor->setCaption(tr("Edit My Personal Details")); 713 abEditor->setPersonalView( true );
710 abEditor->setPersonalView( true );
711 editEntry( EditEntry ); 714 editEntry( EditEntry );
712 abEditor->setPersonalView( false ); 715 abEditor->setPersonalView( false );
713 716
714} 717}
715 718
716 719
717void AddressbookWindow::slotPersonalView() 720void AddressbookWindow::slotPersonalView()
718{ 721{
719 odebug << "slotPersonalView()" << oendl; 722 odebug << "slotPersonalView()" << oendl;
720 723
721 bool personal = m_actionPersonal->isOn(); 724 bool personal = m_actionPersonal->isOn();
722 725
723 // Disable actions when showing personal details 726 // Disable actions when showing personal details
724 setItemNewEnabled( !personal ); 727 setItemNewEnabled( !personal );
725 setItemDuplicateEnabled( !personal ); 728 setItemDuplicateEnabled( !personal );
726 setItemDeleteEnabled( !personal ); 729 setItemDeleteEnabled( !personal );
727 m_actionMail->setEnabled( !personal ); 730 m_actionMail->setEnabled( !personal );
728 setShowCategories( !personal ); 731 setShowCategories( !personal );
729 732
730 // Display appropriate view 733 // Display appropriate view
731 m_abView->showPersonal( personal ); 734 m_abView->showPersonal( personal );
732 735
733 if ( personal ) 736 if ( personal )
734 { 737 {
735 setCaption( tr( "Contacts - My Personal Details") ); 738 setCaption( tr( "Contacts - My Personal Details") );
736 739
737 // Set category to 'All' to make sure personal details is visible 740 // Set category to 'All' to make sure personal details is visible
738 setViewCategory( "All" ); 741 setViewCategory( "All" );
739 m_abView->setShowByCategory( "All" ); 742 m_abView->setShowByCategory( "All" );
740 743
741 // Temporarily disable letter picker 744 // Temporarily disable letter picker
742 pLabel->hide(); 745 pLabel->hide();
743 } 746 }
744 else 747 else
745 { 748 {
746 setCaption( tr( "Contacts") ); 749 setCaption( tr( "Contacts") );
747 750
748 // Re-enable letter picker 751 // Re-enable letter picker
749 pLabel->show(); 752 pLabel->show();
750 } 753 }
751} 754}
752 755
753void AddressbookWindow::reload() 756void AddressbookWindow::reload()
754{ 757{
755 syncing = false; 758 syncing = false;
756 m_abView->clear(); 759 m_abView->clear();
757 m_abView->reload(); 760 m_abView->reload();
758} 761}
759 762
760void AddressbookWindow::flush() 763void AddressbookWindow::flush()
761{ 764{
762 syncing = true; 765 syncing = true;
763 m_abView->save(); 766 m_abView->save();
764} 767}
765 768
766 769
767void AddressbookWindow::closeEvent( QCloseEvent *e ) 770void AddressbookWindow::closeEvent( QCloseEvent *e )
768{ 771{
769 if ( active_view == AbView::CardView ) 772 if ( active_view == AbView::CardView )
770 { 773 {
771 if ( !m_actionPersonal->isOn() ) 774 if ( !m_actionPersonal->isOn() )
772 { 775 {
773 // Switch to table view only if not editing personal details 776 // Switch to table view only if not editing personal details
774 slotViewSwitched( AbView::TableView ); 777 slotViewSwitched( AbView::TableView );
775 } 778 }
776 else 779 else
777 { 780 {
778 // If currently editing personal details, switch off personal view 781 // If currently editing personal details, switch off personal view
779 m_actionPersonal->setOn( false ); 782 m_actionPersonal->setOn( false );
780 slotPersonalView(); 783 slotPersonalView();
781 } 784 }
782 785
783 e->ignore(); 786 e->ignore();
784 return; 787 return;
785 } 788 }
786 if(syncing) { 789 if(syncing) {
787 /* shouldn't we save, I hear you say? well its already been set 790 /* shouldn't we save, I hear you say? well its already been set
788 so that an edit can not occur during a sync, and we flushed 791 so that an edit can not occur during a sync, and we flushed
789 at the start of the sync, so there is no need to save 792 at the start of the sync, so there is no need to save
790 Saving however itself would cause problems. */ 793 Saving however itself would cause problems. */
791 e->accept(); 794 e->accept();
792 return; 795 return;
793 } 796 }
794 //################## shouldn't always save 797 //################## shouldn't always save
795 // True, but the database handles this automatically ! (se) 798 // True, but the database handles this automatically ! (se)
796 if ( save() ) 799 if ( save() )
797 e->accept(); 800 e->accept();
798 else 801 else
799 e->ignore(); 802 e->ignore();
800} 803}
801 804
802/* 805/*
803 Returns true if it is OK to exit 806 Returns true if it is OK to exit
804*/ 807*/
805 808
806bool AddressbookWindow::save() 809bool AddressbookWindow::save()
807{ 810{
808 if ( !m_abView->save() ) { 811 if ( !m_abView->save() ) {
809 if ( QMessageBox::critical( 0, tr( "Out of space" ), 812 if ( QMessageBox::critical( 0, tr( "Out of space" ),
810 tr("Unable to save information.\n" 813 tr("Unable to save information.\n"
811 "Free up some space\n" 814 "Free up some space\n"
812 "and try again.\n" 815 "and try again.\n"
813 "\nQuit anyway?"), 816 "\nQuit anyway?"),
814 QMessageBox::Yes|QMessageBox::Escape, 817 QMessageBox::Yes|QMessageBox::Escape,
815 QMessageBox::No|QMessageBox::Default ) 818 QMessageBox::No|QMessageBox::Default )
816 != QMessageBox::No ) 819 != QMessageBox::No )
817 return true; 820 return true;
818 else 821 else
819 return false; 822 return false;
820 } 823 }
821 return true; 824 return true;
822} 825}
823 826
824#ifdef __DEBUG_RELEASE 827#ifdef __DEBUG_RELEASE
825void AddressbookWindow::slotSave() 828void AddressbookWindow::slotSave()
826{ 829{
827 save(); 830 save();
828} 831}
829#endif 832#endif
830 833
831 834
832void AddressbookWindow::slotNotFound() 835void AddressbookWindow::slotNotFound()
833{ 836{
834 odebug << "Got not found signal!" << oendl; 837 odebug << "Got not found signal!" << oendl;
835 QMessageBox::information( this, tr( "Not Found" ), 838 QMessageBox::information( this, tr( "Not Found" ),
836 "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" ); 839 "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" );
837 840
838 841
839} 842}
840void AddressbookWindow::slotWrapAround() 843void AddressbookWindow::slotWrapAround()
841{ 844{
842 odebug << "Got wrap signal!" << oendl; 845 odebug << "Got wrap signal!" << oendl;
843 // if ( doNotifyWrapAround ) 846 // if ( doNotifyWrapAround )
844 // QMessageBox::information( this, tr( "End of list" ), 847 // QMessageBox::information( this, tr( "End of list" ),
845 // tr( "End of list. Wrap around now...!" ) + "\n" ); 848 // tr( "End of list. Wrap around now...!" ) + "\n" );
846 849
847} 850}
848 851
849void AddressbookWindow::slotSetCategory( const QString &category ) 852void AddressbookWindow::slotSetCategory( const QString &category )
850{ 853{
851 odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl; 854 odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl;
852 855
853 // Tell the view about the selected category 856 // Tell the view about the selected category
854 m_config.setCategory( category ); 857 m_config.setCategory( category );
855 m_abView -> setShowByCategory( category ); 858 m_abView -> setShowByCategory( category );
856} 859}
857 860
858void AddressbookWindow::slotViewSwitched( int view ) 861void AddressbookWindow::slotViewSwitched( int view )
859{ 862{
860 odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; 863 odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl;
861 864
862 // Tell the view about the selected view 865 // Tell the view about the selected view
863 m_abView -> setShowToView ( (AbView::Views) view ); 866 m_abView -> setShowToView ( (AbView::Views) view );
864 active_view = view; 867 active_view = view;
865} 868}
866 869
867 870
868void AddressbookWindow::slotListView() 871void AddressbookWindow::slotListView()
869{ 872{
870 slotViewSwitched( AbView::TableView ); 873 slotViewSwitched( AbView::TableView );
871} 874}
872 875
873void AddressbookWindow::slotCardView() 876void AddressbookWindow::slotCardView()
874{ 877{
875 slotViewSwitched( AbView::CardView ); 878 slotViewSwitched( AbView::CardView );
876} 879}
877 880
878void AddressbookWindow::slotSetLetter( char c ) { 881void AddressbookWindow::slotSetLetter( char c ) {
879 882
880 m_abView->setShowByLetter( c, m_config.letterPickerSearch() ); 883 m_abView->setShowByLetter( c, m_config.letterPickerSearch() );
881 884
882} 885}
883 886