summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp23
-rw-r--r--core/pim/addressbook/contacteditor.cpp2
-rw-r--r--core/pim/addressbook/opie-addressbook.control6
-rw-r--r--core/pim/addressbook/version.h6
-rw-r--r--libopie/pim/obackendfactory.h12
-rw-r--r--libopie/pim/ocontact.cpp219
-rw-r--r--libopie/pim/ocontact.h9
-rw-r--r--libopie/pim/ocontactaccess.h11
-rw-r--r--libopie/pim/ocontactaccessbackend.h12
-rw-r--r--libopie/pim/ocontactaccessbackend_vcard.cpp22
-rw-r--r--libopie/pim/ocontactaccessbackend_xml.cpp3
-rw-r--r--libopie/pim/oconversion.h5
-rw-r--r--libopie/pim/odatebookaccessbackend.h4
-rw-r--r--libopie/pim/odatebookaccessbackend_xml.cpp6
-rw-r--r--libopie/pim/opimaccessbackend.h4
-rw-r--r--libopie/pim/opimaccesstemplate.h4
-rw-r--r--libopie/pim/opimcache.h6
-rw-r--r--libopie/pim/opimmainwindow.cpp14
-rw-r--r--libopie/pim/opimxrefmanager.h2
-rw-r--r--libopie/pim/orecordlist.h10
-rw-r--r--libopie/pim/otemplatebase.h7
-rw-r--r--libopie/pim/otodo.cpp12
-rw-r--r--libopie/pim/otodo.h9
-rw-r--r--libopie/pim/otodoaccessbackend.h4
-rw-r--r--libopie/pim/otodoaccessvcal.cpp26
-rw-r--r--libopie/pim/otodoaccessxml.cpp6
-rw-r--r--libopie2/opiepim/backend/obackendfactory.h12
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.h12
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp22
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp3
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend.h4
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp6
-rw-r--r--libopie2/opiepim/backend/opimaccessbackend.h4
-rw-r--r--libopie2/opiepim/backend/otodoaccessbackend.h4
-rw-r--r--libopie2/opiepim/backend/otodoaccessvcal.cpp26
-rw-r--r--libopie2/opiepim/backend/otodoaccessxml.cpp6
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h11
-rw-r--r--libopie2/opiepim/core/oconversion.h5
-rw-r--r--libopie2/opiepim/core/opimaccesstemplate.h4
-rw-r--r--libopie2/opiepim/core/opimcache.h6
-rw-r--r--libopie2/opiepim/core/opimxrefmanager.h2
-rw-r--r--libopie2/opiepim/core/otemplatebase.h7
-rw-r--r--libopie2/opiepim/ocontact.cpp219
-rw-r--r--libopie2/opiepim/ocontact.h9
-rw-r--r--libopie2/opiepim/orecordlist.h10
-rw-r--r--libopie2/opiepim/otodo.cpp12
-rw-r--r--libopie2/opiepim/otodo.h9
-rw-r--r--libopie2/opiepim/ui/opimmainwindow.cpp14
48 files changed, 633 insertions, 218 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 34bf7f1..6819085 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -1,7 +1,8 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** Copyright (C) 2003 Stefan Eilers (eilers.stefan@epost.de)
3** 4**
4** This file is part of Qt Palmtop Environment. 5** This file is part of the Open Palmtop Environment (see www.opie.info).
5** 6**
6** This file may be distributed and/or modified under the terms of the 7** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 8** GNU General Public License version 2 as published by the Free Software
@@ -13,8 +14,6 @@
13** 14**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 15** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 16**
16** OContact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18** 17**
19**********************************************************************/ 18**********************************************************************/
20 19
@@ -113,12 +112,12 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
113 moveToolBar( listTools, m_config.getToolBarPos() ); 112 moveToolBar( listTools, m_config.getToolBarPos() );
114 113
115 // View Icons 114 // View Icons
116 m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/weeklst" ), 115 m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/listview" ),
117 QString::null, 0, this, 0 ); 116 QString::null, 0, this, 0 );
118 connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); 117 connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) );
119 m_tableViewButton->setToggleAction( true ); 118 m_tableViewButton->setToggleAction( true );
120 m_tableViewButton->addTo( listTools ); 119 m_tableViewButton->addTo( listTools );
121 m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "day" ), QString::null, 0, this, 0 ); 120 m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "addressbook/cardview" ), QString::null, 0, this, 0 );
122 connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); 121 connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) );
123 m_cardViewButton->setToggleAction( true ); 122 m_cardViewButton->setToggleAction( true );
124 m_cardViewButton->addTo( listTools ); 123 m_cardViewButton->addTo( listTools );
@@ -652,8 +651,10 @@ static void parseName( const QString& name, QString *first, QString *middle,
652 651
653void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) 652void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
654{ 653{
654 bool needShow = FALSE;
655 qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() ); 655 qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() );
656 656
657
657 if (msg == "editPersonal()") { 658 if (msg == "editPersonal()") {
658 editPersonal(); 659 editPersonal();
659 } else if (msg == "editPersonalAndClose()") { 660 } else if (msg == "editPersonalAndClose()") {
@@ -689,6 +690,7 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
689 QString description = "mycard.vcf"; 690 QString description = "mycard.vcf";
690 ir->send( beamFilename, description, "text/x-vCard" ); 691 ir->send( beamFilename, description, "text/x-vCard" );
691 } else if ( msg == "show(int)" ) { 692 } else if ( msg == "show(int)" ) {
693 raise();
692 QDataStream stream(data,IO_ReadOnly); 694 QDataStream stream(data,IO_ReadOnly);
693 int uid; 695 int uid;
694 stream >> uid; 696 stream >> uid;
@@ -706,8 +708,8 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
706 m_abView -> setCurrentUid( uid ); 708 m_abView -> setCurrentUid( uid );
707 slotViewSwitched ( AbView::CardView ); 709 slotViewSwitched ( AbView::CardView );
708 710
709 showMaximized(); 711 needShow = true;
710 qApp->exec(); 712
711 713
712 } else if ( msg == "edit(int)" ) { 714 } else if ( msg == "edit(int)" ) {
713 QDataStream stream(data,IO_ReadOnly); 715 QDataStream stream(data,IO_ReadOnly);
@@ -726,6 +728,9 @@ void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
726 slotViewEdit(); 728 slotViewEdit();
727 } 729 }
728 730
731 if (needShow)
732 QPEApplication::setKeepRunning();
733
729} 734}
730 735
731void AddressbookWindow::editEntry( EntryMode entryMode ) 736void AddressbookWindow::editEntry( EntryMode entryMode )
@@ -900,7 +905,7 @@ void AddressbookWindow::slotNotFound()
900{ 905{
901 qWarning("Got notfound signal!"); 906 qWarning("Got notfound signal!");
902 QMessageBox::information( this, tr( "Not Found" ), 907 QMessageBox::information( this, tr( "Not Found" ),
903 tr( "Unable to find a contact for this \n search pattern!" ) ); 908 "<qt>" + tr( "Unable to find a contact for this search pattern!" ) + "</qt>" );
904 909
905 910
906} 911}
@@ -950,7 +955,7 @@ void AddressbookWindow::slotSetCategory( int c )
950 cat = QString::null; 955 cat = QString::null;
951 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled 956 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled
952 cat = "Unfiled"; 957 cat = "Unfiled";
953 qWarning ("Unfiled selected!!!"); 958 qWarning ("Unfiled selected!");
954 }else{ 959 }else{
955 cat = m_abView->categories()[i - 4]; 960 cat = m_abView->categories()[i - 4];
956 } 961 }
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index ce14f98..9d1a1c7 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -597,7 +597,7 @@ void ContactEditor::init() {
597 if (((*it) == "Anniversary") || 597 if (((*it) == "Anniversary") ||
598 ((*it) == "Birthday")|| ((*it) == "Gender")) continue; 598 ((*it) == "Birthday")|| ((*it) == "Gender")) continue;
599 599
600 l = new QLabel( mapIdToStr[mapStrToID[*it]].utf8() , container ); 600 l = new QLabel( mapIdToStr[mapStrToID[*it]], container );
601 listName.append( l ); 601 listName.append( l );
602 gl->addWidget( l, i, 0 ); 602 gl->addWidget( l, i, 0 );
603 QLineEdit *e = new QLineEdit( container ); 603 QLineEdit *e = new QLineEdit( container );
diff --git a/core/pim/addressbook/opie-addressbook.control b/core/pim/addressbook/opie-addressbook.control
index f06fa91..d949bd4 100644
--- a/core/pim/addressbook/opie-addressbook.control
+++ b/core/pim/addressbook/opie-addressbook.control
@@ -1,11 +1,11 @@
1Package: opie-addressbook 1Package: opie-addressbook
2Files: bin/addressbook apps/1Pim/addressbook.desktop pics/addressbook/*.png 2Files: bin/addressbook apps/1Pim/addressbook.desktop
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Conflicts: qpe-tkcaddressbook 5Conflicts: qpe-tkcaddressbook
6Maintainer: Stefan Eilers <eilers.stefan@epost.de> 6Maintainer: Stefan Eilers <eilers.stefan@epost.de>
7Architecture: arm 7Architecture: arm
8Version: $QPE_VERSION-$SUB_VERSION 8Depends: task-opie-minimal, libopie1, opie-pics
9Depends: task-opie-minimal, libopie1
10Description: Contacts 9Description: Contacts
11 A simple addressbook for the Opie environment. 10 A simple addressbook for the Opie environment.
11Version: $QPE_VERSION$EXTRAVERSION
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index 4c93584..9621826 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -1,9 +1,9 @@
1#ifndef _VERSION_H_ 1#ifndef _VERSION_H_
2#define _VERSION_H_ 2#define _VERSION_H_
3 3
4#define MAINVERSION "0" 4#define MAINVERSION "1"
5#define SUBVERSION "9" 5#define SUBVERSION "0"
6#define PATCHVERSION "5" 6#define PATCHVERSION "0"
7 7
8#define APPNAME "OPIE_ADDRESSBOOK" 8#define APPNAME "OPIE_ADDRESSBOOK"
9 9
diff --git a/libopie/pim/obackendfactory.h b/libopie/pim/obackendfactory.h
index ad6cf5a..f3c339d 100644
--- a/libopie/pim/obackendfactory.h
+++ b/libopie/pim/obackendfactory.h
@@ -16,6 +16,14 @@
16 * ===================================================================== 16 * =====================================================================
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.7 2003/08/01 12:30:16 eilers
20 * Merging changes from BRANCH_1_0 to HEAD
21 *
22 * Revision 1.6.4.1 2003/06/30 14:34:19 eilers
23 * Patches from Zecke:
24 * Fixing and cleaning up extraMap handling
25 * Adding d_ptr for binary compatibility in the future
26 *
19 * Revision 1.6 2003/04/13 18:07:10 zecke 27 * Revision 1.6 2003/04/13 18:07:10 zecke
20 * More API doc 28 * More API doc
21 * QString -> const QString& 29 * QString -> const QString&
@@ -68,6 +76,8 @@
68#include "otodoaccesssql.h" 76#include "otodoaccesssql.h"
69#endif 77#endif
70 78
79class OBackendPrivate;
80
71/** 81/**
72 * This class is our factory. It will give us the default implementations 82 * This class is our factory. It will give us the default implementations
73 * of at least Todolist, Contacts and Datebook. In the future this class will 83 * of at least Todolist, Contacts and Datebook. In the future this class will
@@ -148,6 +158,8 @@ class OBackendFactory
148 158
149 159
150 } 160 }
161 private:
162 OBackendPrivate* d;
151}; 163};
152 164
153 165
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index be4ce0a..3473baa 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -21,10 +21,11 @@
21 21
22#include "ocontact.h" 22#include "ocontact.h"
23#include "opimresolver.h" 23#include "opimresolver.h"
24#include "oconversion.h"
24 25
25#include <qpe/stringutil.h> 26#include <qpe/stringutil.h>
26#include "oconversion.h"
27#include <qpe/timestring.h> 27#include <qpe/timestring.h>
28#include <qpe/config.h>
28 29
29#include <qobject.h> 30#include <qobject.h>
30#include <qregexp.h> 31#include <qregexp.h>
@@ -438,12 +439,16 @@ QString OContact::toRichText() const
438 QString str; 439 QString str;
439 bool marker = false; 440 bool marker = false;
440 441
442 Config cfg("qpe");
443 cfg.setGroup("Appearance");
444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
445
441 // name, jobtitle and company 446 // name, jobtitle and company
442 if ( !(value = fullName()).isEmpty() ) 447 if ( !(value = fullName()).isEmpty() )
443 text += "<b><h3><img src=\"addressbook/AddressBook\">" + Qtopia::escapeString(value) + "</h3></b>"; 448 text += "<b><h3><img src=\"addressbook/AddressBook\">" + Qtopia::escapeString(value) + "</h3></b>";
444 449
445 if ( !(value = jobTitle()).isEmpty() ) 450 if ( !(value = jobTitle()).isEmpty() )
446 text += Qtopia::escapeString(value) + "<br>"; 451 text += Qtopia::escapeString(value);
447 452
448 comp = company(); 453 comp = company();
449 if ( !(value = department()).isEmpty() ) { 454 if ( !(value = department()).isEmpty() ) {
@@ -454,77 +459,110 @@ QString OContact::toRichText() const
454 text += "<br>"; 459 text += "<br>";
455 } 460 }
456 if ( !comp.isEmpty() ) 461 if ( !comp.isEmpty() )
457 text += Qtopia::escapeString(comp) + "<br>"; 462 text += Qtopia::escapeString(comp);
458 463
459 text += "<hr><br>"; 464 text += "<br><hr>";
460 465
461 // defailt email 466 // defailt email
462 QString defEmail = defaultEmail(); 467 QString defEmail = defaultEmail();
463 if ( !defEmail.isEmpty() ) 468 if ( !defEmail.isEmpty() ){
464 text += "<b><img src=\"addressbook/email\">" + QObject::tr("Default Email: ") + "</b>" 469 text += "<b><img src=\"addressbook/email\">" + QObject::tr("Default Email: ") + "</b>"
465 + Qtopia::escapeString(defEmail) + "<br>"; 470 + Qtopia::escapeString(defEmail);
466 471 marker = true;
467 text += "<br>"; 472 }
468 473
469 // business address 474 // business address
470 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || 475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
471 !businessZip().isEmpty() || !businessCountry().isEmpty() ) { 476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) {
472 text += QObject::tr( "<b>Work Address:</b>" ); 477 text += QObject::tr( "<br><br><b>Work Address:</b>" );
473 text += "<br>";
474 marker = true; 478 marker = true;
475 } 479 }
476 480
477 if ( !(value = businessStreet()).isEmpty() ) 481 if ( !(value = businessStreet()).isEmpty() ){
478 text += Qtopia::escapeString(value) + "<br>"; 482 text += "<br>" + Qtopia::escapeString(value);
483 marker = true;
484 }
485
486 switch( addressformat ){
487 case Zip_City_State:{ // Zip_Code City, State
479 state = businessState(); 488 state = businessState();
480 if ( !(value = businessZip()).isEmpty() ) 489 if ( !(value = businessZip()).isEmpty() ){
481 text += Qtopia::escapeString(value) + " "; 490 text += "<br>" + Qtopia::escapeString(value) + " ";
491 marker = true;
492
493 } else
494 text += "<br>";
495
482 if ( !(value = businessCity()).isEmpty() ) { 496 if ( !(value = businessCity()).isEmpty() ) {
497 marker = true;
483 text += Qtopia::escapeString(value); 498 text += Qtopia::escapeString(value);
484 if ( state ) 499 if ( state )
485 text += ", " + Qtopia::escapeString(state); 500 text += ", " + Qtopia::escapeString(state);
486 text += "<br>"; 501 } else if ( !state.isEmpty() ){
487 } else if ( !state.isEmpty() ) 502 text += "<br>" + Qtopia::escapeString(state);
488 text += Qtopia::escapeString(state) + "<br>"; 503 marker = true;
504 }
505 break;
506 }
507 case City_State_Zip:{ // City, State Zip_Code
508 state = businessState();
509 if ( !(value = businessCity()).isEmpty() ) {
510 marker = true;
511 text += "<br>" + Qtopia::escapeString(value);
512 if ( state )
513 text += ", " + Qtopia::escapeString(state);
514 } else if ( !state.isEmpty() ){
515 text += "<br>" + Qtopia::escapeString(state);
516 marker = true;
517 }
518 if ( !(value = businessZip()).isEmpty() ){
519 text += " " + Qtopia::escapeString(value);
520 marker = true;
521 }
522 break;
523 }
524 }
489 525
490 if ( !(value = businessCountry()).isEmpty() ) 526 if ( !(value = businessCountry()).isEmpty() ){
491 text += Qtopia::escapeString(value) + "<br>"; 527 text += "<br>" + Qtopia::escapeString(value);
528 marker = true;
529 }
492 530
493 // rest of Business data 531 // rest of Business data
494 str = office(); 532 str = office();
495 if ( !str.isEmpty() ){ 533 if ( !str.isEmpty() ){
496 text += "<b>" + QObject::tr("Office: ") + "</b>" 534 text += "<br><b>" + QObject::tr("Office: ") + "</b>"
497 + Qtopia::escapeString(str) + "<br>"; 535 + Qtopia::escapeString(str);
498 marker = true; 536 marker = true;
499 } 537 }
500 str = businessWebpage(); 538 str = businessWebpage();
501 if ( !str.isEmpty() ){ 539 if ( !str.isEmpty() ){
502 text += "<b><img src=\"addressbook/webpagework\">" + QObject::tr("Business Web Page: ") + "</b>" 540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>"
503 + Qtopia::escapeString(str) + "<br>"; 541 + Qtopia::escapeString(str);
504 marker = true; 542 marker = true;
505 } 543 }
506 str = businessPhone(); 544 str = businessPhone();
507 if ( !str.isEmpty() ){ 545 if ( !str.isEmpty() ){
508 text += "<b><img src=\"addressbook/phonework\">" + QObject::tr("Business Phone: ") + "</b>" 546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>"
509 + Qtopia::escapeString(str) + "<br>"; 547 + Qtopia::escapeString(str);
510 marker = true; 548 marker = true;
511 } 549 }
512 str = businessFax(); 550 str = businessFax();
513 if ( !str.isEmpty() ){ 551 if ( !str.isEmpty() ){
514 text += "<b><img src=\"addressbook/faxwork\">" + QObject::tr("Business Fax: ") + "</b>" 552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>"
515 + Qtopia::escapeString(str) + "<br>"; 553 + Qtopia::escapeString(str);
516 marker = true; 554 marker = true;
517 } 555 }
518 str = businessMobile(); 556 str = businessMobile();
519 if ( !str.isEmpty() ){ 557 if ( !str.isEmpty() ){
520 text += "<b><img src=\"addressbook/mobilework\">" + QObject::tr("Business Mobile: ") + "</b>" 558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>"
521 + Qtopia::escapeString(str) + "<br>"; 559 + Qtopia::escapeString(str);
522 marker = true; 560 marker = true;
523 } 561 }
524 str = businessPager(); 562 str = businessPager();
525 if ( !str.isEmpty() ){ 563 if ( !str.isEmpty() ){
526 text += "<b>" + QObject::tr("Business Pager: ") + "</b>" 564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>"
527 + Qtopia::escapeString(str) + "<br>"; 565 + Qtopia::escapeString(str);
528 marker = true; 566 marker = true;
529 } 567 }
530 568
@@ -533,107 +571,142 @@ QString OContact::toRichText() const
533 // home address 571 // home address
534 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || 572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
535 !homeZip().isEmpty() || !homeCountry().isEmpty() ) { 573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) {
536 text += QObject::tr( "<b>Home Address:</b>" ); 574 text += QObject::tr( "<br><br><b>Home Address:</b>" );
537 text += "<br>"; 575 marker = true;
538 } 576 }
539 577
540 if ( !(value = homeStreet()).isEmpty() ) 578 if ( !(value = homeStreet()).isEmpty() ){
541 text += Qtopia::escapeString(value) + "<br>"; 579 text += "<br>" + Qtopia::escapeString(value);
580 marker = true;
581 }
582
583 switch( addressformat ){
584 case Zip_City_State:{ // Zip_Code City, State
542 state = homeState(); 585 state = homeState();
543 if ( !(value = homeZip()).isEmpty() ) 586 if ( !(value = homeZip()).isEmpty() ){
544 text += Qtopia::escapeString(value) + " "; 587 text += "<br>" + Qtopia::escapeString(value) + " ";
588 marker = true;
589 } else
590 text += "<br>";
591
545 if ( !(value = homeCity()).isEmpty() ) { 592 if ( !(value = homeCity()).isEmpty() ) {
593 marker = true;
546 text += Qtopia::escapeString(value); 594 text += Qtopia::escapeString(value);
547 if ( !state.isEmpty() ) 595 if ( !state.isEmpty() )
548 text += ", " + Qtopia::escapeString(state); 596 text += ", " + Qtopia::escapeString(state);
549 text += "<br>"; 597 } else if (!state.isEmpty()) {
550 } else if (!state.isEmpty()) 598 text += "<br>" + Qtopia::escapeString(state);
551 text += Qtopia::escapeString(state) + "<br>"; 599 marker = true;
552 if ( !(value = homeCountry()).isEmpty() ) 600 }
553 text += Qtopia::escapeString(value) + "<br>"; 601 break;
602 }
603 case City_State_Zip:{ // City, State Zip_Code
604 state = homeState();
605 if ( !(value = homeCity()).isEmpty() ) {
606 marker = true;
607 text += "<br>" + Qtopia::escapeString(value);
608 if ( state )
609 text += ", " + Qtopia::escapeString(state);
610 } else if ( !state.isEmpty() ){
611 text += "<br>" + Qtopia::escapeString(state);
612 marker = true;
613 }
614 if ( !(value = homeZip()).isEmpty() ){
615 text += " " + Qtopia::escapeString(value);
616 marker = true;
617 }
618 break;
619 }
620 }
621
622 if ( !(value = homeCountry()).isEmpty() ){
623 text += "<br>" + Qtopia::escapeString(value);
624 marker = true;
625 }
554 626
555 // rest of Home data 627 // rest of Home data
556 str = homeWebpage(); 628 str = homeWebpage();
557 if ( !str.isEmpty() ){ 629 if ( !str.isEmpty() ){
558 text += "<b><img src=\"addressbook/webpagehome\">" + QObject::tr("Home Web Page: ") + "</b>" 630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>"
559 + Qtopia::escapeString(str) + "<br>"; 631 + Qtopia::escapeString(str);
560 marker = true; 632 marker = true;
561 } 633 }
562 str = homePhone(); 634 str = homePhone();
563 if ( !str.isEmpty() ){ 635 if ( !str.isEmpty() ){
564 text += "<b><img src=\"addressbook/phonehome\">" + QObject::tr("Home Phone: ") + "</b>" 636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>"
565 + Qtopia::escapeString(str) + "<br>"; 637 + Qtopia::escapeString(str);
566 marker = true; 638 marker = true;
567 } 639 }
568 str = homeFax(); 640 str = homeFax();
569 if ( !str.isEmpty() ){ 641 if ( !str.isEmpty() ){
570 text += "<b><img src=\"addressbook/faxhome\">" + QObject::tr("Home Fax: ") + "</b>" 642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>"
571 + Qtopia::escapeString(str) + "<br>"; 643 + Qtopia::escapeString(str);
572 marker = true; 644 marker = true;
573 } 645 }
574 str = homeMobile(); 646 str = homeMobile();
575 if ( !str.isEmpty() ){ 647 if ( !str.isEmpty() ){
576 text += "<b><img src=\"addressbook/mobilehome\">" + QObject::tr("Home Mobile: ") + "</b>" 648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>"
577 + Qtopia::escapeString(str) + "<br>"; 649 + Qtopia::escapeString(str);
578 marker = true; 650 marker = true;
579 } 651 }
580 652
581 if ( marker ) 653 if ( marker )
582 text += "<br><hr><br>"; 654 text += "<br><hr>";
583 // the others... 655
656 // the rest...
584 str = emails(); 657 str = emails();
585 if ( !str.isEmpty() && ( str != defEmail ) ) 658 if ( !str.isEmpty() && ( str != defEmail ) )
586 text += "<b>" + QObject::tr("All Emails: ") + "</b>" 659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>"
587 + Qtopia::escapeString(str) + "<br>"; 660 + Qtopia::escapeString(str);
588 str = profession(); 661 str = profession();
589 if ( !str.isEmpty() ) 662 if ( !str.isEmpty() )
590 text += "<b>" + QObject::tr("Profession: ") + "</b>" 663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>"
591 + Qtopia::escapeString(str) + "<br>"; 664 + Qtopia::escapeString(str);
592 str = assistant(); 665 str = assistant();
593 if ( !str.isEmpty() ) 666 if ( !str.isEmpty() )
594 text += "<b>" + QObject::tr("Assistant: ") + "</b>" 667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>"
595 + Qtopia::escapeString(str) + "<br>"; 668 + Qtopia::escapeString(str);
596 str = manager(); 669 str = manager();
597 if ( !str.isEmpty() ) 670 if ( !str.isEmpty() )
598 text += "<b>" + QObject::tr("Manager: ") + "</b>" 671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>"
599 + Qtopia::escapeString(str) + "<br>"; 672 + Qtopia::escapeString(str);
600 str = gender(); 673 str = gender();
601 if ( !str.isEmpty() && str.toInt() != 0 ) { 674 if ( !str.isEmpty() && str.toInt() != 0 ) {
675 text += "<br>";
602 if ( str.toInt() == 1 ) 676 if ( str.toInt() == 1 )
603 str = QObject::tr( "Male" ); 677 str = QObject::tr( "Male" );
604 else if ( str.toInt() == 2 ) 678 else if ( str.toInt() == 2 )
605 str = QObject::tr( "Female" ); 679 str = QObject::tr( "Female" );
606 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>"; 680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str;
607 } 681 }
608 str = spouse(); 682 str = spouse();
609 if ( !str.isEmpty() ) 683 if ( !str.isEmpty() )
610 text += "<b>" + QObject::tr("Spouse: ") + "</b>" 684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>"
611 + Qtopia::escapeString(str) + "<br>"; 685 + Qtopia::escapeString(str);
612 if ( birthday().isValid() ){ 686 if ( birthday().isValid() ){
613 str = TimeString::numberDateString( birthday() ); 687 str = TimeString::numberDateString( birthday() );
614 text += "<b>" + QObject::tr("Birthday: ") + "</b>" 688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>"
615 + Qtopia::escapeString(str) + "<br>"; 689 + Qtopia::escapeString(str);
616 } 690 }
617 if ( anniversary().isValid() ){ 691 if ( anniversary().isValid() ){
618 str = TimeString::numberDateString( anniversary() ); 692 str = TimeString::numberDateString( anniversary() );
619 text += "<b>" + QObject::tr("Anniversary: ") + "</b>" 693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>"
620 + Qtopia::escapeString(str) + "<br>"; 694 + Qtopia::escapeString(str);
621 } 695 }
622 str = children(); 696 str = children();
623 if ( !str.isEmpty() ) 697 if ( !str.isEmpty() )
624 text += "<b>" + QObject::tr("Children: ") + "</b>" 698 text += "<br><b>" + QObject::tr("Children: ") + "</b>"
625 + Qtopia::escapeString(str) + "<br>"; 699 + Qtopia::escapeString(str);
626 700
627 str = nickname(); 701 str = nickname();
628 if ( !str.isEmpty() ) 702 if ( !str.isEmpty() )
629 text += "<b>" + QObject::tr("Nickname: ") + "</b>" 703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>"
630 + Qtopia::escapeString(str) + "<br>"; 704 + Qtopia::escapeString(str);
631 705
632 // categories 706 // categories
633 if ( categoryNames("Contacts").count() ){ 707 if ( categoryNames("Contacts").count() ){
634 text += "<b>" + QObject::tr( "Category:") + "</b> "; 708 text += "<br><b>" + QObject::tr( "Category:") + "</b> ";
635 text += categoryNames("Contacts").join(", "); 709 text += categoryNames("Contacts").join(", ");
636 text += "<br>";
637 } 710 }
638 711
639 // notes last 712 // notes last
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h
index dd2de17..9a1a8dc 100644
--- a/libopie/pim/ocontact.h
+++ b/libopie/pim/ocontact.h
@@ -32,7 +32,7 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
32// MOC_SKIP_END 32// MOC_SKIP_END
33#endif 33#endif
34 34
35class ContactPrivate; 35class OContactPrivate;
36 36
37/** 37/**
38 * OContact class represents a specialised PIM Record for contacts. 38 * OContact class represents a specialised PIM Record for contacts.
@@ -49,6 +49,11 @@ public:
49 OContact( const QMap<int, QString> &fromMap ); 49 OContact( const QMap<int, QString> &fromMap );
50 virtual ~OContact(); 50 virtual ~OContact();
51 51
52 enum DateFormat{
53 Zip_City_State = 0,
54 City_State_Zip
55 };
56
52 /* 57 /*
53 * do we need to inline them 58 * do we need to inline them
54 * if yes do we need to inline them this way? 59 * if yes do we need to inline them this way?
@@ -233,7 +238,7 @@ private:
233 const QString &country ) const; 238 const QString &country ) const;
234 239
235 QMap<int, QString> mMap; 240 QMap<int, QString> mMap;
236 ContactPrivate *d; 241 OContactPrivate *d;
237}; 242};
238 243
239 244
diff --git a/libopie/pim/ocontactaccess.h b/libopie/pim/ocontactaccess.h
index e90db32..9b0a719 100644
--- a/libopie/pim/ocontactaccess.h
+++ b/libopie/pim/ocontactaccess.h
@@ -17,6 +17,14 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.9 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
23 * Revision 1.8.2.1 2003/06/30 14:34:19 eilers
24 * Patches from Zecke:
25 * Fixing and cleaning up extraMap handling
26 * Adding d_ptr for binary compatibility in the future
27 *
20 * Revision 1.8 2003/05/08 13:55:09 tille 28 * Revision 1.8 2003/05/08 13:55:09 tille
21 * search stuff 29 * search stuff
22 * and match, toRichText & toShortText in oevent 30 * and match, toRichText & toShortText in oevent
@@ -165,6 +173,9 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
165 private slots: 173 private slots:
166 void copMessage( const QCString &msg, const QByteArray &data ); 174 void copMessage( const QCString &msg, const QByteArray &data );
167 175
176 private:
177 class Private;
178 Private *d;
168 179
169}; 180};
170#endif 181#endif
diff --git a/libopie/pim/ocontactaccessbackend.h b/libopie/pim/ocontactaccessbackend.h
index ebeb42d..280e05c 100644
--- a/libopie/pim/ocontactaccessbackend.h
+++ b/libopie/pim/ocontactaccessbackend.h
@@ -19,6 +19,14 @@
19 * ===================================================================== 19 * =====================================================================
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.6 2003/08/01 12:30:16 eilers
23 * Merging changes from BRANCH_1_0 to HEAD
24 *
25 * Revision 1.5.4.1 2003/06/30 14:34:19 eilers
26 * Patches from Zecke:
27 * Fixing and cleaning up extraMap handling
28 * Adding d_ptr for binary compatibility in the future
29 *
22 * Revision 1.5 2003/04/13 18:07:10 zecke 30 * Revision 1.5 2003/04/13 18:07:10 zecke
23 * More API doc 31 * More API doc
24 * QString -> const QString& 32 * QString -> const QString&
@@ -103,5 +111,9 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
103 */ 111 */
104 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; 112 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
105 113
114
115private:
116 class Private;
117 Private *d;
106}; 118};
107#endif 119#endif
diff --git a/libopie/pim/ocontactaccessbackend_vcard.cpp b/libopie/pim/ocontactaccessbackend_vcard.cpp
index 270bef3..b60c5be 100644
--- a/libopie/pim/ocontactaccessbackend_vcard.cpp
+++ b/libopie/pim/ocontactaccessbackend_vcard.cpp
@@ -17,6 +17,21 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.11 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
23 * Revision 1.10.4.3 2003/07/23 08:54:37 eilers
24 * Default email was added to the list of all emails, which already contains
25 * the default email..
26 * This closes bug #1045
27 *
28 * Revision 1.10.4.2 2003/07/23 08:44:45 eilers
29 * Importing of Notes in vcard files wasn't implemented.
30 * Closes bug #1044
31 *
32 * Revision 1.10.4.1 2003/06/02 13:37:49 eilers
33 * Fixing memory leak
34 *
20 * Revision 1.10 2003/04/13 18:07:10 zecke 35 * Revision 1.10 2003/04/13 18:07:10 zecke
21 * More API doc 36 * More API doc
22 * QString -> const QString& 37 * QString -> const QString&
@@ -151,6 +166,7 @@ bool OContactAccessBackend_VCard::save()
151 cleanVObject( vo ); 166 cleanVObject( vo );
152 } 167 }
153 cleanStrTbl(); 168 cleanStrTbl();
169 deleteVObject( obj );
154 170
155 m_dirty = false; 171 m_dirty = false;
156 return true; 172 return true;
@@ -446,7 +462,9 @@ OContact OContactAccessBackend_VCard::parseVObject( VObject *obj )
446 c.setBirthday( convVCardDateToDate( value ) ); 462 c.setBirthday( convVCardDateToDate( value ) );
447 463
448 } 464 }
449 465 else if ( name == VCCommentProp ) {
466 c.setNotes( value );
467 }
450#if 0 468#if 0
451 else { 469 else {
452 printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) ); 470 printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) );
@@ -534,7 +552,7 @@ VObject* OContactAccessBackend_VCard::createVObject( const OContact &c )
534 552
535 553
536 QStringList emails = c.emailList(); 554 QStringList emails = c.emailList();
537 emails.prepend( c.defaultEmail() ); 555 // emails.prepend( c.defaultEmail() ); Fix for bugreport #1045
538 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 556 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
539 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it ); 557 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it );
540 safeAddProp( email, VCInternetProp ); 558 safeAddProp( email, VCInternetProp );
diff --git a/libopie/pim/ocontactaccessbackend_xml.cpp b/libopie/pim/ocontactaccessbackend_xml.cpp
index 097142b..1c21619 100644
--- a/libopie/pim/ocontactaccessbackend_xml.cpp
+++ b/libopie/pim/ocontactaccessbackend_xml.cpp
@@ -17,6 +17,9 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.7 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
20 * Revision 1.6 2003/07/07 16:19:47 eilers 23 * Revision 1.6 2003/07/07 16:19:47 eilers
21 * Fixing serious bug in hasQuerySettings() 24 * Fixing serious bug in hasQuerySettings()
22 * 25 *
diff --git a/libopie/pim/oconversion.h b/libopie/pim/oconversion.h
index 13367e1..4c0a497 100644
--- a/libopie/pim/oconversion.h
+++ b/libopie/pim/oconversion.h
@@ -37,6 +37,11 @@ public:
37 */ 37 */
38 static QString dateTimeToString( const QDateTime& ); 38 static QString dateTimeToString( const QDateTime& );
39 static QDateTime dateTimeFromString( const QString& ); 39 static QDateTime dateTimeFromString( const QString& );
40
41private:
42 class Private;
43 Private* d;
44
40}; 45};
41 46
42#endif // __oconversion_h__ 47#endif // __oconversion_h__
diff --git a/libopie/pim/odatebookaccessbackend.h b/libopie/pim/odatebookaccessbackend.h
index 86ff298..3c02c42 100644
--- a/libopie/pim/odatebookaccessbackend.h
+++ b/libopie/pim/odatebookaccessbackend.h
@@ -68,6 +68,10 @@ public:
68 */ 68 */
69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start ); 69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start );
70 70
71private:
72 class Private;
73 Private *d;
74
71}; 75};
72 76
73#endif 77#endif
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp
index ab2eea4..5ea945c 100644
--- a/libopie/pim/odatebookaccessbackend_xml.cpp
+++ b/libopie/pim/odatebookaccessbackend_xml.cpp
@@ -430,9 +430,9 @@ bool ODateBookAccessBackend_XML::loadFile() {
430 */ 430 */
431 find = dict[attr.data()]; 431 find = dict[attr.data()];
432 if (!find) 432 if (!find)
433 ev.setCustomField( attr, value ); 433 ev.setCustomField( attr, str );
434 else { 434 else {
435 setField( ev, *find, value ); 435 setField( ev, *find, str );
436 } 436 }
437 } 437 }
438 /* time to finalize */ 438 /* time to finalize */
@@ -453,7 +453,7 @@ void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) {
453 ev.setTimeZone( "UTC"); // make sure it is really utc 453 ev.setTimeZone( "UTC"); // make sure it is really utc
454 }else { 454 }else {
455 /* to current date time */ 455 /* to current date time */
456 qWarning(" Start is %d", start ); 456 // qWarning(" Start is %d", start );
457 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() ); 457 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() );
458 QDateTime date = zone.toDateTime( start ); 458 QDateTime date = zone.toDateTime( start );
459 qWarning(" Start is %s", date.toString().latin1() ); 459 qWarning(" Start is %s", date.toString().latin1() );
diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h
index f4bbe35..c3d91f7 100644
--- a/libopie/pim/opimaccessbackend.h
+++ b/libopie/pim/opimaccessbackend.h
@@ -7,6 +7,7 @@
7#include <opie/opimrecord.h> 7#include <opie/opimrecord.h>
8 8
9 9
10class OPimAccessBackendPrivate;
10/** 11/**
11 * OPimAccessBackend is the base class 12 * OPimAccessBackend is the base class
12 * for all private backends 13 * for all private backends
@@ -107,8 +108,7 @@ protected:
107 uint readAhead()const; 108 uint readAhead()const;
108 109
109private: 110private:
110 class Private; 111 OPimAccessBackendPrivate *d;
111 Private* d;
112 Frontend* m_front; 112 Frontend* m_front;
113 uint m_read; 113 uint m_read;
114 int m_acc; 114 int m_acc;
diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h
index 8ff205c..ecbeb68 100644
--- a/libopie/pim/opimaccesstemplate.h
+++ b/libopie/pim/opimaccesstemplate.h
@@ -10,6 +10,7 @@
10#include "opimcache.h" 10#include "opimcache.h"
11#include "otemplatebase.h" 11#include "otemplatebase.h"
12 12
13class OPimAccessTemplatePrivate;
13/** 14/**
14 * Thats the frontend to our OPIE PIM 15 * Thats the frontend to our OPIE PIM
15 * Library. Either you want to use it's 16 * Library. Either you want to use it's
@@ -152,6 +153,9 @@ protected:
152 BackEnd* m_backEnd; 153 BackEnd* m_backEnd;
153 Cache m_cache; 154 Cache m_cache;
154 155
156private:
157 OPimAccessTemplatePrivate *d;
158
155}; 159};
156 160
157template <class T> 161template <class T>
diff --git a/libopie/pim/opimcache.h b/libopie/pim/opimcache.h
index 73414e5..7f7cff5 100644
--- a/libopie/pim/opimcache.h
+++ b/libopie/pim/opimcache.h
@@ -5,6 +5,8 @@
5 5
6#include "opimrecord.h" 6#include "opimrecord.h"
7 7
8class OPimCacheItemPrivate;
9
8template <class T = OPimRecord> 10template <class T = OPimRecord>
9class OPimCacheItem { 11class OPimCacheItem {
10public: 12public:
@@ -18,8 +20,11 @@ public:
18 void setRecord( const T& ); 20 void setRecord( const T& );
19private: 21private:
20 T m_t; 22 T m_t;
23 OPimCacheItemPrivate *d;
21}; 24};
22 25
26
27class OPimCachePrivate;
23/** 28/**
24 * OPimCache for caching the items 29 * OPimCache for caching the items
25 * We support adding, removing 30 * We support adding, removing
@@ -46,6 +51,7 @@ public:
46 51
47private: 52private:
48 QIntCache<Item> m_cache; 53 QIntCache<Item> m_cache;
54 OPimCachePrivate* d;
49}; 55};
50 56
51// Implementation 57// Implementation
diff --git a/libopie/pim/opimmainwindow.cpp b/libopie/pim/opimmainwindow.cpp
index 4044bc1..2739e26 100644
--- a/libopie/pim/opimmainwindow.cpp
+++ b/libopie/pim/opimmainwindow.cpp
@@ -4,6 +4,7 @@
4 4
5#include <qpe/sound.h> 5#include <qpe/sound.h>
6#include <qpe/qcopenvelope_qws.h> 6#include <qpe/qcopenvelope_qws.h>
7#include <qpe/qpeapplication.h>
7 8
8#include "opimresolver.h" 9#include "opimresolver.h"
9#include "opimmainwindow.h" 10#include "opimmainwindow.h"
@@ -38,30 +39,37 @@ void OPimMainWindow::doSetDocument( const QString& ) {
38 39
39} 40}
40void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { 41void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) {
42 bool needShow = false;
41 /* 43 /*
42 * create demands to create 44 * create demands to create
43 * a new record... 45 * a new record...
44 */ 46 */
45 QDataStream stream(array, IO_ReadOnly); 47 QDataStream stream(array, IO_ReadOnly);
46 if ( cmd == "create()" ) { 48 if ( cmd == "create()" ) {
49 raise();
47 int uid = create(); 50 int uid = create();
48 QCopEnvelope e(m_str, "created(int)" ); 51 QCopEnvelope e(m_str, "created(int)" );
49 e << uid; 52 e << uid;
53 needShow = true;
50 }else if ( cmd == "remove(int)" ) { 54 }else if ( cmd == "remove(int)" ) {
51 int uid; 55 int uid;
52 stream >> uid; 56 stream >> uid;
53 bool rem = remove( uid ); 57 bool rem = remove( uid );
54 QCopEnvelope e(m_str, "removed(bool)" ); 58 QCopEnvelope e(m_str, "removed(bool)" );
55 e << rem; 59 e << rem;
60 needShow = true;
56 }else if ( cmd == "beam(int)" ) { 61 }else if ( cmd == "beam(int)" ) {
57 int uid; 62 int uid;
58 stream >> uid; 63 stream >> uid;
59 beam( uid); 64 beam( uid);
60 }else if ( cmd == "show(int)" ) { 65 }else if ( cmd == "show(int)" ) {
66 raise();
61 int uid; 67 int uid;
62 stream >> uid; 68 stream >> uid;
63 show( uid ); 69 show( uid );
70 needShow = true;
64 }else if ( cmd == "edit(int)" ) { 71 }else if ( cmd == "edit(int)" ) {
72 raise();
65 int uid; 73 int uid;
66 stream >> uid; 74 stream >> uid;
67 edit( uid ); 75 edit( uid );
@@ -75,6 +83,7 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
75 add( *m_fallBack ); 83 add( *m_fallBack );
76 delete m_fallBack; 84 delete m_fallBack;
77 }else if ( cmd == "alarm(QDateTime,int)" ) { 85 }else if ( cmd == "alarm(QDateTime,int)" ) {
86 raise();
78 QDateTime dt; int uid; 87 QDateTime dt; int uid;
79 stream >> dt; 88 stream >> dt;
80 stream >> uid; 89 stream >> uid;
@@ -83,8 +92,11 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
83 if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) 92 if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() )
84 return; 93 return;
85 doAlarm( dt, uid ); 94 doAlarm( dt, uid );
86 95 needShow = true;
87 } 96 }
97
98 if (needShow )
99 QPEApplication::setKeepRunning();
88} 100}
89/* implement the url scripting here */ 101/* implement the url scripting here */
90void OPimMainWindow::setDocument( const QString& str) { 102void OPimMainWindow::setDocument( const QString& str) {
diff --git a/libopie/pim/opimxrefmanager.h b/libopie/pim/opimxrefmanager.h
index 39e5eef..c485e98 100644
--- a/libopie/pim/opimxrefmanager.h
+++ b/libopie/pim/opimxrefmanager.h
@@ -36,6 +36,8 @@ public:
36 36
37private: 37private:
38 OPimXRef::ValueList m_list; 38 OPimXRef::ValueList m_list;
39 class Private;
40 Private *d;
39}; 41};
40 42
41#endif 43#endif
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index edcd729..5211f57 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -7,6 +7,7 @@
7#include "otemplatebase.h" 7#include "otemplatebase.h"
8#include "opimrecord.h" 8#include "opimrecord.h"
9 9
10class ORecordListIteratorPrivate;
10/** 11/**
11 * Our List Iterator 12 * Our List Iterator
12 * it behaves like STL or Qt 13 * it behaves like STL or Qt
@@ -71,9 +72,10 @@ private:
71 bool m_direction :1; 72 bool m_direction :1;
72 73
73 /* d pointer for future versions */ 74 /* d pointer for future versions */
74 class IteratorPrivate; 75 ORecordListIteratorPrivate *d;
75 IteratorPrivate *d;
76}; 76};
77
78class ORecordListPrivate;
77/** 79/**
78 * The recordlist used as a return type 80 * The recordlist used as a return type
79 * from OPimAccessTemplate 81 * from OPimAccessTemplate
@@ -123,6 +125,7 @@ ORecordList( const QArray<int>& ids,
123private: 125private:
124 QArray<int> m_ids; 126 QArray<int> m_ids;
125 const Base* m_acc; 127 const Base* m_acc;
128 ORecordListPrivate *d;
126}; 129};
127 130
128/* ok now implement it */ 131/* ok now implement it */
@@ -220,6 +223,9 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
220 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), 223 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ),
221 m_direction( false ) 224 m_direction( false )
222{ 225{
226 /* if the list is empty we're already at the end of the list */
227 if (uids.count() == 0 )
228 m_end = true;
223} 229}
224template <class T> 230template <class T>
225uint ORecordListIterator<T>::current()const { 231uint ORecordListIterator<T>::current()const {
diff --git a/libopie/pim/otemplatebase.h b/libopie/pim/otemplatebase.h
index 29fb6ec..cadac74 100644
--- a/libopie/pim/otemplatebase.h
+++ b/libopie/pim/otemplatebase.h
@@ -14,6 +14,7 @@
14 * You may not want to use that interface internaly 14 * You may not want to use that interface internaly
15 * POOR mans interface 15 * POOR mans interface
16 */ 16 */
17class OPimBasePrivate;
17struct OPimBase { 18struct OPimBase {
18 /** 19 /**
19 * return the rtti 20 * return the rtti
@@ -32,12 +33,15 @@ struct OPimBase {
32 * ADD editing here? 33 * ADD editing here?
33 * -zecke 34 * -zecke
34 */ 35 */
36private:
37 OPimBasePrivate* d;
35 38
36}; 39};
37/** 40/**
38 * internal template base 41 * internal template base
39 * T needs to implement the copy c'tor!!! 42 * T needs to implement the copy c'tor!!!
40 */ 43 */
44class OTemplateBasePrivate;
41template <class T = OPimRecord> 45template <class T = OPimRecord>
42class OTemplateBase : public OPimBase { 46class OTemplateBase : public OPimBase {
43public: 47public:
@@ -61,6 +65,9 @@ public:
61 OPimRecord* record()const; 65 OPimRecord* record()const;
62 OPimRecord* record(int uid )const; 66 OPimRecord* record(int uid )const;
63 static T* rec(); 67 static T* rec();
68
69private:
70 OTemplateBasePrivate *d;
64}; 71};
65 72
66/* 73/*
diff --git a/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index 38b93f7..5a18c37 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -28,6 +28,11 @@ struct OTodo::OTodoData : public QShared {
28 maintainer = 0; 28 maintainer = 0;
29 notifiers = 0; 29 notifiers = 0;
30 }; 30 };
31 ~OTodoData() {
32 delete recur;
33 delete maintainer;
34 delete notifiers;
35 }
31 36
32 QDate date; 37 QDate date;
33 bool isCompleted:1; 38 bool isCompleted:1;
@@ -282,16 +287,15 @@ QString OTodo::toRichText() const
282 287
283 // description 288 // description
284 if( !description().isEmpty() ){ 289 if( !description().isEmpty() ){
285 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; 290 text += "<b>" + QObject::tr( "Notes:" ) + "</b><br>";
286 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ; 291 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
287 } 292 }
288 293
289 // priority 294 // priority
290 int priorityval = priority(); 295 int priorityval = priority();
291 text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" + 296 text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" +
292 QString::number( priorityval ) + "\">"; 297 QString::number( priorityval ) + "\">";
293// text += "<b>" + QObject::tr( "Priority:") +"</b><img src=\"todo/priority" + 298
294// QString::number( priority() ) + "\"><br>";
295 switch ( priorityval ) 299 switch ( priorityval )
296 { 300 {
297 case 1 : text += QObject::tr( "Very high" ); 301 case 1 : text += QObject::tr( "Very high" );
diff --git a/libopie/pim/otodo.h b/libopie/pim/otodo.h
index f9a345a..6df98b9 100644
--- a/libopie/pim/otodo.h
+++ b/libopie/pim/otodo.h
@@ -98,11 +98,6 @@ public:
98 bool hasCompletedDate()const; 98 bool hasCompletedDate()const;
99 99
100 /** 100 /**
101 * Does this Event has an alarm time ?
102 */
103 bool hasAlarmDateTime() const;
104
105 /**
106 * What is the priority? 101 * What is the priority?
107 */ 102 */
108 int priority()const ; 103 int priority()const ;
@@ -241,10 +236,6 @@ public:
241 void setCompletedDate( const QDate& date ); 236 void setCompletedDate( const QDate& date );
242 237
243 void setRecurrence( const ORecur& ); 238 void setRecurrence( const ORecur& );
244 /**
245 * set the alarm time
246 */
247 void setAlarmDateTime ( const QDateTime& alarm );
248 239
249 void setDescription(const QString& ); 240 void setDescription(const QString& );
250 void setSummary(const QString& ); 241 void setSummary(const QString& );
diff --git a/libopie/pim/otodoaccessbackend.h b/libopie/pim/otodoaccessbackend.h
index 05e8ca9..6be95bc 100644
--- a/libopie/pim/otodoaccessbackend.h
+++ b/libopie/pim/otodoaccessbackend.h
@@ -19,6 +19,10 @@ public:
19 virtual void removeAllCompleted() = 0; 19 virtual void removeAllCompleted() = 0;
20 virtual QBitArray supports()const = 0; 20 virtual QBitArray supports()const = 0;
21 21
22private:
23 class Private;
24 Private *d;
25
22}; 26};
23 27
24#endif 28#endif
diff --git a/libopie/pim/otodoaccessvcal.cpp b/libopie/pim/otodoaccessvcal.cpp
index 3577e14..6415952 100644
--- a/libopie/pim/otodoaccessvcal.cpp
+++ b/libopie/pim/otodoaccessvcal.cpp
@@ -15,12 +15,20 @@ namespace {
15 // description 15 // description
16 if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){ 16 if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){
17 name = vObjectStringZValue( ob ); 17 name = vObjectStringZValue( ob );
18#if 0
18 event.setDescription( name ); 19 event.setDescription( name );
20#else
21 event.setSummary( name );
22#endif
19 } 23 }
20 // summary 24 // summary
21 if ( ( ob = isAPropertyOf( obj, VCSummaryProp ) ) != 0 ) { 25 if ( ( ob = isAPropertyOf( obj, VCSummaryProp ) ) != 0 ) {
22 name = vObjectStringZValue( ob ); 26 name = vObjectStringZValue( ob );
27#if 0
23 event.setSummary( name ); 28 event.setSummary( name );
29#else
30 event.setDescription( name );
31#endif
24 } 32 }
25 // completed 33 // completed
26 if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){ 34 if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){
@@ -74,11 +82,27 @@ namespace {
74 addPropValue( task, VCCategoriesProp, 82 addPropValue( task, VCCategoriesProp,
75 event.idsToString( event.categories() ).local8Bit() ); 83 event.idsToString( event.categories() ).local8Bit() );
76 84
85#if 0
86
87 // There seems a misrepresentation between summary in otodoevent
88 // and summary in vcard.
89 // The same with description..
90 // Description is summary and vice versa.. Argh.. (eilers)
91
92
77 addPropValue( task, VCDescriptionProp, 93 addPropValue( task, VCDescriptionProp,
78 event.description().local8Bit() ); 94 event.description().local8Bit() );
79 95
80 addPropValue( task, VCSummaryProp, 96 addPropValue( task, VCSummaryProp,
81 event.summary().local8Bit() ); 97 event.summary().local8Bit() );
98
99#else
100 addPropValue( task, VCDescriptionProp,
101 event.summary().local8Bit() );
102
103 addPropValue( task, VCSummaryProp,
104 event.description().local8Bit() );
105#endif
82 return task; 106 return task;
83}; 107};
84} 108}
@@ -185,7 +209,7 @@ QArray<int> OTodoAccessVCal::allRecords()const {
185 } 209 }
186 return ar; 210 return ar;
187} 211}
188QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp &r)const { 212QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp& /* r */)const {
189 QArray<int> ar(0); 213 QArray<int> ar(0);
190 return ar; 214 return ar;
191} 215}
diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp
index 3d15354..f688735 100644
--- a/libopie/pim/otodoaccessxml.cpp
+++ b/libopie/pim/otodoaccessxml.cpp
@@ -87,7 +87,7 @@ bool OTodoAccessXML::load() {
87 /* 87 /*
88 * UPDATE dict if you change anything!!! 88 * UPDATE dict if you change anything!!!
89 */ 89 */
90 QAsciiDict<int> dict(21); 90 QAsciiDict<int> dict(26);
91 dict.setAutoDelete( TRUE ); 91 dict.setAutoDelete( TRUE );
92 dict.insert("Categories" , new int(OTodo::Category) ); 92 dict.insert("Categories" , new int(OTodo::Category) );
93 dict.insert("Uid" , new int(OTodo::Uid) ); 93 dict.insert("Uid" , new int(OTodo::Uid) );
@@ -836,10 +836,12 @@ QArray<int> OTodoAccessXML::sorted( bool asc, int sortOrder,
836 return array; 836 return array;
837}; 837};
838void OTodoAccessXML::removeAllCompleted() { 838void OTodoAccessXML::removeAllCompleted() {
839 QMap<int, OTodo> events = m_events;
839 for ( QMap<int, OTodo>::Iterator it = m_events.begin(); it != m_events.end(); ++it ) { 840 for ( QMap<int, OTodo>::Iterator it = m_events.begin(); it != m_events.end(); ++it ) {
840 if ( (*it).isCompleted() ) 841 if ( (*it).isCompleted() )
841 m_events.remove( it ); 842 events.remove( it.key() );
842 } 843 }
844 m_events = events;
843} 845}
844QBitArray OTodoAccessXML::supports()const { 846QBitArray OTodoAccessXML::supports()const {
845 static QBitArray ar = sup(); 847 static QBitArray ar = sup();
diff --git a/libopie2/opiepim/backend/obackendfactory.h b/libopie2/opiepim/backend/obackendfactory.h
index ad6cf5a..f3c339d 100644
--- a/libopie2/opiepim/backend/obackendfactory.h
+++ b/libopie2/opiepim/backend/obackendfactory.h
@@ -16,6 +16,14 @@
16 * ===================================================================== 16 * =====================================================================
17 * History: 17 * History:
18 * $Log$ 18 * $Log$
19 * Revision 1.7 2003/08/01 12:30:16 eilers
20 * Merging changes from BRANCH_1_0 to HEAD
21 *
22 * Revision 1.6.4.1 2003/06/30 14:34:19 eilers
23 * Patches from Zecke:
24 * Fixing and cleaning up extraMap handling
25 * Adding d_ptr for binary compatibility in the future
26 *
19 * Revision 1.6 2003/04/13 18:07:10 zecke 27 * Revision 1.6 2003/04/13 18:07:10 zecke
20 * More API doc 28 * More API doc
21 * QString -> const QString& 29 * QString -> const QString&
@@ -68,6 +76,8 @@
68#include "otodoaccesssql.h" 76#include "otodoaccesssql.h"
69#endif 77#endif
70 78
79class OBackendPrivate;
80
71/** 81/**
72 * This class is our factory. It will give us the default implementations 82 * This class is our factory. It will give us the default implementations
73 * of at least Todolist, Contacts and Datebook. In the future this class will 83 * of at least Todolist, Contacts and Datebook. In the future this class will
@@ -148,6 +158,8 @@ class OBackendFactory
148 158
149 159
150 } 160 }
161 private:
162 OBackendPrivate* d;
151}; 163};
152 164
153 165
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.h b/libopie2/opiepim/backend/ocontactaccessbackend.h
index ebeb42d..280e05c 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend.h
@@ -19,6 +19,14 @@
19 * ===================================================================== 19 * =====================================================================
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.6 2003/08/01 12:30:16 eilers
23 * Merging changes from BRANCH_1_0 to HEAD
24 *
25 * Revision 1.5.4.1 2003/06/30 14:34:19 eilers
26 * Patches from Zecke:
27 * Fixing and cleaning up extraMap handling
28 * Adding d_ptr for binary compatibility in the future
29 *
22 * Revision 1.5 2003/04/13 18:07:10 zecke 30 * Revision 1.5 2003/04/13 18:07:10 zecke
23 * More API doc 31 * More API doc
24 * QString -> const QString& 32 * QString -> const QString&
@@ -103,5 +111,9 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
103 */ 111 */
104 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0; 112 virtual QArray<int> sorted( bool ascending, int sortOrder, int sortFilter, int cat ) = 0;
105 113
114
115private:
116 class Private;
117 Private *d;
106}; 118};
107#endif 119#endif
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
index 270bef3..b60c5be 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_vcard.cpp
@@ -17,6 +17,21 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.11 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
23 * Revision 1.10.4.3 2003/07/23 08:54:37 eilers
24 * Default email was added to the list of all emails, which already contains
25 * the default email..
26 * This closes bug #1045
27 *
28 * Revision 1.10.4.2 2003/07/23 08:44:45 eilers
29 * Importing of Notes in vcard files wasn't implemented.
30 * Closes bug #1044
31 *
32 * Revision 1.10.4.1 2003/06/02 13:37:49 eilers
33 * Fixing memory leak
34 *
20 * Revision 1.10 2003/04/13 18:07:10 zecke 35 * Revision 1.10 2003/04/13 18:07:10 zecke
21 * More API doc 36 * More API doc
22 * QString -> const QString& 37 * QString -> const QString&
@@ -151,6 +166,7 @@ bool OContactAccessBackend_VCard::save()
151 cleanVObject( vo ); 166 cleanVObject( vo );
152 } 167 }
153 cleanStrTbl(); 168 cleanStrTbl();
169 deleteVObject( obj );
154 170
155 m_dirty = false; 171 m_dirty = false;
156 return true; 172 return true;
@@ -446,7 +462,9 @@ OContact OContactAccessBackend_VCard::parseVObject( VObject *obj )
446 c.setBirthday( convVCardDateToDate( value ) ); 462 c.setBirthday( convVCardDateToDate( value ) );
447 463
448 } 464 }
449 465 else if ( name == VCCommentProp ) {
466 c.setNotes( value );
467 }
450#if 0 468#if 0
451 else { 469 else {
452 printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) ); 470 printf("Name: %s, value=%s\n", name.data(), vObjectStringZValue( o ) );
@@ -534,7 +552,7 @@ VObject* OContactAccessBackend_VCard::createVObject( const OContact &c )
534 552
535 553
536 QStringList emails = c.emailList(); 554 QStringList emails = c.emailList();
537 emails.prepend( c.defaultEmail() ); 555 // emails.prepend( c.defaultEmail() ); Fix for bugreport #1045
538 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 556 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
539 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it ); 557 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it );
540 safeAddProp( email, VCInternetProp ); 558 safeAddProp( email, VCInternetProp );
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
index 097142b..1c21619 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp
@@ -17,6 +17,9 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.7 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
20 * Revision 1.6 2003/07/07 16:19:47 eilers 23 * Revision 1.6 2003/07/07 16:19:47 eilers
21 * Fixing serious bug in hasQuerySettings() 24 * Fixing serious bug in hasQuerySettings()
22 * 25 *
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend.h b/libopie2/opiepim/backend/odatebookaccessbackend.h
index 86ff298..3c02c42 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend.h
+++ b/libopie2/opiepim/backend/odatebookaccessbackend.h
@@ -68,6 +68,10 @@ public:
68 */ 68 */
69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start ); 69 virtual OEffectiveEvent::ValueList effecticeEvents( const QDateTime& start );
70 70
71private:
72 class Private;
73 Private *d;
74
71}; 75};
72 76
73#endif 77#endif
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
index ab2eea4..5ea945c 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_xml.cpp
@@ -430,9 +430,9 @@ bool ODateBookAccessBackend_XML::loadFile() {
430 */ 430 */
431 find = dict[attr.data()]; 431 find = dict[attr.data()];
432 if (!find) 432 if (!find)
433 ev.setCustomField( attr, value ); 433 ev.setCustomField( attr, str );
434 else { 434 else {
435 setField( ev, *find, value ); 435 setField( ev, *find, str );
436 } 436 }
437 } 437 }
438 /* time to finalize */ 438 /* time to finalize */
@@ -453,7 +453,7 @@ void ODateBookAccessBackend_XML::finalizeRecord( OEvent& ev ) {
453 ev.setTimeZone( "UTC"); // make sure it is really utc 453 ev.setTimeZone( "UTC"); // make sure it is really utc
454 }else { 454 }else {
455 /* to current date time */ 455 /* to current date time */
456 qWarning(" Start is %d", start ); 456 // qWarning(" Start is %d", start );
457 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() ); 457 OTimeZone zone( ev.timeZone().isEmpty() ? OTimeZone::current() : ev.timeZone() );
458 QDateTime date = zone.toDateTime( start ); 458 QDateTime date = zone.toDateTime( start );
459 qWarning(" Start is %s", date.toString().latin1() ); 459 qWarning(" Start is %s", date.toString().latin1() );
diff --git a/libopie2/opiepim/backend/opimaccessbackend.h b/libopie2/opiepim/backend/opimaccessbackend.h
index f4bbe35..c3d91f7 100644
--- a/libopie2/opiepim/backend/opimaccessbackend.h
+++ b/libopie2/opiepim/backend/opimaccessbackend.h
@@ -7,6 +7,7 @@
7#include <opie/opimrecord.h> 7#include <opie/opimrecord.h>
8 8
9 9
10class OPimAccessBackendPrivate;
10/** 11/**
11 * OPimAccessBackend is the base class 12 * OPimAccessBackend is the base class
12 * for all private backends 13 * for all private backends
@@ -107,8 +108,7 @@ protected:
107 uint readAhead()const; 108 uint readAhead()const;
108 109
109private: 110private:
110 class Private; 111 OPimAccessBackendPrivate *d;
111 Private* d;
112 Frontend* m_front; 112 Frontend* m_front;
113 uint m_read; 113 uint m_read;
114 int m_acc; 114 int m_acc;
diff --git a/libopie2/opiepim/backend/otodoaccessbackend.h b/libopie2/opiepim/backend/otodoaccessbackend.h
index 05e8ca9..6be95bc 100644
--- a/libopie2/opiepim/backend/otodoaccessbackend.h
+++ b/libopie2/opiepim/backend/otodoaccessbackend.h
@@ -19,6 +19,10 @@ public:
19 virtual void removeAllCompleted() = 0; 19 virtual void removeAllCompleted() = 0;
20 virtual QBitArray supports()const = 0; 20 virtual QBitArray supports()const = 0;
21 21
22private:
23 class Private;
24 Private *d;
25
22}; 26};
23 27
24#endif 28#endif
diff --git a/libopie2/opiepim/backend/otodoaccessvcal.cpp b/libopie2/opiepim/backend/otodoaccessvcal.cpp
index 3577e14..6415952 100644
--- a/libopie2/opiepim/backend/otodoaccessvcal.cpp
+++ b/libopie2/opiepim/backend/otodoaccessvcal.cpp
@@ -15,12 +15,20 @@ namespace {
15 // description 15 // description
16 if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){ 16 if( ( ob = isAPropertyOf( obj, VCDescriptionProp )) != 0 ){
17 name = vObjectStringZValue( ob ); 17 name = vObjectStringZValue( ob );
18#if 0
18 event.setDescription( name ); 19 event.setDescription( name );
20#else
21 event.setSummary( name );
22#endif
19 } 23 }
20 // summary 24 // summary
21 if ( ( ob = isAPropertyOf( obj, VCSummaryProp ) ) != 0 ) { 25 if ( ( ob = isAPropertyOf( obj, VCSummaryProp ) ) != 0 ) {
22 name = vObjectStringZValue( ob ); 26 name = vObjectStringZValue( ob );
27#if 0
23 event.setSummary( name ); 28 event.setSummary( name );
29#else
30 event.setDescription( name );
31#endif
24 } 32 }
25 // completed 33 // completed
26 if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){ 34 if( ( ob = isAPropertyOf( obj, VCStatusProp )) != 0 ){
@@ -74,11 +82,27 @@ namespace {
74 addPropValue( task, VCCategoriesProp, 82 addPropValue( task, VCCategoriesProp,
75 event.idsToString( event.categories() ).local8Bit() ); 83 event.idsToString( event.categories() ).local8Bit() );
76 84
85#if 0
86
87 // There seems a misrepresentation between summary in otodoevent
88 // and summary in vcard.
89 // The same with description..
90 // Description is summary and vice versa.. Argh.. (eilers)
91
92
77 addPropValue( task, VCDescriptionProp, 93 addPropValue( task, VCDescriptionProp,
78 event.description().local8Bit() ); 94 event.description().local8Bit() );
79 95
80 addPropValue( task, VCSummaryProp, 96 addPropValue( task, VCSummaryProp,
81 event.summary().local8Bit() ); 97 event.summary().local8Bit() );
98
99#else
100 addPropValue( task, VCDescriptionProp,
101 event.summary().local8Bit() );
102
103 addPropValue( task, VCSummaryProp,
104 event.description().local8Bit() );
105#endif
82 return task; 106 return task;
83}; 107};
84} 108}
@@ -185,7 +209,7 @@ QArray<int> OTodoAccessVCal::allRecords()const {
185 } 209 }
186 return ar; 210 return ar;
187} 211}
188QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp &r)const { 212QArray<int> OTodoAccessVCal::matchRegexp(const QRegExp& /* r */)const {
189 QArray<int> ar(0); 213 QArray<int> ar(0);
190 return ar; 214 return ar;
191} 215}
diff --git a/libopie2/opiepim/backend/otodoaccessxml.cpp b/libopie2/opiepim/backend/otodoaccessxml.cpp
index 3d15354..f688735 100644
--- a/libopie2/opiepim/backend/otodoaccessxml.cpp
+++ b/libopie2/opiepim/backend/otodoaccessxml.cpp
@@ -87,7 +87,7 @@ bool OTodoAccessXML::load() {
87 /* 87 /*
88 * UPDATE dict if you change anything!!! 88 * UPDATE dict if you change anything!!!
89 */ 89 */
90 QAsciiDict<int> dict(21); 90 QAsciiDict<int> dict(26);
91 dict.setAutoDelete( TRUE ); 91 dict.setAutoDelete( TRUE );
92 dict.insert("Categories" , new int(OTodo::Category) ); 92 dict.insert("Categories" , new int(OTodo::Category) );
93 dict.insert("Uid" , new int(OTodo::Uid) ); 93 dict.insert("Uid" , new int(OTodo::Uid) );
@@ -836,10 +836,12 @@ QArray<int> OTodoAccessXML::sorted( bool asc, int sortOrder,
836 return array; 836 return array;
837}; 837};
838void OTodoAccessXML::removeAllCompleted() { 838void OTodoAccessXML::removeAllCompleted() {
839 QMap<int, OTodo> events = m_events;
839 for ( QMap<int, OTodo>::Iterator it = m_events.begin(); it != m_events.end(); ++it ) { 840 for ( QMap<int, OTodo>::Iterator it = m_events.begin(); it != m_events.end(); ++it ) {
840 if ( (*it).isCompleted() ) 841 if ( (*it).isCompleted() )
841 m_events.remove( it ); 842 events.remove( it.key() );
842 } 843 }
844 m_events = events;
843} 845}
844QBitArray OTodoAccessXML::supports()const { 846QBitArray OTodoAccessXML::supports()const {
845 static QBitArray ar = sup(); 847 static QBitArray ar = sup();
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index e90db32..9b0a719 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -17,6 +17,14 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.9 2003/08/01 12:30:16 eilers
21 * Merging changes from BRANCH_1_0 to HEAD
22 *
23 * Revision 1.8.2.1 2003/06/30 14:34:19 eilers
24 * Patches from Zecke:
25 * Fixing and cleaning up extraMap handling
26 * Adding d_ptr for binary compatibility in the future
27 *
20 * Revision 1.8 2003/05/08 13:55:09 tille 28 * Revision 1.8 2003/05/08 13:55:09 tille
21 * search stuff 29 * search stuff
22 * and match, toRichText & toShortText in oevent 30 * and match, toRichText & toShortText in oevent
@@ -165,6 +173,9 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
165 private slots: 173 private slots:
166 void copMessage( const QCString &msg, const QByteArray &data ); 174 void copMessage( const QCString &msg, const QByteArray &data );
167 175
176 private:
177 class Private;
178 Private *d;
168 179
169}; 180};
170#endif 181#endif
diff --git a/libopie2/opiepim/core/oconversion.h b/libopie2/opiepim/core/oconversion.h
index 13367e1..4c0a497 100644
--- a/libopie2/opiepim/core/oconversion.h
+++ b/libopie2/opiepim/core/oconversion.h
@@ -37,6 +37,11 @@ public:
37 */ 37 */
38 static QString dateTimeToString( const QDateTime& ); 38 static QString dateTimeToString( const QDateTime& );
39 static QDateTime dateTimeFromString( const QString& ); 39 static QDateTime dateTimeFromString( const QString& );
40
41private:
42 class Private;
43 Private* d;
44
40}; 45};
41 46
42#endif // __oconversion_h__ 47#endif // __oconversion_h__
diff --git a/libopie2/opiepim/core/opimaccesstemplate.h b/libopie2/opiepim/core/opimaccesstemplate.h
index 8ff205c..ecbeb68 100644
--- a/libopie2/opiepim/core/opimaccesstemplate.h
+++ b/libopie2/opiepim/core/opimaccesstemplate.h
@@ -10,6 +10,7 @@
10#include "opimcache.h" 10#include "opimcache.h"
11#include "otemplatebase.h" 11#include "otemplatebase.h"
12 12
13class OPimAccessTemplatePrivate;
13/** 14/**
14 * Thats the frontend to our OPIE PIM 15 * Thats the frontend to our OPIE PIM
15 * Library. Either you want to use it's 16 * Library. Either you want to use it's
@@ -152,6 +153,9 @@ protected:
152 BackEnd* m_backEnd; 153 BackEnd* m_backEnd;
153 Cache m_cache; 154 Cache m_cache;
154 155
156private:
157 OPimAccessTemplatePrivate *d;
158
155}; 159};
156 160
157template <class T> 161template <class T>
diff --git a/libopie2/opiepim/core/opimcache.h b/libopie2/opiepim/core/opimcache.h
index 73414e5..7f7cff5 100644
--- a/libopie2/opiepim/core/opimcache.h
+++ b/libopie2/opiepim/core/opimcache.h
@@ -5,6 +5,8 @@
5 5
6#include "opimrecord.h" 6#include "opimrecord.h"
7 7
8class OPimCacheItemPrivate;
9
8template <class T = OPimRecord> 10template <class T = OPimRecord>
9class OPimCacheItem { 11class OPimCacheItem {
10public: 12public:
@@ -18,8 +20,11 @@ public:
18 void setRecord( const T& ); 20 void setRecord( const T& );
19private: 21private:
20 T m_t; 22 T m_t;
23 OPimCacheItemPrivate *d;
21}; 24};
22 25
26
27class OPimCachePrivate;
23/** 28/**
24 * OPimCache for caching the items 29 * OPimCache for caching the items
25 * We support adding, removing 30 * We support adding, removing
@@ -46,6 +51,7 @@ public:
46 51
47private: 52private:
48 QIntCache<Item> m_cache; 53 QIntCache<Item> m_cache;
54 OPimCachePrivate* d;
49}; 55};
50 56
51// Implementation 57// Implementation
diff --git a/libopie2/opiepim/core/opimxrefmanager.h b/libopie2/opiepim/core/opimxrefmanager.h
index 39e5eef..c485e98 100644
--- a/libopie2/opiepim/core/opimxrefmanager.h
+++ b/libopie2/opiepim/core/opimxrefmanager.h
@@ -36,6 +36,8 @@ public:
36 36
37private: 37private:
38 OPimXRef::ValueList m_list; 38 OPimXRef::ValueList m_list;
39 class Private;
40 Private *d;
39}; 41};
40 42
41#endif 43#endif
diff --git a/libopie2/opiepim/core/otemplatebase.h b/libopie2/opiepim/core/otemplatebase.h
index 29fb6ec..cadac74 100644
--- a/libopie2/opiepim/core/otemplatebase.h
+++ b/libopie2/opiepim/core/otemplatebase.h
@@ -14,6 +14,7 @@
14 * You may not want to use that interface internaly 14 * You may not want to use that interface internaly
15 * POOR mans interface 15 * POOR mans interface
16 */ 16 */
17class OPimBasePrivate;
17struct OPimBase { 18struct OPimBase {
18 /** 19 /**
19 * return the rtti 20 * return the rtti
@@ -32,12 +33,15 @@ struct OPimBase {
32 * ADD editing here? 33 * ADD editing here?
33 * -zecke 34 * -zecke
34 */ 35 */
36private:
37 OPimBasePrivate* d;
35 38
36}; 39};
37/** 40/**
38 * internal template base 41 * internal template base
39 * T needs to implement the copy c'tor!!! 42 * T needs to implement the copy c'tor!!!
40 */ 43 */
44class OTemplateBasePrivate;
41template <class T = OPimRecord> 45template <class T = OPimRecord>
42class OTemplateBase : public OPimBase { 46class OTemplateBase : public OPimBase {
43public: 47public:
@@ -61,6 +65,9 @@ public:
61 OPimRecord* record()const; 65 OPimRecord* record()const;
62 OPimRecord* record(int uid )const; 66 OPimRecord* record(int uid )const;
63 static T* rec(); 67 static T* rec();
68
69private:
70 OTemplateBasePrivate *d;
64}; 71};
65 72
66/* 73/*
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index be4ce0a..3473baa 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -21,10 +21,11 @@
21 21
22#include "ocontact.h" 22#include "ocontact.h"
23#include "opimresolver.h" 23#include "opimresolver.h"
24#include "oconversion.h"
24 25
25#include <qpe/stringutil.h> 26#include <qpe/stringutil.h>
26#include "oconversion.h"
27#include <qpe/timestring.h> 27#include <qpe/timestring.h>
28#include <qpe/config.h>
28 29
29#include <qobject.h> 30#include <qobject.h>
30#include <qregexp.h> 31#include <qregexp.h>
@@ -438,12 +439,16 @@ QString OContact::toRichText() const
438 QString str; 439 QString str;
439 bool marker = false; 440 bool marker = false;
440 441
442 Config cfg("qpe");
443 cfg.setGroup("Appearance");
444 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
445
441 // name, jobtitle and company 446 // name, jobtitle and company
442 if ( !(value = fullName()).isEmpty() ) 447 if ( !(value = fullName()).isEmpty() )
443 text += "<b><h3><img src=\"addressbook/AddressBook\">" + Qtopia::escapeString(value) + "</h3></b>"; 448 text += "<b><h3><img src=\"addressbook/AddressBook\">" + Qtopia::escapeString(value) + "</h3></b>";
444 449
445 if ( !(value = jobTitle()).isEmpty() ) 450 if ( !(value = jobTitle()).isEmpty() )
446 text += Qtopia::escapeString(value) + "<br>"; 451 text += Qtopia::escapeString(value);
447 452
448 comp = company(); 453 comp = company();
449 if ( !(value = department()).isEmpty() ) { 454 if ( !(value = department()).isEmpty() ) {
@@ -454,77 +459,110 @@ QString OContact::toRichText() const
454 text += "<br>"; 459 text += "<br>";
455 } 460 }
456 if ( !comp.isEmpty() ) 461 if ( !comp.isEmpty() )
457 text += Qtopia::escapeString(comp) + "<br>"; 462 text += Qtopia::escapeString(comp);
458 463
459 text += "<hr><br>"; 464 text += "<br><hr>";
460 465
461 // defailt email 466 // defailt email
462 QString defEmail = defaultEmail(); 467 QString defEmail = defaultEmail();
463 if ( !defEmail.isEmpty() ) 468 if ( !defEmail.isEmpty() ){
464 text += "<b><img src=\"addressbook/email\">" + QObject::tr("Default Email: ") + "</b>" 469 text += "<b><img src=\"addressbook/email\">" + QObject::tr("Default Email: ") + "</b>"
465 + Qtopia::escapeString(defEmail) + "<br>"; 470 + Qtopia::escapeString(defEmail);
466 471 marker = true;
467 text += "<br>"; 472 }
468 473
469 // business address 474 // business address
470 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || 475 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
471 !businessZip().isEmpty() || !businessCountry().isEmpty() ) { 476 !businessZip().isEmpty() || !businessCountry().isEmpty() ) {
472 text += QObject::tr( "<b>Work Address:</b>" ); 477 text += QObject::tr( "<br><br><b>Work Address:</b>" );
473 text += "<br>";
474 marker = true; 478 marker = true;
475 } 479 }
476 480
477 if ( !(value = businessStreet()).isEmpty() ) 481 if ( !(value = businessStreet()).isEmpty() ){
478 text += Qtopia::escapeString(value) + "<br>"; 482 text += "<br>" + Qtopia::escapeString(value);
483 marker = true;
484 }
485
486 switch( addressformat ){
487 case Zip_City_State:{ // Zip_Code City, State
479 state = businessState(); 488 state = businessState();
480 if ( !(value = businessZip()).isEmpty() ) 489 if ( !(value = businessZip()).isEmpty() ){
481 text += Qtopia::escapeString(value) + " "; 490 text += "<br>" + Qtopia::escapeString(value) + " ";
491 marker = true;
492
493 } else
494 text += "<br>";
495
482 if ( !(value = businessCity()).isEmpty() ) { 496 if ( !(value = businessCity()).isEmpty() ) {
497 marker = true;
483 text += Qtopia::escapeString(value); 498 text += Qtopia::escapeString(value);
484 if ( state ) 499 if ( state )
485 text += ", " + Qtopia::escapeString(state); 500 text += ", " + Qtopia::escapeString(state);
486 text += "<br>"; 501 } else if ( !state.isEmpty() ){
487 } else if ( !state.isEmpty() ) 502 text += "<br>" + Qtopia::escapeString(state);
488 text += Qtopia::escapeString(state) + "<br>"; 503 marker = true;
504 }
505 break;
506 }
507 case City_State_Zip:{ // City, State Zip_Code
508 state = businessState();
509 if ( !(value = businessCity()).isEmpty() ) {
510 marker = true;
511 text += "<br>" + Qtopia::escapeString(value);
512 if ( state )
513 text += ", " + Qtopia::escapeString(state);
514 } else if ( !state.isEmpty() ){
515 text += "<br>" + Qtopia::escapeString(state);
516 marker = true;
517 }
518 if ( !(value = businessZip()).isEmpty() ){
519 text += " " + Qtopia::escapeString(value);
520 marker = true;
521 }
522 break;
523 }
524 }
489 525
490 if ( !(value = businessCountry()).isEmpty() ) 526 if ( !(value = businessCountry()).isEmpty() ){
491 text += Qtopia::escapeString(value) + "<br>"; 527 text += "<br>" + Qtopia::escapeString(value);
528 marker = true;
529 }
492 530
493 // rest of Business data 531 // rest of Business data
494 str = office(); 532 str = office();
495 if ( !str.isEmpty() ){ 533 if ( !str.isEmpty() ){
496 text += "<b>" + QObject::tr("Office: ") + "</b>" 534 text += "<br><b>" + QObject::tr("Office: ") + "</b>"
497 + Qtopia::escapeString(str) + "<br>"; 535 + Qtopia::escapeString(str);
498 marker = true; 536 marker = true;
499 } 537 }
500 str = businessWebpage(); 538 str = businessWebpage();
501 if ( !str.isEmpty() ){ 539 if ( !str.isEmpty() ){
502 text += "<b><img src=\"addressbook/webpagework\">" + QObject::tr("Business Web Page: ") + "</b>" 540 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>"
503 + Qtopia::escapeString(str) + "<br>"; 541 + Qtopia::escapeString(str);
504 marker = true; 542 marker = true;
505 } 543 }
506 str = businessPhone(); 544 str = businessPhone();
507 if ( !str.isEmpty() ){ 545 if ( !str.isEmpty() ){
508 text += "<b><img src=\"addressbook/phonework\">" + QObject::tr("Business Phone: ") + "</b>" 546 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>"
509 + Qtopia::escapeString(str) + "<br>"; 547 + Qtopia::escapeString(str);
510 marker = true; 548 marker = true;
511 } 549 }
512 str = businessFax(); 550 str = businessFax();
513 if ( !str.isEmpty() ){ 551 if ( !str.isEmpty() ){
514 text += "<b><img src=\"addressbook/faxwork\">" + QObject::tr("Business Fax: ") + "</b>" 552 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>"
515 + Qtopia::escapeString(str) + "<br>"; 553 + Qtopia::escapeString(str);
516 marker = true; 554 marker = true;
517 } 555 }
518 str = businessMobile(); 556 str = businessMobile();
519 if ( !str.isEmpty() ){ 557 if ( !str.isEmpty() ){
520 text += "<b><img src=\"addressbook/mobilework\">" + QObject::tr("Business Mobile: ") + "</b>" 558 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>"
521 + Qtopia::escapeString(str) + "<br>"; 559 + Qtopia::escapeString(str);
522 marker = true; 560 marker = true;
523 } 561 }
524 str = businessPager(); 562 str = businessPager();
525 if ( !str.isEmpty() ){ 563 if ( !str.isEmpty() ){
526 text += "<b>" + QObject::tr("Business Pager: ") + "</b>" 564 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>"
527 + Qtopia::escapeString(str) + "<br>"; 565 + Qtopia::escapeString(str);
528 marker = true; 566 marker = true;
529 } 567 }
530 568
@@ -533,107 +571,142 @@ QString OContact::toRichText() const
533 // home address 571 // home address
534 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || 572 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
535 !homeZip().isEmpty() || !homeCountry().isEmpty() ) { 573 !homeZip().isEmpty() || !homeCountry().isEmpty() ) {
536 text += QObject::tr( "<b>Home Address:</b>" ); 574 text += QObject::tr( "<br><br><b>Home Address:</b>" );
537 text += "<br>"; 575 marker = true;
538 } 576 }
539 577
540 if ( !(value = homeStreet()).isEmpty() ) 578 if ( !(value = homeStreet()).isEmpty() ){
541 text += Qtopia::escapeString(value) + "<br>"; 579 text += "<br>" + Qtopia::escapeString(value);
580 marker = true;
581 }
582
583 switch( addressformat ){
584 case Zip_City_State:{ // Zip_Code City, State
542 state = homeState(); 585 state = homeState();
543 if ( !(value = homeZip()).isEmpty() ) 586 if ( !(value = homeZip()).isEmpty() ){
544 text += Qtopia::escapeString(value) + " "; 587 text += "<br>" + Qtopia::escapeString(value) + " ";
588 marker = true;
589 } else
590 text += "<br>";
591
545 if ( !(value = homeCity()).isEmpty() ) { 592 if ( !(value = homeCity()).isEmpty() ) {
593 marker = true;
546 text += Qtopia::escapeString(value); 594 text += Qtopia::escapeString(value);
547 if ( !state.isEmpty() ) 595 if ( !state.isEmpty() )
548 text += ", " + Qtopia::escapeString(state); 596 text += ", " + Qtopia::escapeString(state);
549 text += "<br>"; 597 } else if (!state.isEmpty()) {
550 } else if (!state.isEmpty()) 598 text += "<br>" + Qtopia::escapeString(state);
551 text += Qtopia::escapeString(state) + "<br>"; 599 marker = true;
552 if ( !(value = homeCountry()).isEmpty() ) 600 }
553 text += Qtopia::escapeString(value) + "<br>"; 601 break;
602 }
603 case City_State_Zip:{ // City, State Zip_Code
604 state = homeState();
605 if ( !(value = homeCity()).isEmpty() ) {
606 marker = true;
607 text += "<br>" + Qtopia::escapeString(value);
608 if ( state )
609 text += ", " + Qtopia::escapeString(state);
610 } else if ( !state.isEmpty() ){
611 text += "<br>" + Qtopia::escapeString(state);
612 marker = true;
613 }
614 if ( !(value = homeZip()).isEmpty() ){
615 text += " " + Qtopia::escapeString(value);
616 marker = true;
617 }
618 break;
619 }
620 }
621
622 if ( !(value = homeCountry()).isEmpty() ){
623 text += "<br>" + Qtopia::escapeString(value);
624 marker = true;
625 }
554 626
555 // rest of Home data 627 // rest of Home data
556 str = homeWebpage(); 628 str = homeWebpage();
557 if ( !str.isEmpty() ){ 629 if ( !str.isEmpty() ){
558 text += "<b><img src=\"addressbook/webpagehome\">" + QObject::tr("Home Web Page: ") + "</b>" 630 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>"
559 + Qtopia::escapeString(str) + "<br>"; 631 + Qtopia::escapeString(str);
560 marker = true; 632 marker = true;
561 } 633 }
562 str = homePhone(); 634 str = homePhone();
563 if ( !str.isEmpty() ){ 635 if ( !str.isEmpty() ){
564 text += "<b><img src=\"addressbook/phonehome\">" + QObject::tr("Home Phone: ") + "</b>" 636 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>"
565 + Qtopia::escapeString(str) + "<br>"; 637 + Qtopia::escapeString(str);
566 marker = true; 638 marker = true;
567 } 639 }
568 str = homeFax(); 640 str = homeFax();
569 if ( !str.isEmpty() ){ 641 if ( !str.isEmpty() ){
570 text += "<b><img src=\"addressbook/faxhome\">" + QObject::tr("Home Fax: ") + "</b>" 642 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>"
571 + Qtopia::escapeString(str) + "<br>"; 643 + Qtopia::escapeString(str);
572 marker = true; 644 marker = true;
573 } 645 }
574 str = homeMobile(); 646 str = homeMobile();
575 if ( !str.isEmpty() ){ 647 if ( !str.isEmpty() ){
576 text += "<b><img src=\"addressbook/mobilehome\">" + QObject::tr("Home Mobile: ") + "</b>" 648 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>"
577 + Qtopia::escapeString(str) + "<br>"; 649 + Qtopia::escapeString(str);
578 marker = true; 650 marker = true;
579 } 651 }
580 652
581 if ( marker ) 653 if ( marker )
582 text += "<br><hr><br>"; 654 text += "<br><hr>";
583 // the others... 655
656 // the rest...
584 str = emails(); 657 str = emails();
585 if ( !str.isEmpty() && ( str != defEmail ) ) 658 if ( !str.isEmpty() && ( str != defEmail ) )
586 text += "<b>" + QObject::tr("All Emails: ") + "</b>" 659 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>"
587 + Qtopia::escapeString(str) + "<br>"; 660 + Qtopia::escapeString(str);
588 str = profession(); 661 str = profession();
589 if ( !str.isEmpty() ) 662 if ( !str.isEmpty() )
590 text += "<b>" + QObject::tr("Profession: ") + "</b>" 663 text += "<br><b>" + QObject::tr("Profession: ") + "</b>"
591 + Qtopia::escapeString(str) + "<br>"; 664 + Qtopia::escapeString(str);
592 str = assistant(); 665 str = assistant();
593 if ( !str.isEmpty() ) 666 if ( !str.isEmpty() )
594 text += "<b>" + QObject::tr("Assistant: ") + "</b>" 667 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>"
595 + Qtopia::escapeString(str) + "<br>"; 668 + Qtopia::escapeString(str);
596 str = manager(); 669 str = manager();
597 if ( !str.isEmpty() ) 670 if ( !str.isEmpty() )
598 text += "<b>" + QObject::tr("Manager: ") + "</b>" 671 text += "<br><b>" + QObject::tr("Manager: ") + "</b>"
599 + Qtopia::escapeString(str) + "<br>"; 672 + Qtopia::escapeString(str);
600 str = gender(); 673 str = gender();
601 if ( !str.isEmpty() && str.toInt() != 0 ) { 674 if ( !str.isEmpty() && str.toInt() != 0 ) {
675 text += "<br>";
602 if ( str.toInt() == 1 ) 676 if ( str.toInt() == 1 )
603 str = QObject::tr( "Male" ); 677 str = QObject::tr( "Male" );
604 else if ( str.toInt() == 2 ) 678 else if ( str.toInt() == 2 )
605 str = QObject::tr( "Female" ); 679 str = QObject::tr( "Female" );
606 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>"; 680 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str;
607 } 681 }
608 str = spouse(); 682 str = spouse();
609 if ( !str.isEmpty() ) 683 if ( !str.isEmpty() )
610 text += "<b>" + QObject::tr("Spouse: ") + "</b>" 684 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>"
611 + Qtopia::escapeString(str) + "<br>"; 685 + Qtopia::escapeString(str);
612 if ( birthday().isValid() ){ 686 if ( birthday().isValid() ){
613 str = TimeString::numberDateString( birthday() ); 687 str = TimeString::numberDateString( birthday() );
614 text += "<b>" + QObject::tr("Birthday: ") + "</b>" 688 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>"
615 + Qtopia::escapeString(str) + "<br>"; 689 + Qtopia::escapeString(str);
616 } 690 }
617 if ( anniversary().isValid() ){ 691 if ( anniversary().isValid() ){
618 str = TimeString::numberDateString( anniversary() ); 692 str = TimeString::numberDateString( anniversary() );
619 text += "<b>" + QObject::tr("Anniversary: ") + "</b>" 693 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>"
620 + Qtopia::escapeString(str) + "<br>"; 694 + Qtopia::escapeString(str);
621 } 695 }
622 str = children(); 696 str = children();
623 if ( !str.isEmpty() ) 697 if ( !str.isEmpty() )
624 text += "<b>" + QObject::tr("Children: ") + "</b>" 698 text += "<br><b>" + QObject::tr("Children: ") + "</b>"
625 + Qtopia::escapeString(str) + "<br>"; 699 + Qtopia::escapeString(str);
626 700
627 str = nickname(); 701 str = nickname();
628 if ( !str.isEmpty() ) 702 if ( !str.isEmpty() )
629 text += "<b>" + QObject::tr("Nickname: ") + "</b>" 703 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>"
630 + Qtopia::escapeString(str) + "<br>"; 704 + Qtopia::escapeString(str);
631 705
632 // categories 706 // categories
633 if ( categoryNames("Contacts").count() ){ 707 if ( categoryNames("Contacts").count() ){
634 text += "<b>" + QObject::tr( "Category:") + "</b> "; 708 text += "<br><b>" + QObject::tr( "Category:") + "</b> ";
635 text += categoryNames("Contacts").join(", "); 709 text += categoryNames("Contacts").join(", ");
636 text += "<br>";
637 } 710 }
638 711
639 // notes last 712 // notes last
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h
index dd2de17..9a1a8dc 100644
--- a/libopie2/opiepim/ocontact.h
+++ b/libopie2/opiepim/ocontact.h
@@ -32,7 +32,7 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
32// MOC_SKIP_END 32// MOC_SKIP_END
33#endif 33#endif
34 34
35class ContactPrivate; 35class OContactPrivate;
36 36
37/** 37/**
38 * OContact class represents a specialised PIM Record for contacts. 38 * OContact class represents a specialised PIM Record for contacts.
@@ -49,6 +49,11 @@ public:
49 OContact( const QMap<int, QString> &fromMap ); 49 OContact( const QMap<int, QString> &fromMap );
50 virtual ~OContact(); 50 virtual ~OContact();
51 51
52 enum DateFormat{
53 Zip_City_State = 0,
54 City_State_Zip
55 };
56
52 /* 57 /*
53 * do we need to inline them 58 * do we need to inline them
54 * if yes do we need to inline them this way? 59 * if yes do we need to inline them this way?
@@ -233,7 +238,7 @@ private:
233 const QString &country ) const; 238 const QString &country ) const;
234 239
235 QMap<int, QString> mMap; 240 QMap<int, QString> mMap;
236 ContactPrivate *d; 241 OContactPrivate *d;
237}; 242};
238 243
239 244
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h
index edcd729..5211f57 100644
--- a/libopie2/opiepim/orecordlist.h
+++ b/libopie2/opiepim/orecordlist.h
@@ -7,6 +7,7 @@
7#include "otemplatebase.h" 7#include "otemplatebase.h"
8#include "opimrecord.h" 8#include "opimrecord.h"
9 9
10class ORecordListIteratorPrivate;
10/** 11/**
11 * Our List Iterator 12 * Our List Iterator
12 * it behaves like STL or Qt 13 * it behaves like STL or Qt
@@ -71,9 +72,10 @@ private:
71 bool m_direction :1; 72 bool m_direction :1;
72 73
73 /* d pointer for future versions */ 74 /* d pointer for future versions */
74 class IteratorPrivate; 75 ORecordListIteratorPrivate *d;
75 IteratorPrivate *d;
76}; 76};
77
78class ORecordListPrivate;
77/** 79/**
78 * The recordlist used as a return type 80 * The recordlist used as a return type
79 * from OPimAccessTemplate 81 * from OPimAccessTemplate
@@ -123,6 +125,7 @@ ORecordList( const QArray<int>& ids,
123private: 125private:
124 QArray<int> m_ids; 126 QArray<int> m_ids;
125 const Base* m_acc; 127 const Base* m_acc;
128 ORecordListPrivate *d;
126}; 129};
127 130
128/* ok now implement it */ 131/* ok now implement it */
@@ -220,6 +223,9 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
220 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), 223 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ),
221 m_direction( false ) 224 m_direction( false )
222{ 225{
226 /* if the list is empty we're already at the end of the list */
227 if (uids.count() == 0 )
228 m_end = true;
223} 229}
224template <class T> 230template <class T>
225uint ORecordListIterator<T>::current()const { 231uint ORecordListIterator<T>::current()const {
diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp
index 38b93f7..5a18c37 100644
--- a/libopie2/opiepim/otodo.cpp
+++ b/libopie2/opiepim/otodo.cpp
@@ -28,6 +28,11 @@ struct OTodo::OTodoData : public QShared {
28 maintainer = 0; 28 maintainer = 0;
29 notifiers = 0; 29 notifiers = 0;
30 }; 30 };
31 ~OTodoData() {
32 delete recur;
33 delete maintainer;
34 delete notifiers;
35 }
31 36
32 QDate date; 37 QDate date;
33 bool isCompleted:1; 38 bool isCompleted:1;
@@ -282,16 +287,15 @@ QString OTodo::toRichText() const
282 287
283 // description 288 // description
284 if( !description().isEmpty() ){ 289 if( !description().isEmpty() ){
285 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; 290 text += "<b>" + QObject::tr( "Notes:" ) + "</b><br>";
286 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) ; 291 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
287 } 292 }
288 293
289 // priority 294 // priority
290 int priorityval = priority(); 295 int priorityval = priority();
291 text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" + 296 text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" +
292 QString::number( priorityval ) + "\">"; 297 QString::number( priorityval ) + "\">";
293// text += "<b>" + QObject::tr( "Priority:") +"</b><img src=\"todo/priority" + 298
294// QString::number( priority() ) + "\"><br>";
295 switch ( priorityval ) 299 switch ( priorityval )
296 { 300 {
297 case 1 : text += QObject::tr( "Very high" ); 301 case 1 : text += QObject::tr( "Very high" );
diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h
index f9a345a..6df98b9 100644
--- a/libopie2/opiepim/otodo.h
+++ b/libopie2/opiepim/otodo.h
@@ -98,11 +98,6 @@ public:
98 bool hasCompletedDate()const; 98 bool hasCompletedDate()const;
99 99
100 /** 100 /**
101 * Does this Event has an alarm time ?
102 */
103 bool hasAlarmDateTime() const;
104
105 /**
106 * What is the priority? 101 * What is the priority?
107 */ 102 */
108 int priority()const ; 103 int priority()const ;
@@ -241,10 +236,6 @@ public:
241 void setCompletedDate( const QDate& date ); 236 void setCompletedDate( const QDate& date );
242 237
243 void setRecurrence( const ORecur& ); 238 void setRecurrence( const ORecur& );
244 /**
245 * set the alarm time
246 */
247 void setAlarmDateTime ( const QDateTime& alarm );
248 239
249 void setDescription(const QString& ); 240 void setDescription(const QString& );
250 void setSummary(const QString& ); 241 void setSummary(const QString& );
diff --git a/libopie2/opiepim/ui/opimmainwindow.cpp b/libopie2/opiepim/ui/opimmainwindow.cpp
index 4044bc1..2739e26 100644
--- a/libopie2/opiepim/ui/opimmainwindow.cpp
+++ b/libopie2/opiepim/ui/opimmainwindow.cpp
@@ -4,6 +4,7 @@
4 4
5#include <qpe/sound.h> 5#include <qpe/sound.h>
6#include <qpe/qcopenvelope_qws.h> 6#include <qpe/qcopenvelope_qws.h>
7#include <qpe/qpeapplication.h>
7 8
8#include "opimresolver.h" 9#include "opimresolver.h"
9#include "opimmainwindow.h" 10#include "opimmainwindow.h"
@@ -38,30 +39,37 @@ void OPimMainWindow::doSetDocument( const QString& ) {
38 39
39} 40}
40void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { 41void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) {
42 bool needShow = false;
41 /* 43 /*
42 * create demands to create 44 * create demands to create
43 * a new record... 45 * a new record...
44 */ 46 */
45 QDataStream stream(array, IO_ReadOnly); 47 QDataStream stream(array, IO_ReadOnly);
46 if ( cmd == "create()" ) { 48 if ( cmd == "create()" ) {
49 raise();
47 int uid = create(); 50 int uid = create();
48 QCopEnvelope e(m_str, "created(int)" ); 51 QCopEnvelope e(m_str, "created(int)" );
49 e << uid; 52 e << uid;
53 needShow = true;
50 }else if ( cmd == "remove(int)" ) { 54 }else if ( cmd == "remove(int)" ) {
51 int uid; 55 int uid;
52 stream >> uid; 56 stream >> uid;
53 bool rem = remove( uid ); 57 bool rem = remove( uid );
54 QCopEnvelope e(m_str, "removed(bool)" ); 58 QCopEnvelope e(m_str, "removed(bool)" );
55 e << rem; 59 e << rem;
60 needShow = true;
56 }else if ( cmd == "beam(int)" ) { 61 }else if ( cmd == "beam(int)" ) {
57 int uid; 62 int uid;
58 stream >> uid; 63 stream >> uid;
59 beam( uid); 64 beam( uid);
60 }else if ( cmd == "show(int)" ) { 65 }else if ( cmd == "show(int)" ) {
66 raise();
61 int uid; 67 int uid;
62 stream >> uid; 68 stream >> uid;
63 show( uid ); 69 show( uid );
70 needShow = true;
64 }else if ( cmd == "edit(int)" ) { 71 }else if ( cmd == "edit(int)" ) {
72 raise();
65 int uid; 73 int uid;
66 stream >> uid; 74 stream >> uid;
67 edit( uid ); 75 edit( uid );
@@ -75,6 +83,7 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
75 add( *m_fallBack ); 83 add( *m_fallBack );
76 delete m_fallBack; 84 delete m_fallBack;
77 }else if ( cmd == "alarm(QDateTime,int)" ) { 85 }else if ( cmd == "alarm(QDateTime,int)" ) {
86 raise();
78 QDateTime dt; int uid; 87 QDateTime dt; int uid;
79 stream >> dt; 88 stream >> dt;
80 stream >> uid; 89 stream >> uid;
@@ -83,8 +92,11 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
83 if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) 92 if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() )
84 return; 93 return;
85 doAlarm( dt, uid ); 94 doAlarm( dt, uid );
86 95 needShow = true;
87 } 96 }
97
98 if (needShow )
99 QPEApplication::setKeepRunning();
88} 100}
89/* implement the url scripting here */ 101/* implement the url scripting here */
90void OPimMainWindow::setDocument( const QString& str) { 102void OPimMainWindow::setDocument( const QString& str) {