author | zecke <zecke> | 2004-07-29 19:42:59 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-07-29 19:42:59 (UTC) |
commit | 52b1ae9281920cf5a40fe543112d8b00e7699ef6 (patch) (unidiff) | |
tree | 0b0a79ff9a45a66f32fe555ee662b4acc8f6eff9 /libopie2/opiepim/core | |
parent | c170d1f931ae03c2ec917b7abf4bd5d0e94a3760 (diff) | |
download | opie-52b1ae9281920cf5a40fe543112d8b00e7699ef6.zip opie-52b1ae9281920cf5a40fe543112d8b00e7699ef6.tar.gz opie-52b1ae9281920cf5a40fe543112d8b00e7699ef6.tar.bz2 |
-UTC -> Europe/London when referring to no timezone
-special handling for allDay Event in OPImEvent, avoid setting timezone
as it is by default UTC
-No timezone set by default for an Event
-Recurrence is UTC (no timezone)
-Provide upgrade path from DateBook as by default events were in the current timezone but didn't have the timezone attribute
-unified handling of timezones, compatible with QtopiaDesktop
-do less conversions
-...
-rw-r--r-- | libopie2/opiepim/core/opimevent.cpp | 36 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimrecurrence.cpp | 10 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimtimezone.cpp | 12 |
3 files changed, 28 insertions, 30 deletions
diff --git a/libopie2/opiepim/core/opimevent.cpp b/libopie2/opiepim/core/opimevent.cpp index 8752fce..739cb6f 100644 --- a/libopie2/opiepim/core/opimevent.cpp +++ b/libopie2/opiepim/core/opimevent.cpp | |||
@@ -297,6 +297,8 @@ QDateTime OPimEvent::endDateTime() const | |||
297 | * to be on the same day as the start | 297 | * to be on the same day as the start |
298 | */ | 298 | */ |
299 | if ( data->isAllDay ) | 299 | if ( data->isAllDay ) { |
300 | return QDateTime( data->start.date(), QTime( 23, 59, 59 ) ); | 300 | QDate end = data->end.isValid() ? data->end.date() : data->start.date() ; |
301 | return QDateTime( end, QTime( 23, 59, 59 ) ); | ||
302 | } | ||
301 | return data->end; | 303 | return data->end; |
302 | } | 304 | } |
@@ -336,5 +338,4 @@ void OPimEvent::setAllDay( bool allDay ) | |||
336 | changeOrModify(); | 338 | changeOrModify(); |
337 | data->isAllDay = allDay; | 339 | data->isAllDay = allDay; |
338 | if ( allDay ) data->timezone = "UTC"; | ||
339 | } | 340 | } |
340 | 341 | ||
@@ -349,5 +350,5 @@ void OPimEvent::setTimeZone( const QString& tz ) | |||
349 | QString OPimEvent::timeZone() const | 350 | QString OPimEvent::timeZone() const |
350 | { | 351 | { |
351 | if ( data->isAllDay ) return QString::fromLatin1( "UTC" ); | 352 | if ( data->isAllDay ) return QString::fromLatin1( "Europe/London" ); |
352 | return data->timezone; | 353 | return data->timezone; |
353 | } | 354 | } |
@@ -565,7 +566,8 @@ QMap<int, QString> OPimEvent::toMap() const | |||
565 | } | 566 | } |
566 | 567 | ||
567 | OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() ); | 568 | /* either use UTC timeZone or current() if there is was a timezone set */ |
568 | retMap.insert( OPimEvent::FStart, QString::number( zone.fromUTCDateTime( zone.toDateTime( startDateTime(), OPimTimeZone::utc() ) ) ) ); | 569 | OPimTimeZone zone( (timeZone().isEmpty()||isAllDay()) ? OPimTimeZone::utc() : OPimTimeZone::current() ); |
569 | retMap.insert( OPimEvent::FEnd, QString::number( zone.fromUTCDateTime( zone.toDateTime( endDateTime(), OPimTimeZone::utc() ) ) ) ); | 570 | retMap.insert( OPimEvent::FStart, QString::number( zone.fromDateTime( startDateTime()))); |
571 | retMap.insert( OPimEvent::FEnd, QString::number( zone.fromDateTime( endDateTime() ))); | ||
570 | retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) ); | 572 | retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) ); |
571 | retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); | 573 | retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); |
@@ -637,19 +639,13 @@ void OPimEvent::fromMap( const QMap<int, QString>& map ) | |||
637 | { | 639 | { |
638 | OPimTimeZone utc = OPimTimeZone::utc(); | 640 | OPimTimeZone utc = OPimTimeZone::utc(); |
639 | setStartDateTime( utc.fromUTCDateTime( start ) ); | 641 | setStartDateTime(utc.toDateTime( start ) ); |
640 | setEndDateTime ( utc.fromUTCDateTime( end ) ); | 642 | setEndDateTime ( utc.toDateTime( end ) ); |
641 | setTimeZone( "UTC" ); // make sure it is really utc | ||
642 | } | 643 | } |
643 | else | 644 | else { |
644 | { | ||
645 | /* to current date time */ | 645 | /* to current date time */ |
646 | // owarn << " Start is " << start << "" << oendl; | 646 | OPimTimeZone to_zone( ev.timeZone().isEmpty() ? OPimTimeZone::utc() : OPimTimeZone::current() ); |
647 | OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() ); | 647 | |
648 | QDateTime date = zone.toDateTime( start ); | 648 | ev.setStartDateTime(to_zone.toDateTime( start)); |
649 | owarn << " Start is " << date.toString() << "" << oendl; | 649 | ev.setEndDateTime (to_zone.toDateTime( end)); |
650 | setStartDateTime( zone.toDateTime( date, OPimTimeZone::current() ) ); | ||
651 | |||
652 | date = zone.toDateTime( end ); | ||
653 | setEndDateTime ( zone.toDateTime( date, OPimTimeZone::current() ) ); | ||
654 | } | 650 | } |
655 | 651 | ||
diff --git a/libopie2/opiepim/core/opimrecurrence.cpp b/libopie2/opiepim/core/opimrecurrence.cpp index 4b1d886..c3ae350 100644 --- a/libopie2/opiepim/core/opimrecurrence.cpp +++ b/libopie2/opiepim/core/opimrecurrence.cpp | |||
@@ -640,6 +640,6 @@ QMap<int, QString> OPimRecurrence::toMap() const | |||
640 | retMap.insert( OPimRecurrence::RHasEndDate, QString::number( static_cast<int>( data->hasEnd ) ) ); | 640 | retMap.insert( OPimRecurrence::RHasEndDate, QString::number( static_cast<int>( data->hasEnd ) ) ); |
641 | if( data -> hasEnd ) | 641 | if( data -> hasEnd ) |
642 | retMap.insert( OPimRecurrence::EndDate, QString::number( OPimTimeZone::utc().fromUTCDateTime( QDateTime( data->end, QTime(12,0,0) ) ) ) ); | 642 | retMap.insert( OPimRecurrence::EndDate, QString::number( OPimTimeZone::current().fromUTCDateTime( QDateTime( data->end, QTime(12,0,0) ) ) ) ); |
643 | retMap.insert( OPimRecurrence::Created, QString::number( OPimTimeZone::utc().fromUTCDateTime( data->create ) ) ); | 643 | retMap.insert( OPimRecurrence::Created, QString::number( OPimTimeZone::current().fromUTCDateTime( data->create ) ) ); |
644 | 644 | ||
645 | if ( data->list.isEmpty() ) return retMap; | 645 | if ( data->list.isEmpty() ) return retMap; |
@@ -671,9 +671,9 @@ void OPimRecurrence::fromMap( const QMap<int, QString>& map ) | |||
671 | data -> freq = map[ OPimRecurrence::RFreq ].toInt(); | 671 | data -> freq = map[ OPimRecurrence::RFreq ].toInt(); |
672 | data -> hasEnd= map[ OPimRecurrence::RHasEndDate ].toInt() ? true : false; | 672 | data -> hasEnd= map[ OPimRecurrence::RHasEndDate ].toInt() ? true : false; |
673 | OPimTimeZone utc = OPimTimeZone::utc(); | 673 | OPimTimeZone cur = OPimTimeZone::current(); |
674 | if ( data -> hasEnd ){ | 674 | if ( data -> hasEnd ){ |
675 | data -> end = utc.fromUTCDateTime( (time_t) map[ OPimRecurrence::EndDate ].toLong() ).date(); | 675 | data -> end = cur.fromUTCDateTime( (time_t) map[ OPimRecurrence::EndDate ].toLong() ).date(); |
676 | } | 676 | } |
677 | data -> create = utc.fromUTCDateTime( (time_t) map[ OPimRecurrence::Created ].toLong() ).date(); | 677 | data -> create = cur.fromUTCDateTime( (time_t) map[ OPimRecurrence::Created ].toLong() ).date(); |
678 | 678 | ||
679 | #if 0 | 679 | #if 0 |
diff --git a/libopie2/opiepim/core/opimtimezone.cpp b/libopie2/opiepim/core/opimtimezone.cpp index fefceb5..5b32b1f 100644 --- a/libopie2/opiepim/core/opimtimezone.cpp +++ b/libopie2/opiepim/core/opimtimezone.cpp | |||
@@ -49,4 +49,5 @@ QDateTime utcTime( time_t t ) | |||
49 | return ret; | 49 | return ret; |
50 | } | 50 | } |
51 | |||
51 | QDateTime utcTime( time_t t, const QString& zone ) | 52 | QDateTime utcTime( time_t t, const QString& zone ) |
52 | { | 53 | { |
@@ -71,4 +72,6 @@ QDateTime utcTime( time_t t, const QString& zone ) | |||
71 | return ret; | 72 | return ret; |
72 | } | 73 | } |
74 | |||
75 | |||
73 | time_t to_Time_t( const QDateTime& utc, const QString& str ) | 76 | time_t to_Time_t( const QDateTime& utc, const QString& str ) |
74 | { | 77 | { |
@@ -152,7 +155,6 @@ QDateTime OPimTimeZone::toDateTime( time_t t ) | |||
152 | QDateTime OPimTimeZone::toDateTime( const QDateTime& dt, const OPimTimeZone& zone ) | 155 | QDateTime OPimTimeZone::toDateTime( const QDateTime& dt, const OPimTimeZone& zone ) |
153 | { | 156 | { |
154 | time_t utc = to_Time_t( dt, zone.m_name ); | 157 | time_t utc = to_Time_t( dt, m_name ); |
155 | owarn << "" << utc << " " << zone.m_name << "" << oendl; | 158 | return utcTime( utc, zone.m_name ); |
156 | return utcTime( utc, m_name ); | ||
157 | } | 159 | } |
158 | 160 | ||
@@ -166,5 +168,5 @@ time_t OPimTimeZone::fromDateTime( const QDateTime& time ) | |||
166 | time_t OPimTimeZone::fromUTCDateTime( const QDateTime& time ) | 168 | time_t OPimTimeZone::fromUTCDateTime( const QDateTime& time ) |
167 | { | 169 | { |
168 | return to_Time_t( time, "UTC" ); | 170 | return to_Time_t( time, "Europe/London" ); |
169 | } | 171 | } |
170 | 172 | ||
@@ -180,5 +182,5 @@ OPimTimeZone OPimTimeZone::current() | |||
180 | OPimTimeZone OPimTimeZone::utc() | 182 | OPimTimeZone OPimTimeZone::utc() |
181 | { | 183 | { |
182 | return OPimTimeZone( "UTC" ); | 184 | return OPimTimeZone( "Europe/London" ); |
183 | } | 185 | } |
184 | 186 | ||