-rw-r--r-- | libopie/pim/ocontact.cpp | 168 | ||||
-rw-r--r-- | libopie/pim/ocontact.h | 82 |
2 files changed, 147 insertions, 103 deletions
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp index 6f648ac..21fc088 100644 --- a/libopie/pim/ocontact.cpp +++ b/libopie/pim/ocontact.cpp @@ -1,8 +1,9 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** Copyright (C) 2002 by Stefan Eilers (eilers.stefan@epost.de) ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -23,12 +24,13 @@ #include "ocontact.h" #include "../../library/backend/vobject_p.h" #include "../../library/backend/qfiledirect_p.h" #include <qpe/stringutil.h> #include <qpe/timeconversion.h> +#include <qpe/timestring.h> #include <qobject.h> #include <qregexp.h> #include <qstylesheet.h> #include <qfileinfo.h> #include <qmap.h> @@ -222,20 +224,12 @@ OContact::~OContact() */ /*! \fn void OContact::setGender( const QString &str ) Sets the gender of the contact to \a str. */ -/*! \fn void OContact::setBirthday( const QString &str ) - Sets the birthday for the contact to \a str. -*/ - -/*! \fn void OContact::setAnniversary( const QString &str ) - Sets the anniversary of the contact to \a str. -*/ - /*! \fn void OContact::setNickname( const QString &str ) Sets the nickname of the contact to \a str. */ /*! \fn void OContact::setNotes( const QString &str ) Sets the notes about the contact to \a str. @@ -383,20 +377,12 @@ OContact::~OContact() */ /*! \fn QString OContact::gender() const Returns the gender of the contact. */ -/*! \fn QString OContact::birthday() const - Returns the birthday of the contact. -*/ - -/*! \fn QString OContact::anniversary() const - Returns the anniversary of the contact. -*/ - /*! \fn QString OContact::nickname() const Returns the nickname of the contact. */ /*! \fn QString OContact::children() const Returns the children of the contact. @@ -582,20 +568,22 @@ 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>"; - str = birthday(); - if ( !str.isEmpty() ) - text += "<b>" + QObject::tr("Birthday: ") + "</b>" - + Qtopia::escapeString(str) + "<br>"; - str = anniversary(); - if ( !str.isEmpty() ) - text += "<b>" + QObject::tr("Anniversary: ") + "</b>" - + Qtopia::escapeString(str) + "<br>"; + if ( !birthday().isNull() ){ + str = TimeString::numberDateString( birthday() ); + text += "<b>" + QObject::tr("Birthday: ") + "</b>" + + Qtopia::escapeString(str) + "<br>"; + } + if ( !anniversary().isNull() ){ + str = TimeString::numberDateString( anniversary() ); + text += "<b>" + QObject::tr("Anniversary: ") + "</b>" + + Qtopia::escapeString(str) + "<br>"; + } str = nickname(); if ( !str.isEmpty() ) text += "<b>" + QObject::tr("Nickname: ") + "</b>" + Qtopia::escapeString(str) + "<br>"; // notes last @@ -1131,13 +1119,13 @@ static VObject *createVObject( const OContact &c ) VObject *email = safeAddPropValue( vcard, VCEmailAddressProp, *it ); safeAddProp( email, VCInternetProp ); } safeAddPropValue( vcard, VCNoteProp, c.notes() ); - safeAddPropValue( vcard, VCBirthDateProp, c.birthday() ); + safeAddPropValue( vcard, VCBirthDateProp, TimeConversion::toString( c.birthday() ) ); if ( !c.company().isEmpty() || !c.department().isEmpty() || !c.office().isEmpty() ) { VObject *org = safeAddProp( vcard, VCOrgProp ); safeAddPropValue( org, VCOrgNameProp, c.company() ); safeAddPropValue( org, VCOrgUnitProp, c.department() ); safeAddPropValue( org, VCOrgUnit2Prop, c.office() ); @@ -1147,13 +1135,13 @@ static VObject *createVObject( const OContact &c ) safeAddPropValue( vcard, "X-Qtopia-Profession", c.profession() ); safeAddPropValue( vcard, "X-Qtopia-Manager", c.manager() ); safeAddPropValue( vcard, "X-Qtopia-Assistant", c.assistant() ); safeAddPropValue( vcard, "X-Qtopia-Spouse", c.spouse() ); safeAddPropValue( vcard, "X-Qtopia-Gender", c.gender() ); - safeAddPropValue( vcard, "X-Qtopia-Anniversary", c.anniversary() ); + safeAddPropValue( vcard, "X-Qtopia-Anniversary", TimeConversion::toString( c.anniversary() ) ); safeAddPropValue( vcard, "X-Qtopia-Nickname", c.nickname() ); safeAddPropValue( vcard, "X-Qtopia-Children", c.children() ); return vcard; } @@ -1350,13 +1338,13 @@ static OContact parseVObject( VObject *obj ) c.setSpouse( value ); } else if ( name == "X-Qtopia-Gender" ) { c.setGender( value ); } else if ( name == "X-Qtopia-Anniversary" ) { - c.setAnniversary( value ); + c.setAnniversary( TimeConversion::fromString( value ) ); } else if ( name == "X-Qtopia-Nickname" ) { c.setNickname( value ); } else if ( name == "X-Qtopia-Children" ) { c.setChildren( value ); @@ -1490,6 +1478,132 @@ QMap<QString,QString> OContact::toExtraMap() const class QString OContact::recordField( int pos ) const { QStringList SLFIELDS = fields(); // ?? why this ? (se) return SLFIELDS[pos]; } + +// In future releases, we should store birthday and anniversary +// internally as QDate instead of QString ! +// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) + +/*! \fn void OContact::setBirthday( const QDate& date ) + Sets the birthday for the contact to \a date. +*/ +void OContact::setBirthday( const QDate &v ) +{ + if ( ( !v.isNull() ) && ( v.isValid() ) ) + replace( Qtopia::Birthday, TimeConversion::toString( v ) ); + +} + + +/*! \fn void OContact::setAnniversary( const QDate &date ) + Sets the anniversary of the contact to \a date. +*/ +void OContact::setAnniversary( const QDate &v ) +{ + if ( ( !v.isNull() ) && ( v.isValid() ) ) + replace( Qtopia::Anniversary, TimeConversion::toString( v ) ); +} + +/*! \fn QDate OContact::birthday() const + Returns the birthday of the contact. +*/ +QDate OContact::birthday() const +{ + QDate empty; + QString str = find( Qtopia::Birthday ); + qWarning ("Birthday %s", str.latin1() ); + if ( !str.isEmpty() ) + return TimeConversion::fromString ( str ); + else + return empty; +} + + +/*! \fn QDate OContact::anniversary() const + Returns the anniversary of the contact. +*/ +QDate OContact::anniversary() const +{ + QDate empty; + QString str = find( Qtopia::Anniversary ); + qWarning ("Anniversary %s", str.latin1() ); + if ( !str.isEmpty() ) + return TimeConversion::fromString ( str ); + else + return empty; +} + + +void OContact::insertEmail( const QString &v ) +{ + //qDebug("insertEmail %s", v.latin1()); + QString e = v.simplifyWhiteSpace(); + QString def = defaultEmail(); + + // if no default, set it as the default email and don't insert + if ( def.isEmpty() ) { + setDefaultEmail( e ); // will insert into the list for us + return; + } + + // otherwise, insert assuming doesn't already exist + QString emailsStr = find( Qtopia::Emails ); + if ( emailsStr.contains( e )) + return; + if ( !emailsStr.isEmpty() ) + emailsStr += emailSeparator(); + emailsStr += e; + replace( Qtopia::Emails, emailsStr ); +} + +void OContact::removeEmail( const QString &v ) +{ + QString e = v.simplifyWhiteSpace(); + QString def = defaultEmail(); + QString emailsStr = find( Qtopia::Emails ); + QStringList emails = emailList(); + + // otherwise, must first contain it + if ( !emailsStr.contains( e ) ) + return; + + // remove it + //qDebug(" removing email from list %s", e.latin1()); + emails.remove( e ); + // reset the string + emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator + replace( Qtopia::Emails, emailsStr ); + + // if default, then replace the default email with the first one + if ( def == e ) { + //qDebug("removeEmail is default; setting new default"); + if ( !emails.count() ) + clearEmails(); + else // setDefaultEmail will remove e from the list + setDefaultEmail( emails.first() ); + } +} +void OContact::clearEmails() +{ + mMap.remove( Qtopia::DefaultEmail ); + mMap.remove( Qtopia::Emails ); +} +void OContact::setDefaultEmail( const QString &v ) +{ + QString e = v.simplifyWhiteSpace(); + + //qDebug("OContact::setDefaultEmail %s", e.latin1()); + replace( Qtopia::DefaultEmail, e ); + + if ( !e.isEmpty() ) + insertEmail( e ); + +} + +void OContact::insertEmails( const QStringList &v ) +{ + for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) + insertEmail( *it ); +} diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h index f916cf2..9e83150 100644 --- a/libopie/pim/ocontact.h +++ b/libopie/pim/ocontact.h @@ -1,8 +1,9 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** Copyright (C) 2002 by Stefan Eilers (eilers.stefan@epost.de) ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the @@ -21,12 +22,13 @@ #ifndef __OCONTACT_H__ #define __OCONTACT_H__ #include <opie/opimrecord.h> #include <qpe/recordfields.h> +#include <qdatetime.h> #include <qstringlist.h> #if defined(QPC_TEMPLATEDLL) // MOC_SKIP_BEGIN QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; // MOC_SKIP_END @@ -93,14 +95,14 @@ public: void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); } void setManager( const QString &v ) { replace( Qtopia::Manager, v ); } // personal void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } - void setBirthday( const QString &v ) { replace( Qtopia::Birthday, v ); } - void setAnniversary( const QString &v ) { replace( Qtopia::Anniversary, v ); } + void setBirthday( const QDate &v ); + void setAnniversary( const QDate &v ); void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } void setChildren( const QString &v ); // other void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } @@ -170,14 +172,14 @@ public: */ QString displayBusinessAddress() const; //personal QString spouse() const { return find( Qtopia::Spouse ); } QString gender() const { return find( Qtopia::Gender ); } - QString birthday() const { return find( Qtopia::Birthday ); } - QString anniversary() const { return find( Qtopia::Anniversary ); } + QDate birthday() const; + QDate anniversary() const; QString nickname() const { return find( Qtopia::Nickname ); } QString children() const { return find( Qtopia::Children ); } QStringList childrenList() const; // other QString notes() const { return find( Qtopia::Notes ); } @@ -236,80 +238,8 @@ private: Qtopia::UidGen &uidGen() { return sUidGen; } static Qtopia::UidGen sUidGen; QMap<int, QString> mMap; ContactPrivate *d; }; -// these methods are inlined to keep binary compatability with Qtopia 1.5 -inline void OContact::insertEmail( const QString &v ) -{ - //qDebug("insertEmail %s", v.latin1()); - QString e = v.simplifyWhiteSpace(); - QString def = defaultEmail(); - - // if no default, set it as the default email and don't insert - if ( def.isEmpty() ) { - setDefaultEmail( e ); // will insert into the list for us - return; - } - - // otherwise, insert assuming doesn't already exist - QString emailsStr = find( Qtopia::Emails ); - if ( emailsStr.contains( e )) - return; - if ( !emailsStr.isEmpty() ) - emailsStr += emailSeparator(); - emailsStr += e; - replace( Qtopia::Emails, emailsStr ); -} - -inline void OContact::removeEmail( const QString &v ) -{ - QString e = v.simplifyWhiteSpace(); - QString def = defaultEmail(); - QString emailsStr = find( Qtopia::Emails ); - QStringList emails = emailList(); - - // otherwise, must first contain it - if ( !emailsStr.contains( e ) ) - return; - - // remove it - //qDebug(" removing email from list %s", e.latin1()); - emails.remove( e ); - // reset the string - emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator - replace( Qtopia::Emails, emailsStr ); - - // if default, then replace the default email with the first one - if ( def == e ) { - //qDebug("removeEmail is default; setting new default"); - if ( !emails.count() ) - clearEmails(); - else // setDefaultEmail will remove e from the list - setDefaultEmail( emails.first() ); - } -} -inline void OContact::clearEmails() -{ - mMap.remove( Qtopia::DefaultEmail ); - mMap.remove( Qtopia::Emails ); -} -inline void OContact::setDefaultEmail( const QString &v ) -{ - QString e = v.simplifyWhiteSpace(); - - //qDebug("OContact::setDefaultEmail %s", e.latin1()); - replace( Qtopia::DefaultEmail, e ); - - if ( !e.isEmpty() ) - insertEmail( e ); - -} - -inline void OContact::insertEmails( const QStringList &v ) -{ - for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) - insertEmail( *it ); -} #endif |