summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/ocontact.cpp29
-rw-r--r--libopie2/opiepim/ocontact.cpp29
2 files changed, 42 insertions, 16 deletions
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index 734f5a2..bf27d0f 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -568,18 +568,18 @@ QString OContact::toRichText() const
text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>";
}
str = spouse();
if ( !str.isEmpty() )
text += "<b>" + QObject::tr("Spouse: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
- if ( !birthday().isNull() ){
+ if ( !birthday().isValid() ){
str = TimeString::numberDateString( birthday() );
text += "<b>" + QObject::tr("Birthday: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
}
- if ( !anniversary().isNull() ){
+ if ( !anniversary().isValid() ){
str = TimeString::numberDateString( anniversary() );
text += "<b>" + QObject::tr("Anniversary: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
}
str = nickname();
if ( !str.isEmpty() )
@@ -1120,14 +1120,22 @@ static VObject *createVObject( const OContact &c )
safeAddProp( email, VCInternetProp );
}
safeAddPropValue( vcard, VCNoteProp, c.notes() );
// Exporting Birthday regarding RFC 2425 (5.8.4)
- if ( !c.birthday().isNull() ){
- QString birthd_rfc2425 = c.birthday().year() + QString( "-" ) + c.birthday().month() + QString( "-" ) + c.birthday().day();
+ if ( !c.birthday().isValid() ){
+ QString birthd_rfc2425 = QString("%1-%2-%3")
+ .arg( c.birthday().year() )
+ .arg( c.birthday().month(), 2 )
+ .arg( c.birthday().day(), 2 );
+ // Now replace spaces with "0"...
+ int pos = 0;
+ while ( ( pos = birthd_rfc2425.find (' ') ) > 0 )
+ birthd_rfc2425.replace( pos, 1, "0" );
+
qWarning("Exporting birthday as: %s", birthd_rfc2425.latin1());
safeAddPropValue( vcard, VCBirthDateProp, birthd_rfc2425.latin1() );
}
if ( !c.company().isEmpty() || !c.department().isEmpty() || !c.office().isEmpty() ) {
VObject *org = safeAddProp( vcard, VCOrgProp );
@@ -1155,21 +1163,26 @@ static VObject *createVObject( const OContact &c )
\internal
*/
static QDate convVCardDateToDate( const QString& datestr )
{
int monthPos = datestr.find('-');
int dayPos = datestr.find('-', monthPos+1 );
+ int sep_ignore = 1;
if ( monthPos == -1 || dayPos == -1 ) {
qDebug("fromString didn't find - in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
- return QDate();
+ // Ok.. Outlook is violating ISO 8601, therefore we will try to read their format ( YYYYMMDD )
+ monthPos = 4;
+ dayPos = 6;
+ sep_ignore = 0;
+ qDebug("Try with follwing positions str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
}
int y = datestr.left( monthPos ).toInt();
- int m = datestr.mid( monthPos+1, dayPos - monthPos - 1 ).toInt();
- int d = datestr.mid( dayPos+1 ).toInt();
- QDate date ( y,m,d );
+ int m = datestr.mid( monthPos + sep_ignore, dayPos - monthPos - sep_ignore ).toInt();
+ int d = datestr.mid( dayPos + sep_ignore ).toInt();
qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, dayPos);
+ QDate date ( y,m,d );
return date;
}
static OContact parseVObject( VObject *obj )
{
OContact c;
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index 734f5a2..bf27d0f 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -568,18 +568,18 @@ QString OContact::toRichText() const
text += "<b>" + QObject::tr("Gender: ") + "</b>" + str + "<br>";
}
str = spouse();
if ( !str.isEmpty() )
text += "<b>" + QObject::tr("Spouse: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
- if ( !birthday().isNull() ){
+ if ( !birthday().isValid() ){
str = TimeString::numberDateString( birthday() );
text += "<b>" + QObject::tr("Birthday: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
}
- if ( !anniversary().isNull() ){
+ if ( !anniversary().isValid() ){
str = TimeString::numberDateString( anniversary() );
text += "<b>" + QObject::tr("Anniversary: ") + "</b>"
+ Qtopia::escapeString(str) + "<br>";
}
str = nickname();
if ( !str.isEmpty() )
@@ -1120,14 +1120,22 @@ static VObject *createVObject( const OContact &c )
safeAddProp( email, VCInternetProp );
}
safeAddPropValue( vcard, VCNoteProp, c.notes() );
// Exporting Birthday regarding RFC 2425 (5.8.4)
- if ( !c.birthday().isNull() ){
- QString birthd_rfc2425 = c.birthday().year() + QString( "-" ) + c.birthday().month() + QString( "-" ) + c.birthday().day();
+ if ( !c.birthday().isValid() ){
+ QString birthd_rfc2425 = QString("%1-%2-%3")
+ .arg( c.birthday().year() )
+ .arg( c.birthday().month(), 2 )
+ .arg( c.birthday().day(), 2 );
+ // Now replace spaces with "0"...
+ int pos = 0;
+ while ( ( pos = birthd_rfc2425.find (' ') ) > 0 )
+ birthd_rfc2425.replace( pos, 1, "0" );
+
qWarning("Exporting birthday as: %s", birthd_rfc2425.latin1());
safeAddPropValue( vcard, VCBirthDateProp, birthd_rfc2425.latin1() );
}
if ( !c.company().isEmpty() || !c.department().isEmpty() || !c.office().isEmpty() ) {
VObject *org = safeAddProp( vcard, VCOrgProp );
@@ -1155,21 +1163,26 @@ static VObject *createVObject( const OContact &c )
\internal
*/
static QDate convVCardDateToDate( const QString& datestr )
{
int monthPos = datestr.find('-');
int dayPos = datestr.find('-', monthPos+1 );
+ int sep_ignore = 1;
if ( monthPos == -1 || dayPos == -1 ) {
qDebug("fromString didn't find - in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
- return QDate();
+ // Ok.. Outlook is violating ISO 8601, therefore we will try to read their format ( YYYYMMDD )
+ monthPos = 4;
+ dayPos = 6;
+ sep_ignore = 0;
+ qDebug("Try with follwing positions str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, dayPos );
}
int y = datestr.left( monthPos ).toInt();
- int m = datestr.mid( monthPos+1, dayPos - monthPos - 1 ).toInt();
- int d = datestr.mid( dayPos+1 ).toInt();
- QDate date ( y,m,d );
+ int m = datestr.mid( monthPos + sep_ignore, dayPos - monthPos - sep_ignore ).toInt();
+ int d = datestr.mid( dayPos + sep_ignore ).toInt();
qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, dayPos);
+ QDate date ( y,m,d );
return date;
}
static OContact parseVObject( VObject *obj )
{
OContact c;