--- /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 <calendateutils.h>
+#include <caltime.h> // 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