pimappservices/calendar/shared/src/agmattendee.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappservices/calendar/shared/src/agmattendee.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,322 @@
+// Copyright (c) 1997-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 "agmattendee.h"
+
+#include <s32stor.h>
+
+//
+// CAgnAttendee
+
+CAgnAttendee::CAgnAttendee()
+ 	{
+	}
+
+CAgnAttendee* CAgnAttendee::NewL(RReadStream& aStream)
+	{
+	CAgnAttendee* self = new(ELeave)CAgnAttendee();
+	CleanupStack::PushL(self);
+	self->InternalizeL(aStream);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CAgnAttendee* CAgnAttendee::NewL(const TDesC& aAddress, const TDesC& aSentBy) 
+/**
+@internalAll
+*/
+	{
+	CAgnAttendee* self = new(ELeave)CAgnAttendee();
+	CleanupStack::PushL(self);
+	self->ConstructL(aAddress, aSentBy);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+EXPORT_C CAgnAttendee* CAgnAttendee::CloneL() const
+/**
+@internalAll
+*/
+	{
+	CAgnAttendee* attendee = new (ELeave) CAgnAttendee();
+	CleanupStack::PushL(attendee);
+	attendee->CopyL(*this);
+	CleanupStack::Pop(attendee);
+	return attendee;
+	}
+
+void CAgnAttendee::ConstructL(const TDesC& aAddress, const TDesC& aSentBy)
+	{
+	iAddress = aAddress.AllocL();
+	iSentBy = aSentBy.AllocL();
+	iCommonName = KNullDesC().AllocL();
+	}
+
+CAgnAttendee::~CAgnAttendee()
+	{
+	delete iAddress;
+	delete iCommonName;
+	delete iSentBy;
+	}
+
+
+EXPORT_C void CAgnAttendee::SetRole(TAgnRole aRole)
+/** Sets the role of the attendee.
+
+@internalAll
+@param aRole The attendee's role. */
+	{
+	switch(aRole)
+		{
+		case EAttendee:
+			iCalRole = CCalAttendee::EReqParticipant; 
+			break;
+		case EOrganizer:
+            // 	Do nothing. New Organizer person will be created and handled by CCalEntry
+			break;
+		case EOwner:
+			iCalRole = CCalAttendee::EChair; 
+			break;
+		case EDelegate:
+			iCalRole = CCalAttendee::EReqParticipant;
+			break;
+		default:
+			break;	
+		}
+	}
+
+EXPORT_C void CAgnAttendee::SetResponseRequested(TBool aRsvp)
+/** Sets whether a response is requested from the attendee.
+
+@internalAll
+@param aRsvp ETrue if a response is requested, EFalse if a response is not 
+requested. */
+	{
+	iRsvp = aRsvp;
+	}
+
+EXPORT_C void CAgnAttendee::SetCommonNameL(const TDesC& aCommonName)
+/**
+@internalAll
+*/
+	{
+	delete iCommonName;
+	iCommonName = NULL;
+	iCommonName = aCommonName.AllocL();
+	}
+
+EXPORT_C void CAgnAttendee::SetCalRoleL(const CCalAttendee::TCalRole aRole)
+/**
+@internalAll
+*/
+	{
+	iCalRole = aRole;
+	switch(aRole)
+		{
+		case CCalAttendee::EChair:
+		case CCalAttendee::EReqParticipant:
+		case CCalAttendee::EOptParticipant:
+		case CCalAttendee::ENonParticipant:
+		case CCalAttendee::EVCalAttendee:
+		case CCalAttendee::EVCalDelegate:
+		case CCalAttendee::EVCalOwner:
+			break;	
+		default:
+			User::Leave(KErrNotFound);
+			break;		
+		}
+	}
+
+EXPORT_C void CAgnAttendee::SetCalStatus(const CCalAttendee::TCalStatus aStatus)
+/**
+@internalAll
+*/
+	{
+	iCalStatus = aStatus;
+	}
+
+
+// This code should use the chevron operator to externalise
+// iAddress to save space - but cannot be changed since
+// it would break file compatability with AppEngines5.1
+void CAgnAttendee::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream.WriteUint8L(iRsvp);
+	aStream.WriteUint8L(iCalRole);
+	aStream.WriteUint8L(iCalStatus);
+	aStream.WriteUint8L(iExpect);
+	
+	TInt size = 0;		
+	if (iAddress)
+		{
+		size = iAddress->Length();
+		aStream.WriteUint32L(size);
+		aStream.WriteL(iAddress->Des(), size);
+		}
+	else
+		{
+		aStream.WriteUint32L(size);		
+		}
+		
+	size = 0;
+			
+	if (iCommonName)
+		{
+		size = iCommonName->Length();
+		aStream.WriteUint32L(size);
+		aStream.WriteL(iCommonName->Des(), size);
+		}
+	else
+		{
+		aStream.WriteUint32L(size);		
+		}
+
+	size = 0;
+			
+	if (iSentBy)
+		{
+		size = iSentBy->Length();
+		aStream.WriteUint32L(size);
+		aStream.WriteL(iSentBy->Des(), size);
+		}
+	else
+		{
+		aStream.WriteUint32L(size);		
+		}			
+	}
+
+EXPORT_C void CAgnAttendee::SetVCalExpect(CCalAttendee::TVCalExpect aExpect)
+	{
+	iExpect = aExpect;
+	}
+
+EXPORT_C CCalAttendee::TVCalExpect CAgnAttendee::VCalExpect() const
+	{
+	return iExpect;
+	}
+
+void CAgnAttendee::InternalizeL(RReadStream& aStream)
+	{
+	iRsvp = aStream.ReadUint8L();
+	iCalRole = static_cast<CCalAttendee::TCalRole>(aStream.ReadUint8L());
+	iCalStatus = static_cast<CCalAttendee::TCalStatus>(aStream.ReadUint8L());
+	iExpect = static_cast<CCalAttendee::TVCalExpect>(aStream.ReadUint8L());
+	
+	// Delete any possible existing data
+	delete iAddress;
+	iAddress = NULL;
+	
+	delete iCommonName;
+	iCommonName = NULL;
+	
+	delete iSentBy;
+	iSentBy = NULL;
+	
+	//	read in Address
+	TInt size = aStream.ReadUint32L();
+	iAddress = HBufC::NewL(size);
+	TPtr bufPtr = iAddress->Des();
+	aStream.ReadL(bufPtr,size);
+
+	size = aStream.ReadUint32L();
+	iCommonName = HBufC::NewL(size);
+	TPtr bufPtr2 = iCommonName->Des();
+	aStream.ReadL(bufPtr2,size);
+
+	size = aStream.ReadUint32L();
+	iSentBy = HBufC::NewL(size);
+	TPtr bufPtr3 = iSentBy->Des();
+	aStream.ReadL(bufPtr3,size);
+	}
+
+void CAgnAttendee::CopyL(const CAgnAttendee& aSource)
+/** Copies all the details from the source into this attendee.
+
+@param aSource Pointer to the source attendee. */
+	{
+	iRsvp = aSource.ResponseRequested();
+	iCalRole = aSource.CalRole();
+	iCalStatus = aSource.CalStatus();
+	iExpect = aSource.VCalExpect();
+
+	// Delete any address that already exists
+	delete iAddress;
+	iAddress = NULL;
+	iAddress = aSource.Address().AllocL();
+	
+	delete iCommonName;
+	iCommonName = NULL;
+	iCommonName = aSource.CommonName().AllocL();
+	
+	delete iSentBy;
+	iSentBy = NULL;
+	iSentBy = aSource.SentBy().AllocL();
+	}
+
+EXPORT_C const TDesC& CAgnAttendee::Address() const
+/**
+@internalAll
+*/
+	{
+	__ASSERT_DEBUG(iAddress,User::Invariant());
+	return *iAddress;
+	}
+
+EXPORT_C const TDesC& CAgnAttendee::CommonName() const
+/**
+@internalAll
+*/
+	{
+	__ASSERT_DEBUG(iCommonName,User::Invariant());
+	return *iCommonName;
+	}
+
+EXPORT_C const TDesC& CAgnAttendee::SentBy() const
+/**
+@internalAll
+*/
+	{
+	__ASSERT_DEBUG(iSentBy,User::Invariant());
+	return *iSentBy;
+	}
+
+
+EXPORT_C TBool CAgnAttendee::ResponseRequested() const
+/** Tests whether a response has been requested from the attendee.
+
+@internalAll
+@return ETrue if a response is requested, EFalse if a response is not requested. */
+	{
+	return iRsvp;
+	}
+
+EXPORT_C CCalAttendee::TCalRole CAgnAttendee::CalRole() const
+/**
+The role of the attendee to a meeting (e.g. chair, required participant, optional participant).
+@internalAll
+*/
+	{
+	return iCalRole;
+	}
+
+EXPORT_C CCalAttendee::TCalStatus CAgnAttendee::CalStatus() const
+/**
+The status of the attendee to a meeting (e.g. tentative, declined, accepted).
+@internalAll
+*/
+	{
+	return iCalStatus;
+	}
+