summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/ocontact.cpp
Unidiff
Diffstat (limited to 'libopie2/opiepim/ocontact.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/ocontact.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index bf27d0f..acd65c4 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -60,33 +60,35 @@ OContact::OContact()
60 60
61/*! 61/*!
62 \internal 62 \internal
63 Creates a new contact. The properties of the contact are 63 Creates a new contact. The properties of the contact are
64 set from \a fromMap. 64 set from \a fromMap.
65*/ 65*/
66OContact::OContact( const QMap<int, QString> &fromMap ) : 66OContact::OContact( const QMap<int, QString> &fromMap ) :
67 OPimRecord(), mMap( fromMap ), d( 0 ) 67 OPimRecord(), mMap( fromMap ), d( 0 )
68{ 68{
69 QString cats = mMap[ Qtopia::AddressCategory ]; 69 QString cats = mMap[ Qtopia::AddressCategory ];
70 if ( !cats.isEmpty() ) 70 if ( !cats.isEmpty() )
71 setCategories( idsFromString( cats ) ); 71 setCategories( idsFromString( cats ) );
72
72 QString uidStr = find( Qtopia::AddressUid ); 73 QString uidStr = find( Qtopia::AddressUid );
73 74
74 if ( uidStr.isEmpty() ) 75 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){
76 qWarning( "Invalid UID found. Generate new one.." );
75 setUid( uidGen().generate() ); 77 setUid( uidGen().generate() );
76 else 78 }else
77 setUid( uidStr.toInt() ); 79 setUid( uidStr.toInt() );
78 80
79 if ( !uidStr.isEmpty() ) 81// if ( !uidStr.isEmpty() )
80 setUid( uidStr.toInt() ); 82 // setUid( uidStr.toInt() );
81} 83}
82 84
83/*! 85/*!
84 Destroys a contact. 86 Destroys a contact.
85*/ 87*/
86OContact::~OContact() 88OContact::~OContact()
87{ 89{
88} 90}
89 91
90/*! \fn void OContact::setTitle( const QString &str ) 92/*! \fn void OContact::setTitle( const QString &str )
91 Sets the title of the contact to \a str. 93 Sets the title of the contact to \a str.
92*/ 94*/
@@ -562,30 +564,30 @@ QString OContact::toRichText() const
562 str = gender(); 564 str = gender();
563 if ( !str.isEmpty() && str.toInt() != 0 ) { 565 if ( !str.isEmpty() && str.toInt() != 0 ) {
564 if ( str.toInt() == 1 ) 566 if ( str.toInt() == 1 )
565 str = QObject::tr( "Male" ); 567 str = QObject::tr( "Male" );
566 else if ( str.toInt() == 2 ) 568 else if ( str.toInt() == 2 )
567 str = QObject::tr( "Female" ); 569 str = QObject::tr( "Female" );
568 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>"; 570 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>";
569 } 571 }
570 str = spouse(); 572 str = spouse();
571 if ( !str.isEmpty() ) 573 if ( !str.isEmpty() )
572 text += "<b>" + QObject::tr("Spouse: ") + "</b>" 574 text += "<b>" + QObject::tr("Spouse: ") + "</b>"
573 + Qtopia::escapeString(str) + "<br>"; 575 + Qtopia::escapeString(str) + "<br>";
574 if ( !birthday().isValid() ){ 576 if ( birthday().isValid() ){
575 str = TimeString::numberDateString( birthday() ); 577 str = TimeString::numberDateString( birthday() );
576 text += "<b>" + QObject::tr("Birthday: ") + "</b>" 578 text += "<b>" + QObject::tr("Birthday: ") + "</b>"
577 + Qtopia::escapeString(str) + "<br>"; 579 + Qtopia::escapeString(str) + "<br>";
578 } 580 }
579 if ( !anniversary().isValid() ){ 581 if ( anniversary().isValid() ){
580 str = TimeString::numberDateString( anniversary() ); 582 str = TimeString::numberDateString( anniversary() );
581 text += "<b>" + QObject::tr("Anniversary: ") + "</b>" 583 text += "<b>" + QObject::tr("Anniversary: ") + "</b>"
582 + Qtopia::escapeString(str) + "<br>"; 584 + Qtopia::escapeString(str) + "<br>";
583 } 585 }
584 str = nickname(); 586 str = nickname();
585 if ( !str.isEmpty() ) 587 if ( !str.isEmpty() )
586 text += "<b>" + QObject::tr("Nickname: ") + "</b>" 588 text += "<b>" + QObject::tr("Nickname: ") + "</b>"
587 + Qtopia::escapeString(str) + "<br>"; 589 + Qtopia::escapeString(str) + "<br>";
588 590
589 // notes last 591 // notes last
590 if ( (value = notes()) ) { 592 if ( (value = notes()) ) {
591 QRegExp reg("\n"); 593 QRegExp reg("\n");
@@ -1114,25 +1116,25 @@ static VObject *createVObject( const OContact &c )
1114 1116
1115 1117
1116 QStringList emails = c.emailList(); 1118 QStringList emails = c.emailList();
1117 emails.prepend( c.defaultEmail() ); 1119 emails.prepend( c.defaultEmail() );
1118 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) { 1120 for( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
1119 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it ); 1121 VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it );
1120 safeAddProp( email, VCInternetProp ); 1122 safeAddProp( email, VCInternetProp );
1121 } 1123 }
1122 1124
1123 safeAddPropValue( vcard, VCNoteProp, c.notes() ); 1125 safeAddPropValue( vcard, VCNoteProp, c.notes() );
1124 1126
1125 // Exporting Birthday regarding RFC 2425 (5.8.4) 1127 // Exporting Birthday regarding RFC 2425 (5.8.4)
1126 if ( !c.birthday().isValid() ){ 1128 if ( c.birthday().isValid() ){
1127 QString birthd_rfc2425 = QString("%1-%2-%3") 1129 QString birthd_rfc2425 = QString("%1-%2-%3")
1128 .arg( c.birthday().year() ) 1130 .arg( c.birthday().year() )
1129 .arg( c.birthday().month(), 2 ) 1131 .arg( c.birthday().month(), 2 )
1130 .arg( c.birthday().day(), 2 ); 1132 .arg( c.birthday().day(), 2 );
1131 // Now replace spaces with "0"... 1133 // Now replace spaces with "0"...
1132 int pos = 0; 1134 int pos = 0;
1133 while ( ( pos = birthd_rfc2425.find (' ') ) > 0 ) 1135 while ( ( pos = birthd_rfc2425.find (' ') ) > 0 )
1134 birthd_rfc2425.replace( pos, 1, "0" ); 1136 birthd_rfc2425.replace( pos, 1, "0" );
1135 1137
1136 qWarning("Exporting birthday as: %s", birthd_rfc2425.latin1()); 1138 qWarning("Exporting birthday as: %s", birthd_rfc2425.latin1());
1137 safeAddPropValue( vcard, VCBirthDateProp, birthd_rfc2425.latin1() ); 1139 safeAddPropValue( vcard, VCBirthDateProp, birthd_rfc2425.latin1() );
1138 } 1140 }
@@ -1160,29 +1162,33 @@ static VObject *createVObject( const OContact &c )
1160 1162
1161 1163
1162/*! 1164/*!
1163 \internal 1165 \internal
1164*/ 1166*/
1165static QDate convVCardDateToDate( const QString& datestr ) 1167static QDate convVCardDateToDate( const QString& datestr )
1166{ 1168{
1167 int monthPos = datestr.find('-'); 1169 int monthPos = datestr.find('-');
1168 int dayPos = datestr.find('-', monthPos+1 ); 1170 int dayPos = datestr.find('-', monthPos+1 );
1169 int sep_ignore = 1; 1171 int sep_ignore = 1;
1170 if ( monthPos == -1 || dayPos == -1 ) { 1172 if ( monthPos == -1 || dayPos == -1 ) {
1171 qDebug("fromString didn't find - in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos ); 1173 qDebug("fromString didn't find - in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
1172 // Ok.. Outlook is violating ISO 8601, therefore we will try to read their format ( YYYYMMDD ) 1174 // Ok.. No "-" found, therefore we will try to read other format ( YYYYMMDD )
1175 if ( datestr.length() == 8 ){
1173 monthPos = 4; 1176 monthPos = 4;
1174 dayPos = 6; 1177 dayPos = 6;
1175 sep_ignore = 0; 1178 sep_ignore = 0;
1176 qDebug("Try with follwing positions str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos ); 1179 qDebug("Try with follwing positions str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
1180 } else {
1181 return QDate();
1182 }
1177 } 1183 }
1178 int y = datestr.left( monthPos ).toInt(); 1184 int y = datestr.left( monthPos ).toInt();
1179 int m = datestr.mid( monthPos + sep_ignore, dayPos - monthPos - sep_ignore ).toInt(); 1185 int m = datestr.mid( monthPos + sep_ignore, dayPos - monthPos - sep_ignore ).toInt();
1180 int d = datestr.mid( dayPos + sep_ignore ).toInt(); 1186 int d = datestr.mid( dayPos + sep_ignore ).toInt();
1181 qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, dayPos); 1187 qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, dayPos);
1182 QDate date ( y,m,d ); 1188 QDate date ( y,m,d );
1183 return date; 1189 return date;
1184} 1190}
1185 1191
1186static OContact parseVObject( VObject *obj ) 1192static OContact parseVObject( VObject *obj )
1187{ 1193{
1188 OContact c; 1194 OContact c;
@@ -1540,31 +1546,30 @@ void OContact::setBirthday( const QDate &v )
1540*/ 1546*/
1541void OContact::setAnniversary( const QDate &v ) 1547void OContact::setAnniversary( const QDate &v )
1542{ 1548{
1543 if ( ( !v.isNull() ) && ( v.isValid() ) ) 1549 if ( ( !v.isNull() ) && ( v.isValid() ) )
1544 replace( Qtopia::Anniversary, TimeConversion::toString( v ) ); 1550 replace( Qtopia::Anniversary, TimeConversion::toString( v ) );
1545} 1551}
1546 1552
1547/*! \fn QDate OContact::birthday() const 1553/*! \fn QDate OContact::birthday() const
1548 Returns the birthday of the contact. 1554 Returns the birthday of the contact.
1549*/ 1555*/
1550QDate OContact::birthday() const 1556QDate OContact::birthday() const
1551{ 1557{
1552 QDate empty;
1553 QString str = find( Qtopia::Birthday ); 1558 QString str = find( Qtopia::Birthday );
1554 qWarning ("Birthday %s", str.latin1() ); 1559 qWarning ("Birthday %s", str.latin1() );
1555 if ( !str.isEmpty() ) 1560 if ( !str.isEmpty() )
1556 return TimeConversion::fromString ( str ); 1561 return TimeConversion::fromString ( str );
1557 else 1562 else
1558 return empty; 1563 return QDate();
1559} 1564}
1560 1565
1561 1566
1562/*! \fn QDate OContact::anniversary() const 1567/*! \fn QDate OContact::anniversary() const
1563 Returns the anniversary of the contact. 1568 Returns the anniversary of the contact.
1564*/ 1569*/
1565QDate OContact::anniversary() const 1570QDate OContact::anniversary() const
1566{ 1571{
1567 QDate empty; 1572 QDate empty;
1568 QString str = find( Qtopia::Anniversary ); 1573 QString str = find( Qtopia::Anniversary );
1569 qWarning ("Anniversary %s", str.latin1() ); 1574 qWarning ("Anniversary %s", str.latin1() );
1570 if ( !str.isEmpty() ) 1575 if ( !str.isEmpty() )