summaryrefslogtreecommitdiff
path: root/core
authoreilers <eilers>2003-02-28 10:25:31 (UTC)
committer eilers <eilers>2003-02-28 10:25:31 (UTC)
commit81cbb2d97b4f0cd7eef56536d791434856d7ae8d (patch) (unidiff)
tree644f7c1dc38c07b67b9337a4138ca80741d0c9ca /core
parent18c19111466e43e91678c5a1fa50f2f561ca3257 (diff)
downloadopie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.zip
opie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.tar.gz
opie-81cbb2d97b4f0cd7eef56536d791434856d7ae8d.tar.bz2
Beaming personal vcard on keypress is implented now !
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 0276231..8937227 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -497,196 +497,204 @@ void AddressbookWindow::slotViewEdit()
497 QMessageBox::warning( this, tr("Contacts"), 497 QMessageBox::warning( this, tr("Contacts"),
498 tr("Can not edit data, currently syncing") ); 498 tr("Can not edit data, currently syncing") );
499 } 499 }
500} 500}
501 501
502 502
503 503
504void AddressbookWindow::writeMail() 504void AddressbookWindow::writeMail()
505{ 505{
506 OContact c = m_abView -> currentEntry(); 506 OContact c = m_abView -> currentEntry();
507 QString name = c.fileAs(); 507 QString name = c.fileAs();
508 QString email = c.defaultEmail(); 508 QString email = c.defaultEmail();
509 509
510 // I prefer the OPIE-Environment variable before the 510 // I prefer the OPIE-Environment variable before the
511 // QPE-one.. 511 // QPE-one..
512 QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); 512 QString basepath = QString::fromLatin1( getenv("OPIEDIR") );
513 if ( basepath.isEmpty() ) 513 if ( basepath.isEmpty() )
514 basepath = QString::fromLatin1( getenv("QPEDIR") ); 514 basepath = QString::fromLatin1( getenv("QPEDIR") );
515 515
516 // Try to access the preferred. If not possible, try to 516 // Try to access the preferred. If not possible, try to
517 // switch to the other one.. 517 // switch to the other one..
518 if ( m_config.useQtMail() ){ 518 if ( m_config.useQtMail() ){
519 qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1()); 519 qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1());
520 if ( QFile::exists( basepath + "/bin/qtmail" ) ){ 520 if ( QFile::exists( basepath + "/bin/qtmail" ) ){
521 qWarning ("QCop"); 521 qWarning ("QCop");
522 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); 522 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
523 e << name << email; 523 e << name << email;
524 return; 524 return;
525 } else 525 } else
526 m_config.setUseOpieMail( true ); 526 m_config.setUseOpieMail( true );
527 } 527 }
528 if ( m_config.useOpieMail() ){ 528 if ( m_config.useOpieMail() ){
529 qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1()); 529 qWarning ("Accessing: %s", (basepath + "/bin/mail").latin1());
530 if ( QFile::exists( basepath + "/bin/mail" ) ){ 530 if ( QFile::exists( basepath + "/bin/mail" ) ){
531 qWarning ("QCop"); 531 qWarning ("QCop");
532 QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)"); 532 QCopEnvelope e("QPE/Application/mail", "writeMail(QString,QString)");
533 e << name << email; 533 e << name << email;
534 return; 534 return;
535 } else 535 } else
536 m_config.setUseQtMail( true ); 536 m_config.setUseQtMail( true );
537 } 537 }
538 538
539} 539}
540 540
541static const char * beamfile = "/tmp/obex/contact.vcf"; 541static const char * beamfile = "/tmp/obex/contact.vcf";
542 542
543void AddressbookWindow::slotBeam() 543void AddressbookWindow::slotBeam()
544{ 544{
545 QString filename; 545 QString beamFilename;
546 OContact c; 546 OContact c;
547 if ( actionPersonal->isOn() ) { 547 if ( actionPersonal->isOn() ) {
548 filename = addressbookPersonalVCardName(); 548 beamFilename = addressbookPersonalVCardName();
549 if (!QFile::exists(filename)) 549 if ( !QFile::exists( beamFilename ) )
550 return; // can't beam a non-existent file 550 return; // can't beam a non-existent file
551 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 551 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
552 filename ); 552 beamFilename );
553 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 553 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
554 OContactAccess::List allList = access->allRecords(); 554 OContactAccess::List allList = access->allRecords();
555 OContactAccess::List::Iterator it = allList.begin(); // Just take first 555 OContactAccess::List::Iterator it = allList.begin(); // Just take first
556 c = *it; 556 c = *it;
557 557
558 delete access; 558 delete access;
559 } else { 559 } else {
560 unlink( beamfile ); // delete if exists 560 unlink( beamfile ); // delete if exists
561 mkdir("/tmp/obex/", 0755); 561 mkdir("/tmp/obex/", 0755);
562 c = m_abView -> currentEntry(); 562 c = m_abView -> currentEntry();
563 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 563 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
564 beamfile ); 564 beamfile );
565 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 565 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
566 access->add( c ); 566 access->add( c );
567 access->save(); 567 access->save();
568 delete access; 568 delete access;
569 569
570 filename = beamfile; 570 beamFilename = beamfile;
571 } 571 }
572 572
573 qWarning("Beaming: %s", beamFilename.latin1() );
573 574
574 Ir *ir = new Ir( this ); 575 Ir *ir = new Ir( this );
575 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 576 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
576 QString description = c.fullName(); 577 QString description = c.fullName();
577 ir->send( filename, description, "text/x-vCard" ); 578 ir->send( beamFilename, description, "text/x-vCard" );
578} 579}
579 580
580void AddressbookWindow::beamDone( Ir *ir ) 581void AddressbookWindow::beamDone( Ir *ir )
581{ 582{
583
582 delete ir; 584 delete ir;
583 unlink( beamfile ); 585 unlink( beamfile );
584} 586}
585 587
586 588
587static void parseName( const QString& name, QString *first, QString *middle, 589static void parseName( const QString& name, QString *first, QString *middle,
588 QString * last ) 590 QString * last )
589{ 591{
590 592
591 int comma = name.find ( "," ); 593 int comma = name.find ( "," );
592 QString rest; 594 QString rest;
593 if ( comma > 0 ) { 595 if ( comma > 0 ) {
594 *last = name.left( comma ); 596 *last = name.left( comma );
595 comma++; 597 comma++;
596 while ( comma < int(name.length()) && name[comma] == ' ' ) 598 while ( comma < int(name.length()) && name[comma] == ' ' )
597 comma++; 599 comma++;
598 rest = name.mid( comma ); 600 rest = name.mid( comma );
599 } else { 601 } else {
600 int space = name.findRev( ' ' ); 602 int space = name.findRev( ' ' );
601 *last = name.mid( space+1 ); 603 *last = name.mid( space+1 );
602 rest = name.left( space ); 604 rest = name.left( space );
603 } 605 }
604 int space = rest.find( ' ' ); 606 int space = rest.find( ' ' );
605 if ( space <= 0 ) { 607 if ( space <= 0 ) {
606 *first = rest; 608 *first = rest;
607 } else { 609 } else {
608 *first = rest.left( space ); 610 *first = rest.left( space );
609 *middle = rest.mid( space+1 ); 611 *middle = rest.mid( space+1 );
610 } 612 }
611 613
612} 614}
613 615
614 616
615void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) 617void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
616{ 618{
617 if (msg == "editPersonal()") { 619 if (msg == "editPersonal()") {
618 editPersonal(); 620 editPersonal();
619 } else if (msg == "editPersonalAndClose()") { 621 } else if (msg == "editPersonalAndClose()") {
620 editPersonal(); 622 editPersonal();
621 close(); 623 close();
622 } else if ( msg == "addContact(QString,QString)" ) { 624 } else if ( msg == "addContact(QString,QString)" ) {
623 QDataStream stream(data,IO_ReadOnly); 625 QDataStream stream(data,IO_ReadOnly);
624 QString name, email; 626 QString name, email;
625 stream >> name >> email; 627 stream >> name >> email;
626 628
627 OContact cnt; 629 OContact cnt;
628 QString fn, mn, ln; 630 QString fn, mn, ln;
629 parseName( name, &fn, &mn, &ln ); 631 parseName( name, &fn, &mn, &ln );
630 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() ); 632 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() );
631 cnt.setFirstName( fn ); 633 cnt.setFirstName( fn );
632 cnt.setMiddleName( mn ); 634 cnt.setMiddleName( mn );
633 cnt.setLastName( ln ); 635 cnt.setLastName( ln );
634 cnt.insertEmails( email ); 636 cnt.insertEmails( email );
635 cnt.setDefaultEmail( email ); 637 cnt.setDefaultEmail( email );
636 cnt.setFileAs(); 638 cnt.setFileAs();
637 639
638 m_abView -> addEntry( cnt ); 640 m_abView -> addEntry( cnt );
639 641
640 // :SXm_abView()->init( cnt ); 642 // :SXm_abView()->init( cnt );
641 editEntry( EditEntry ); 643 editEntry( EditEntry );
642 644 } else if ( msg == "beamBusinessCard()" ) {
643 645 QString beamFilename = addressbookPersonalVCardName();
644 646 if ( !QFile::exists( beamFilename ) )
647 return; // can't beam a non-existent file
648
649 Ir *ir = new Ir( this );
650 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
651 QString description = "mycard.vcf";
652 ir->send( beamFilename, description, "text/x-vCard" );
645 } 653 }
646#if 0 654#if 0
647 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) { 655 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) {
648 QDataStream stream(data,IO_ReadOnly); 656 QDataStream stream(data,IO_ReadOnly);
649 QCString ch,m; 657 QCString ch,m;
650 QStringList types; 658 QStringList types;
651 stream >> ch >> m >> types; 659 stream >> ch >> m >> types;
652 AddressPicker picker(abList,this,0,TRUE); 660 AddressPicker picker(abList,this,0,TRUE);
653 picker.showMaximized(); 661 picker.showMaximized();
654 picker.setChoiceNames(types); 662 picker.setChoiceNames(types);
655 int i=0; 663 int i=0;
656 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 664 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
657 QStringList sel; 665 QStringList sel;
658 stream >> sel; 666 stream >> sel;
659 picker.setSelection(i++,sel); 667 picker.setSelection(i++,sel);
660 } 668 }
661 picker.showMaximized(); 669 picker.showMaximized();
662 picker.exec(); 670 picker.exec();
663 671
664 // ###### note: contacts may have been added - save here! 672 // ###### note: contacts may have been added - save here!
665 673
666 setCentralWidget(abList); 674 setCentralWidget(abList);
667 QCopEnvelope e(ch,m); 675 QCopEnvelope e(ch,m);
668 i=0; 676 i=0;
669 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 677 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
670 QStringList sel = picker.selection(i++); 678 QStringList sel = picker.selection(i++);
671 e << sel; 679 e << sel;
672 } 680 }
673 } 681 }
674#endif 682#endif
675 683
676} 684}
677 685
678void AddressbookWindow::editEntry( EntryMode entryMode ) 686void AddressbookWindow::editEntry( EntryMode entryMode )
679{ 687{
680 OContact entry; 688 OContact entry;
681 if ( !abEditor ) { 689 if ( !abEditor ) {
682 abEditor = new ContactEditor( entry, this, "editor" ); 690 abEditor = new ContactEditor( entry, this, "editor" );
683 } 691 }
684 if ( entryMode == EditEntry ) 692 if ( entryMode == EditEntry )
685 abEditor->setEntry( m_abView -> currentEntry() ); 693 abEditor->setEntry( m_abView -> currentEntry() );
686 else if ( entryMode == NewEntry ) 694 else if ( entryMode == NewEntry )
687 abEditor->setEntry( entry ); 695 abEditor->setEntry( entry );
688 // other things may change the caption. 696 // other things may change the caption.
689 abEditor->setCaption( tr("Edit Address") ); 697 abEditor->setCaption( tr("Edit Address") );
690 698
691#if defined(Q_WS_QWS) || defined(_WS_QWS_) 699#if defined(Q_WS_QWS) || defined(_WS_QWS_)
692 abEditor->showMaximized(); 700 abEditor->showMaximized();