diff -r 000000000000 -r f979ecb2b13e pimappservices/calendar/shared/src/agmattendee.cpp --- /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 + +// +// 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(aStream.ReadUint8L()); + iCalStatus = static_cast(aStream.ReadUint8L()); + iExpect = static_cast(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; + } +