messagingfw/msgsrvnstore/server/src/MSVTIME.CPP
changeset 22 bde600d88860
child 35 f8ad95794a08
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgsrvnstore/server/src/MSVTIME.CPP	Fri Jun 04 10:32:16 2010 +0100
@@ -0,0 +1,87 @@
+// Copyright (c) 1999-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:
+//
+
+#include "MSVTIME.H"
+#include "MSVPANIC.H"
+
+const TMsvDays KMsvNullDays = 0xffff;
+
+TMsvTime::TMsvTime()
+: iDays(KMsvNullDays)
+	{
+	}
+
+void TMsvTime::SetTime(const TTime& aTime)
+	{
+	if (aTime == Time::NullTTime())
+		iDays = KMsvNullDays;
+	else
+		{
+		__ASSERT_ALWAYS(aTime >= MinTime() && aTime <= MaxTime(), PanicServer(EMsvDateOutsideValidRange));
+		iDays = (TMsvDays)aTime.DaysFrom(MinTime()).Int();
+		iMinutes = (TMsvMinutes)(aTime.DateTime().Hour() * 60 + aTime.DateTime().Minute());
+		}
+	}
+
+void TMsvTime::GetTime(TTime& aTime) const
+	{
+	if (IsNull())
+		aTime = Time::NullTTime();
+	else
+		{
+		aTime = MinTime();
+		aTime += TTimeIntervalDays(iDays);
+		aTime += TTimeIntervalMinutes(iMinutes);
+		}
+	}
+
+TBool TMsvTime::operator>=(const TTime& aTime) const
+	{
+	TTime thisTime;
+	GetTime(thisTime);
+
+	TDateTime dt = aTime.DateTime();
+	dt.SetSecond(0);
+	dt.SetMicroSecond(0);
+
+	return thisTime >= TTime(dt);
+	}
+
+TBool TMsvTime::IsNull() const
+	{
+	return iDays == KMsvNullDays;
+	}
+
+void TMsvTime::InternalizeL(RReadStream& aStream)
+	{
+	aStream >> iDays;
+	aStream >> iMinutes;
+	}
+
+void TMsvTime::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream << iDays;
+	aStream << iMinutes;
+	}
+
+TTime TMsvTime::MinTime() const
+	{
+	return TTime(TDateTime(1900,EJanuary,0,0,0,0,0));
+	}
+
+TTime TMsvTime::MaxTime() const
+	{
+	return TTime(TDateTime(2100,EDecember,30,23,59,59,0));
+	}