diff -r 000000000000 -r f979ecb2b13e pimappservices/calendar/client/src/caltime.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappservices/calendar/client/src/caltime.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,184 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +/** + @file + @publishedAll + @released +*/ + + +#include + +// dependency on AgnModel for time constants and conversions +#include "agmdate.h" + +/** Constructor for the TCalTime class. +The time is initialised to Time::NullTTime(). + +@publishedAll +@released +@capability None +*/ +EXPORT_C TCalTime::TCalTime() + { + iTime = Time::NullTTime(); + iTimeMode = EFixedUtc; + iReserved1 = 0; + iReserved2 = 0; + } + +/** +Sets the time to a UTC value. Time values set using this API are said to be "fixed". +Fixed times in UTC format can be converted to the equivalent local time in any time +zone using RTz, or converted to the local time of the current system time zone by +calling TimeLocalL(). This is described in RFC2445 as FORM #2: DATE WITH UTC TIME. + +@capability None +@param aUtcTime The time to be set in UTC. +@leave KErrArgument If the given time is not null but smaller than TCalTime::MinTime() or bigger than TCalTime::MaxTime() +*/ +EXPORT_C void TCalTime::SetTimeUtcL(const TTime& aUtcTime) + { + if (aUtcTime != Time::NullTTime() && (aUtcTime < MinTime() || aUtcTime > MaxTime())) + { + User::Leave(KErrArgument); + } + iTime = aUtcTime; + iTimeMode = static_cast(EFixedUtc); + } + +/** +Sets the time to a local time value bound to the current system time zone. Time values +set using this API are said to be "fixed". The local time can be converted to an +equivalent local time in any other time zone by calling TimeUtcL() and then converting +the UTC time to the equivalent local time zone using RTz. This is described in RFC2445 +as FORM #3: DATE WITH LOCAL TIME AND TIME ZONE REFERENCE. + +@capability None +@param aLocalTime The time to be set in system-local time. +@leave KErrArgument If the given time is not null but smaller than TCalTime::MinTime() or bigger than TCalTime::MaxTime() +*/ +EXPORT_C void TCalTime::SetTimeLocalL(const TTime& aLocalTime) + { + TTime utcTime = AgnDateTime::ConvertToUtcTimeL(aLocalTime); + if (utcTime != Time::NullTTime() && (utcTime < MinTime() || utcTime > MaxTime())) + { + User::Leave(KErrArgument); + } + iTime = utcTime; + iTimeMode = static_cast(EFixedUtc); + } + +/** +Returns the fixed or floating time as UTC. + +@capability None +@return The time in UTC. +*/ +EXPORT_C TTime TCalTime::TimeUtcL() const + { + if (TimeMode() == EFloating) + { + return AgnDateTime::ConvertToUtcTimeL(iTime); + } + else + { + return iTime; + } + } + +/** +Returns the fixed or floating time as local time. If the time is fixed, the time is converted to the local time of the +current system time zone before being returned. + +@capability None +@return The time in system-local time. +*/ +EXPORT_C TTime TCalTime::TimeLocalL() const + { + if (TimeMode() == EFloating) + { + return iTime; + } + else + { + return AgnDateTime::ConvertToLocalTimeL(iTime); + } + } + +/** Get the maximum time allowed in the Interim API. +Note that this time is the same for UTC and system local time - it can't be converted. + +@publishedAll +@released +@capability None +@return The maximum time. +*/ +EXPORT_C TTime TCalTime::MaxTime() + { + return AgnDateTime::MaxDate(); + } + +/** Get the minimum time allowed in the Interim API. +Note that this time is the same for UTC and system local time - it can't be converted. + +@publishedAll +@released +@capability None +@return The minimum time. +*/ +EXPORT_C TTime TCalTime::MinTime() + { + return AgnDateTime::MinDate(); + } + + +/** +Sets the time to a local floating time value. Time values set using this API are said to be +"floating" and are not bound to any time zone in particular. Floating time is +used to represent the same time regardless of which time zone it is currently being +observed from. This is described in RFC2445 as FORM #1: DATE WITH LOCAL TIME. + +@publishedAll +@released + +@capability None +@param aLocalTime The time to be set in floating local time. +@leave KErrArgument If the given time is not null but smaller than TCalTime::MinTime() or bigger than TCalTime::MaxTime() +*/ +EXPORT_C void TCalTime::SetTimeLocalFloatingL(const TTime& aLocalTime) + { + if (aLocalTime != Time::NullTTime() && (aLocalTime < MinTime() || aLocalTime > MaxTime())) + { + User::Leave(KErrArgument); + } + iTime = aLocalTime; + iTimeMode = static_cast(EFloating); + } + +/** +Returns the time mode that the time has been set to, whether it be floating local time, +fixed UTC time, or fixed local time. + +@publishedAll +@released + +@return Time mode of the calendar time +*/ +EXPORT_C TCalTime::TTimeMode TCalTime::TimeMode() const + { + return static_cast(iTimeMode); + }