diff -r 000000000000 -r f979ecb2b13e calendarui/commonutils/src/calendateutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/commonutils/src/calendateutils.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,347 @@ +/* +* Copyright (c) 2002-2004 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: Utility class providing utility functions to know beginning of the day, maximum/minimum date allowed in calendar, +* day range, on same day, on same month etc. +* +*/ + + + +//debug +#include "calendarui_debug.h" + +#include +#include // For Min/MaxValidDate + +// LOCAL CONSTANTS AND MACROS +const TInt KDefaultStartTime(8); // 8 am + +// ============================ MEMBER FUNCTIONS ============================== + +// ============================ CalenDateUtils ============================== +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::OnSameDay( const TTime& aX, const TTime& aY ) + { + TRACE_ENTRY_POINT; + + TDateTime x = aX.DateTime(); + TDateTime y = aY.DateTime(); + + TRACE_EXIT_POINT; + return x.Year() == y.Year() + && x.Month() == y.Month() + && x.Day() == y.Day(); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::OnSameMonth( const TTime& aX, const TTime& aY ) + { + TRACE_ENTRY_POINT; + + TDateTime x = aX.DateTime(); + TDateTime y = aY.DateTime(); + + TRACE_EXIT_POINT; + return ( x.Year() == y.Year() && x.Month() == y.Month() ); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::BeginningOfDay( const TTime& aStartTime ) + { + TRACE_ENTRY_POINT; + + TTime zero(TInt64(0)); + + TRACE_EXIT_POINT; + return zero + aStartTime.DaysFrom( zero ); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::DisplayTimeOnDay( const TTime& aStartTime, + const TTime& aDay ) + { + TRACE_ENTRY_POINT; + + if( ! OnSameDay( aStartTime, aDay ) ) + { + TRACE_EXIT_POINT; + return BeginningOfDay( aDay ); + } + else + { + TRACE_EXIT_POINT; + return aStartTime; + } + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::TimeRangesIntersect( const TTime& aXStart, + const TTime& aXEnd, + const TTime& aYStart, + const TTime& aYEnd ) + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return (! ( aYEnd <= aXStart || aXEnd <= aYStart )) + || (aXStart == aXEnd && aYStart <= aXStart && aXStart < aYEnd) + || (aYStart == aYEnd && aXStart <= aYStart && aYStart < aXEnd) + || (aXStart == aXEnd && aYStart == aYEnd && aXStart == aYStart); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::IsValidDay( const TTime& aTime ) + { + TRACE_ENTRY_POINT; + + // Interim API supports range from 1900-2100, + TRACE_EXIT_POINT; + return ( MinTime() <= aTime && aTime <= MaxTime() ); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CalenDateUtils::GetDayRangeL( const TTime& aStartDay, + const TTime& aEndDay, + CalCommon::TCalTimeRange& aRange ) + { + TRACE_ENTRY_POINT; + + TDateTime start( aStartDay.DateTime() ); + TDateTime end( aEndDay.DateTime() ); + + start.SetHour( 0 ); + start.SetMinute( 0 ); + start.SetSecond( 0 ); + start.SetMicroSecond( 0 ); + + end.SetHour( 23 ); + end.SetMinute( 59 ); + end.SetSecond( 59 ); + end.SetMicroSecond( 0 ); + + // prevent overflow + TCalTime endDate; + endDate.SetTimeLocalL( LimitToValidTime( TTime( end ) ) ); + + TCalTime startDate; + startDate.SetTimeLocalL( LimitToValidTime( TTime( start ) ) ); + + CalCommon::TCalTimeRange dayrange( startDate, endDate ); + + aRange = dayrange; + + TRACE_EXIT_POINT; + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::IsNullTimeL( TCalTime& aTime ) + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return( aTime.TimeLocalL() == Time::NullTTime() ); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::LimitToValidTime( const TTime& aTime ) + { + TRACE_ENTRY_POINT; + + TTime valid = aTime; + valid = valid > MaxTime() ? MaxTime() : valid; + valid = valid < MinTime() ? MinTime() : valid; + + TRACE_EXIT_POINT; + return valid; + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// Returns maximum time allowed, 31.12.2100 0:00 is max so 30.12.2100 is last actual +// date to be used. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::MaxTime() + { + TRACE_ENTRY_POINT; + + TTime time( TCalTime::MaxTime() - TTimeIntervalMinutes( 1 ) ); + + TRACE_EXIT_POINT; + return time; + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// Returns minimum time allowed, 1.1.1900 0:00 is min +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::MinTime() + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return TCalTime::MinTime(); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTimeIntervalMinutes CalenDateUtils::TimeOfDay( const TTime& aDateTime ) + { + TRACE_ENTRY_POINT; + + TTime midnight = CalenDateUtils::BeginningOfDay( aDateTime ); + TTimeIntervalMinutes result; + aDateTime.MinutesFrom( midnight, result ); + + TRACE_EXIT_POINT; + return result; + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::RoundToPreviousHour( const TTime& aTime ) + { + TRACE_ENTRY_POINT; + + TDateTime dt = aTime.DateTime(); + dt.SetMinute(0); + dt.SetSecond(0); + dt.SetMicroSecond(0); + + TRACE_EXIT_POINT; + return TTime( dt ); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTimeIntervalMinutes CalenDateUtils::RoundToPreviousHour( const TTimeIntervalMinutes& aMinutes ) + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return TTimeIntervalMinutes( (aMinutes.Int() / 60) * 60 ); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::Now() + { + TRACE_ENTRY_POINT; + + TTime now; + now.HomeTime(); + + TRACE_EXIT_POINT; + return now; + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::Today() + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return CalenDateUtils::BeginningOfDay( Now() ); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CalenDateUtils::IsOnToday( const TTime& aTime ) + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return CalenDateUtils::OnSameDay( aTime, Today() ); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TTime CalenDateUtils::DefaultTime( const TTime& aDate ) + { + TRACE_ENTRY_POINT; + + TTime dateTime( Time::NullTTime() ); + // DD:MM:YY @ hh:mm:ss + dateTime = CalenDateUtils::BeginningOfDay( aDate ); + // DD:MM:YY @ 00:00:00 + dateTime += TTimeIntervalHours( KDefaultStartTime ); // DD:MM:YY @ 08:00 am + + TRACE_EXIT_POINT; + return dateTime; + } + +// End of File