diff -r 96907930389d -r 12af337248b1 calendarui/commonutils/src/calendateutils.cpp --- a/calendarui/commonutils/src/calendateutils.cpp Thu Aug 19 09:53:43 2010 +0300 +++ b/calendarui/commonutils/src/calendateutils.cpp Tue Aug 31 15:13:43 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 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" @@ -11,21 +11,20 @@ * * 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. +* Description: ?Description * */ - //debug +#include #include "calendarui_debug.h" -#include -#include // For Min/MaxValidDate +#include "calendateutils.h" +#include // LOCAL CONSTANTS AND MACROS -const TInt KDefaultStartTime(8); // 8 am +const int KDefaultStartTime(8); // 8 am ( 0 to 23 hour scale) // ============================ MEMBER FUNCTIONS ============================== @@ -36,17 +35,22 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TBool CalenDateUtils::OnSameDay( const TTime& aX, const TTime& aY ) + bool CalenDateUtils::onSameDay( const QDateTime& x, const QDateTime& y ) { - 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(); + return x.date().year() == y.date().year() + && x.date().month() == y.date().month() + && x.date().day() == y.date().day(); + } + +// ----------------------------------------------------------------------------- +// ?classname::?member_function +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + bool CalenDateUtils::onSameMonth( const QDateTime& x, const QDateTime& y ) + { + return ( x.date().year() == y.date().year() && x.date().month() == y.date().month() ); } // ----------------------------------------------------------------------------- @@ -55,15 +59,11 @@ // (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() ); + QDateTime CalenDateUtils::beginningOfDay( const QDateTime& startTime ) + { + QTime zeroTime(0,0,0,0); + QDateTime ret(startTime.date(), zeroTime); + return ret; } // ----------------------------------------------------------------------------- @@ -72,36 +72,16 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TTime CalenDateUtils::BeginningOfDay( const TTime& aStartTime ) + QDateTime CalenDateUtils::displayTimeOnDay( const QDateTime& startTime, + const QDateTime& day ) { - 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 ) ) + if( ! onSameDay( startTime, day ) ) { - TRACE_EXIT_POINT; - return BeginningOfDay( aDay ); + return beginningOfDay( day ); } else { - TRACE_EXIT_POINT; - return aStartTime; + return startTime; } } @@ -111,33 +91,15 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TBool CalenDateUtils::TimeRangesIntersect( const TTime& aXStart, - const TTime& aXEnd, - const TTime& aYStart, - const TTime& aYEnd ) + bool CalenDateUtils::timeRangesIntersect( const QDateTime& xStart, + const QDateTime& xEnd, + const QDateTime& yStart, + const QDateTime& yEnd ) { - 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() ); + return (! ( yEnd <= xStart || xEnd <= yStart ) + || (xStart == xEnd && yStart <= xStart && xStart < yEnd) + || (yStart == yEnd && xStart <= yStart && yStart < xEnd) + || (xStart == xEnd && yStart == yEnd && xStart == yStart)); } // ----------------------------------------------------------------------------- @@ -146,37 +108,10 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C void CalenDateUtils::GetDayRangeL( const TTime& aStartDay, - const TTime& aEndDay, - CalCommon::TCalTimeRange& aRange ) + bool CalenDateUtils::isValidDay( const QDateTime& time ) { - 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; + // Interim API supports range from 1900-2100, + return ( minTime() <= time && time <= maxTime() ); } // ----------------------------------------------------------------------------- @@ -185,29 +120,12 @@ // (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() ); - } + QDateTime CalenDateUtils::limitToValidTime( const QDateTime& time ) + { + QDateTime valid = time; + valid = valid > maxTime() ? maxTime() : valid; + valid = valid < minTime() ? minTime() : valid; -// ----------------------------------------------------------------------------- -// ?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; } @@ -218,14 +136,9 @@ // (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; + QDateTime CalenDateUtils::maxTime() + { + return AgendaUtil::maxTime(); } // ----------------------------------------------------------------------------- @@ -234,114 +147,123 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TTime CalenDateUtils::MinTime() + QDateTime CalenDateUtils::minTime() { - TRACE_ENTRY_POINT; + return AgendaUtil::minTime(); + } + +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + int CalenDateUtils::timeOfDay( const QDateTime& dateTime ) + { + QDateTime midnight = beginningOfDay( dateTime ); + int resultInSec = midnight.secsTo(dateTime); - TRACE_EXIT_POINT; - return TCalTime::MinTime(); + return (resultInSec/60); } // ----------------------------------------------------------------------------- // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TTimeIntervalMinutes CalenDateUtils::TimeOfDay( const TTime& aDateTime ) + QDateTime CalenDateUtils::roundToPreviousHour( const QDateTime& dateTime ) { - TRACE_ENTRY_POINT; - - TTime midnight = CalenDateUtils::BeginningOfDay( aDateTime ); - TTimeIntervalMinutes result; - aDateTime.MinutesFrom( midnight, result ); - - TRACE_EXIT_POINT; - return result; + QTime time = dateTime.time(); + time.setHMS(time.hour(),0,0,0); + return QDateTime( dateTime.date(), time ); } // ----------------------------------------------------------------------------- // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TTime CalenDateUtils::RoundToPreviousHour( const TTime& aTime ) + int CalenDateUtils::roundToPreviousHour( const int& minutes ) { - TRACE_ENTRY_POINT; + return ( (minutes / 60) * 60 ); + } - TDateTime dt = aTime.DateTime(); - dt.SetMinute(0); - dt.SetSecond(0); - dt.SetMicroSecond(0); +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + QDateTime CalenDateUtils::now() + { + return QDateTime::currentDateTime(); + } - TRACE_EXIT_POINT; - return TTime( dt ); +// ----------------------------------------------------------------------------- +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + QDateTime CalenDateUtils::today() + { + return CalenDateUtils::beginningOfDay( now() ); } // ----------------------------------------------------------------------------- // (other items were commented in a header). // ----------------------------------------------------------------------------- // -EXPORT_C TTimeIntervalMinutes CalenDateUtils::RoundToPreviousHour( const TTimeIntervalMinutes& aMinutes ) + bool CalenDateUtils::isOnToday( const QDateTime& time ) { - 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; + return CalenDateUtils::onSameDay( time, today() ); } // ----------------------------------------------------------------------------- // (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 ) + QDateTime CalenDateUtils::defaultTime( const QDateTime& date ) { - 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() ); + QDateTime dateTime; // DD:MM:YY @ hh:mm:ss - dateTime = CalenDateUtils::BeginningOfDay( aDate ); + dateTime = CalenDateUtils::beginningOfDay( date ); // DD:MM:YY @ 00:00:00 - dateTime += TTimeIntervalHours( KDefaultStartTime ); // DD:MM:YY @ 08:00 am - - TRACE_EXIT_POINT; + QTime time(KDefaultStartTime, 0, 0, 0); + dateTime.setTime(time); // DD:MM:YY @ 08:00 am + return dateTime; } + // ----------------------------------------------------------------------------- + // (other items were commented in a header). + // ----------------------------------------------------------------------------- + // + QDateTime CalenDateUtils::futureOf(const QDateTime& dateTime, int numOfDays) + { + QDateTime result; + int dayNumber = dateTime.date().day(); + int numOfDaysInMonth = dateTime.date().daysInMonth(); + int month = dateTime.date().month(); + int year = dateTime.date().year(); + int buff = numOfDays; + QDate date(year, month, dayNumber); + while(dayNumber + buff > numOfDaysInMonth) + { + if(month == 12) { + // If December, + month = 1; // January + year++; + } + else { + month++; + } + // Create the qdate with these details + date.setDate(year, month, 1); + // check to see if it goes beyond the next month also + buff = buff - (numOfDaysInMonth - dayNumber); + dayNumber = 0; + numOfDaysInMonth = date.daysInMonth(); + } + + // Add the buff days to the day number to get the result + int day = dayNumber + buff; + + date.setYMD(date.year(), date.month(), day); + result.setDate(date); + result.setTime(dateTime.time()); + return result; + } // End of File