--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_calendar/calendarservice/src/entryattributes.cpp Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,1087 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 <calentry.h>
+#include <calrrule.h>
+#include <caluser.h>
+
+#include "entryattributes.h"
+#include "calendarconstants.h"
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAttendeeInfo* CAttendeeInfo::NewL( const TDesC& aAddress )
+ {
+ CAttendeeInfo* self = new (ELeave) CAttendeeInfo;
+ CleanupStack::PushL( self );
+ self->ConstructL( aAddress );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CAttendeeInfo::CAttendeeInfo()
+ {
+ iResponse = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// 2nd-phased constructor of two phase construction
+// ---------------------------------------------------------------------------
+//
+void CAttendeeInfo::ConstructL( const TDesC& aAddress )
+ {
+ if( aAddress.Length() )
+ {
+ iAddress = aAddress.AllocL();
+ }
+ else
+ User::Leave(KErrArgument);
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CAttendeeInfo::~CAttendeeInfo()
+ {
+ delete iAddress;
+ delete iCommonName;
+ delete iRole;
+ delete iStatus;
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::SetCommonNameL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAttendeeInfo::SetCommonNameL( const TDesC& aName )
+ {
+ if( aName.Length() )
+ {
+ iCommonName = aName.AllocL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::SetRoleL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAttendeeInfo::SetRoleL( const TDesC& aRole )
+ {
+ if( aRole.Length() )
+ {
+ iRole = aRole.AllocL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::SetStatusL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAttendeeInfo::SetStatusL( const TDesC& aStatus )
+ {
+ if( aStatus.Length() )
+ {
+ iStatus = aStatus.AllocL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::SetRsvp
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAttendeeInfo::SetRsvp( const TBool aResponse )
+ {
+ iResponse = aResponse;
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::Address
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CAttendeeInfo::Address()
+ {
+ return iAddress ? TPtrC( *iAddress ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::CommonName
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CAttendeeInfo::CommonName()
+ {
+ return iCommonName ? TPtrC( *iCommonName ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::Role
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CAttendeeInfo::Role()
+ {
+ return iRole ? TPtrC( *iRole ) : TPtrC();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::Statuse
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CAttendeeInfo::Status()
+ {
+ return iStatus ? TPtrC( *iStatus ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CAttendeeInfo::ResponseRequested
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CAttendeeInfo::ResponseRequested()
+ {
+ return iResponse;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CRepeatInfo* CRepeatInfo::NewL( const TInt aType )
+ {
+ CRepeatInfo* self = new (ELeave) CRepeatInfo;
+ CleanupStack::PushL( self );
+ self->ConstructL( aType );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CRepeatInfo::CRepeatInfo()
+ {
+ iInterval = 1;
+ iType = TCalRRule::EInvalid;
+ }
+
+// ---------------------------------------------------------------------------
+// 2nd-phased constructor of two phase construction
+// ---------------------------------------------------------------------------
+//
+void CRepeatInfo::ConstructL( const TInt aType )
+ {
+ if ( aType == KRRTypeDaily )
+ iType = TCalRRule::EDaily;
+
+ else if ( aType == KRRTypeWeekly )
+ iType = TCalRRule::EWeekly;
+
+ else if ( aType == KRRTypeMonthly )
+ iType = TCalRRule::EMonthly;
+
+ else if ( aType == KRRTypeYearly )
+ iType = TCalRRule::EYearly;
+
+ else
+ User::Leave(KErrArgument);
+
+ iRule.SetType( iType );
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CRepeatInfo::~CRepeatInfo()
+ {
+ iMonthDays.Close();
+ iMonthDates.Close();
+ iWeekDays.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetCount
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetCount( const TUint aCount )
+ {
+ iRule.SetCount( aCount );
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetUntilTimeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetUntilTimeL( const TTime& aUntilTime )
+ {
+ if( aUntilTime < TCalTime::MinTime() || aUntilTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iUntilTime.SetTimeUtcL( aUntilTime );
+ iRule.SetUntil( iUntilTime );
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetStartTimeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetStartTimeL( const TTime& aStartTime )
+ {
+ if( aStartTime < TCalTime::MinTime() || aStartTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iStartTime.SetTimeUtcL( aStartTime );
+ iRule.SetDtStart( iStartTime );
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetInterval
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetInterval( const TInt aInterval )
+ {
+ iInterval = aInterval;
+ iRule.SetInterval( iInterval );
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetDaysInWeek
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetDaysInWeek( const RArray<TDay>& aDays )
+ {
+ if( iType == TCalRRule::EWeekly )
+ {
+ for( int i=0 ; i<aDays.Count() ; i++)
+ iWeekDays.Append( aDays[i] );
+ iRule.SetByDay( iWeekDays );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetMonthDates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetMonthDates( const RArray<TInt>& aMonthDates )
+ {
+ if( iType == TCalRRule::EMonthly )
+ {
+ // sets the month dates for the monthly repeat
+ for( int i=0 ; i<aMonthDates.Count() ; i++)
+ iMonthDates.Append( aMonthDates[i] );
+ iRule.SetByMonthDay( iMonthDates );
+ }
+
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetMonthDays
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetMonthDays( const RArray<TCalRRule::TDayOfMonth>& aDays )
+ {
+ if( iType == TCalRRule::EMonthly || iType == TCalRRule::EYearly )
+ {
+ TInt count = aDays.Count();
+ // sets the days of the month for monthly and yearly repeats
+ for( TInt i=0 ; i < count ; i++)
+ {
+ iMonthDays.Append( aDays[i] );
+ }
+ iRule.SetByDay( iMonthDays );
+ }
+
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetMonth
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetMonth( const TInt aMonth)
+ {
+ // sets the month for a yearly repeat
+ if( iType == TCalRRule::EYearly )
+ {
+ iMonth = TMonth( aMonth );
+ RArray<TMonth> monthList;
+ monthList.Append( iMonth );
+ iRule.SetByMonth( monthList );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::SetWeekStart
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CRepeatInfo::SetWeekStart( const TInt aDay )
+ {
+ iWkSt = TDay( aDay );
+ iRule.SetWkSt( iWkSt );
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::WeekStart
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TDay CRepeatInfo::WeekStart()
+ {
+ return iWkSt;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::Month
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TMonth CRepeatInfo::Month()
+ {
+ return iMonth;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::DaysInWeek
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RArray<TDay>& CRepeatInfo::DaysInWeek()
+ {
+ return iWeekDays;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::DaysInMonth
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RArray<TCalRRule::TDayOfMonth>& CRepeatInfo::DaysInMonth()
+ {
+ return iMonthDays;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::DatesInMonth
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RArray<TInt>& CRepeatInfo::DatesInMonth()
+ {
+ return iMonthDates;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::Interval
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CRepeatInfo::Interval()
+ {
+ return iInterval;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::UntilDate
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalTime& CRepeatInfo::UntilDate()
+ {
+ return iUntilTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::Type
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalRRule::TType CRepeatInfo::Type()
+ {
+ return iType;
+ }
+
+// ---------------------------------------------------------------------------
+// CRepeatInfo::GetRepeatRule
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalRRule& CRepeatInfo::GetRepeatRule()
+ {
+ return iRule;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CEntryAttributes* CEntryAttributes::NewL( const TDesC& aType )
+ {
+ CEntryAttributes* self = new (ELeave) CEntryAttributes;
+ CleanupStack::PushL( self );
+ self->ConstructL( aType );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::NewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CEntryAttributes* CEntryAttributes::NewL()
+ {
+ return new (ELeave) CEntryAttributes;
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CEntryAttributes::~CEntryAttributes()
+ {
+ delete iSummary;
+ delete iDescription;
+ delete iLocation;
+ delete iPhoneOwner;
+ delete iOrganizer;
+ iRepeatDates.Close();
+ iExDates.Close();
+
+ iAttendees.ResetAndDestroy();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CEntryAttributes::ConstructL( const TDesC& aType )
+ {
+ SetTypeL( aType );
+ iStartTime.SetTimeUtcL( Time::NullTTime() );
+ iEndTime.SetTimeUtcL( Time::NullTTime() );
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetTypeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetTypeL( const TDesC& aType )
+ {
+ if ( aType.CompareF(KEntryAppt) == 0 )
+ iType = CCalEntry::EAppt; // apointment entry
+
+ else if ( aType.CompareF(KEntryTodo) == 0 )
+ iType = CCalEntry::ETodo; // todo entry
+
+ else if ( aType.CompareF(KEntryEvent) == 0 )
+ iType = CCalEntry::EEvent; // event entry
+
+ else if ( aType.CompareF(KEntryReminder) == 0 )
+ iType = CCalEntry::EReminder; // reminder entry
+
+ else if ( aType.CompareF(KEntryAnniv) == 0 )
+ iType = CCalEntry::EAnniv; // anniversary entry
+
+ else
+ User::Leave(KErrArgument);
+
+ iSetAttributes |= EEntryType;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetStartTimeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetStartTimeL( const TTime& aStartTime )
+ {
+ if ( aStartTime != Time::NullTTime())
+ {
+ if( aStartTime < TCalTime::MinTime() || aStartTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iSetAttributes |= EStartTime;
+ iStartTime.SetTimeUtcL( aStartTime );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetEndTimeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetEndTimeL( const TTime& aEndTime )
+ {
+ if ( aEndTime != Time::NullTTime() )
+ {
+ if( aEndTime < TCalTime::MinTime() || aEndTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iEndTime.SetTimeUtcL( aEndTime );
+ iSetAttributes |= EEndTime;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetInstanceStartTimeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetInstanceStartTimeL( const TTime& aInsTime )
+ {
+ if ( aInsTime != Time::NullTTime() )
+ {
+ if( aInsTime < TCalTime::MinTime() || aInsTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iInstanceStartTime.SetTimeUtcL( aInsTime );
+ iSetAttributes |= EInsStartTime;
+
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetAlarm
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetAlarm( const TTime& aAlarmTime)
+ {
+ if( aAlarmTime < TCalTime::MinTime() || aAlarmTime > TCalTime::MaxTime() )
+ User::Leave( KErrArgument );
+
+ iAlarmTime = aAlarmTime;
+ iSetAttributes |= EAlarmTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetSequenceNumber
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetSequenceNumber( TInt aSeqNum )
+ {
+ iSequenceNum = aSeqNum;
+ iSetAttributes |= ESeqNum;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetEntryStatusL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetEntryStatusL( const TDesC& aStatus )
+ {
+ if ( aStatus.CompareF(KNullStatus) == 0 )
+ iEntryStatus = CCalEntry::ENullStatus; // null status
+
+ else if ( aStatus.CompareF(KStatusTentative) == 0 )
+ iEntryStatus = CCalEntry::ETentative; // status is tentative
+
+ else if ( aStatus.CompareF(KStatusConfirmed) == 0 )
+ iEntryStatus = CCalEntry::EConfirmed; // status is confirmed
+
+ else if ( aStatus.CompareF(KStatusCancelled) == 0 )
+ iEntryStatus = CCalEntry::ECancelled; // status is cancelled
+
+ else if ( aStatus.CompareF(KStatusTodoNeedsAction) == 0 )
+ iEntryStatus = CCalEntry::ETodoNeedsAction; //status of todo is needs action
+
+ else if ( aStatus.CompareF(KStatusTodoCompleted) == 0 )
+ iEntryStatus = CCalEntry::ETodoCompleted;//status of todo is completed
+
+ else if ( aStatus.CompareF(KStatusTodoInProcess) == 0 )
+ iEntryStatus = CCalEntry::ETodoInProcess; // status of todo is in process
+
+ else
+ User::Leave(KErrArgument);
+
+ iSetAttributes |= EStatus;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetPhoneOwnerDataL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetPhoneOwnerDataL( const TDesC& aPhoneOwner )
+ {
+ if( aPhoneOwner.Length() )
+ {
+ iPhoneOwner = aPhoneOwner.AllocL();
+ iSetAttributes |= EPhoneOwner;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetOrganizerDataL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetOrganizerDataL( CAttendeeInfo* aOrganizer )
+ {
+ if( aOrganizer )
+ {
+ iOrganizer = CCalUser::NewL( aOrganizer->Address() );
+
+ if( aOrganizer->CommonName().Length() )
+ iOrganizer->SetCommonNameL( aOrganizer->CommonName() );
+
+ iSetAttributes |= EOrganizer;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::AddAttendeeL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::AddAttendeeL( CAttendeeInfo* aAttendee )
+ {
+ if( aAttendee )
+ {
+ CCalAttendee* attendee = CCalAttendee::NewL( aAttendee->Address() );
+ if( aAttendee->CommonName().Length() )
+ attendee->SetCommonNameL( aAttendee->CommonName() );
+ TPtrC role = aAttendee->Role();
+ if( role.Length() )
+ {
+ CCalAttendee::TCalRole attRole = CCalAttendee::EReqParticipant;
+
+ if ( role.CompareF(KAttRoleReqParticipant) == 0 )
+ attRole = CCalAttendee::EReqParticipant; // required participant
+
+ else if ( role.CompareF(KAttRoleOptParticipant) == 0 )
+ attRole = CCalAttendee::EOptParticipant; // optional participant
+
+ else if ( role.CompareF(KAttRoleNonParticipant) == 0 )
+ attRole = CCalAttendee::ENonParticipant; // non - participant
+
+ else if ( role.CompareF(KAttRoleChair) == 0 )
+ attRole = CCalAttendee::EChair; // chair
+
+ else
+ User::Leave(KErrArgument);
+
+ attendee->SetRoleL( attRole );
+ }
+
+ TPtrC status = aAttendee->Status();
+ if( status.Length() )
+ {
+ CCalAttendee::TCalStatus attStatus = CCalAttendee::ENeedsAction;
+
+ if ( status.CompareF(KAttStatusTentative) == 0 )
+ attStatus = CCalAttendee::ETentative; // attendee's status is tentative
+
+ else if ( status.CompareF(KAttStatusConfirmed) == 0 )
+ attStatus = CCalAttendee::EConfirmed; // attendee has confirmed participation
+
+ else if ( status.CompareF(KAttStatusAccepted) == 0 )
+ attStatus = CCalAttendee::EAccepted; // attendee has accepted
+
+ else if ( status.CompareF(KAttStatusNeedsAction) == 0 )
+ attStatus = CCalAttendee::ENeedsAction; // status needs action
+
+ else if ( status.CompareF(KAttStatusDeclined) == 0 )
+ attStatus = CCalAttendee::EDeclined;// attendee has declined
+
+ else if ( status.CompareF(KAttStatusInProcess) == 0 )
+ attStatus = CCalAttendee::EInProcess;// status in process
+
+ else if ( status.CompareF(KAttStatusCompleted) == 0 )
+ attStatus = CCalAttendee::ECompleted; // status is completed
+
+ else if ( status.CompareF(KAttStatusDelegated) == 0 )
+ attStatus = CCalAttendee::EDelegated;// attendee has delegated request
+
+ else
+ User::Leave(KErrArgument);
+
+ attendee->SetStatusL( attStatus );
+ }
+ attendee->SetResponseRequested( aAttendee->ResponseRequested() );
+ iAttendees.AppendL( attendee );
+ iSetAttributes |= EAttendees;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::AddRepeatDateL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::AddRepeatDateL( const TTime& aRepeatDate )
+ {
+ if ( aRepeatDate != Time::NullTTime())
+ {
+ TCalTime caltime;
+ caltime.SetTimeUtcL( aRepeatDate );
+ iRepeatDates.Append( caltime );
+ iSetAttributes |= ERepeatDates;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::AddExceptionDateL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::AddExceptionDateL( const TTime& aExDate )
+ {
+ if ( aExDate != Time::NullTTime())
+ {
+ TCalTime caltime;
+ caltime.SetTimeUtcL( aExDate );
+ iExDates.Append( caltime );
+ iSetAttributes |= EExDates;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetReplicationL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetReplicationL( const TDesC& aRepStatus )
+ {
+ if ( aRepStatus.CompareF( KReplOpen ) == 0 )
+ iRepStatus = CCalEntry::EOpen; // open
+ else if ( aRepStatus.CompareF( KReplPrivate ) == 0 )
+ iRepStatus = CCalEntry::EPrivate; //private
+ else if ( aRepStatus.CompareF( KReplRest ) == 0 )
+ iRepStatus = CCalEntry::ERestricted;//restricted
+ else
+ User::Leave(KErrArgument);
+
+ iSetAttributes |= EReplication;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetSummaryL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetSummaryL( const TDesC& aSummary )
+ {
+ if( aSummary.Length() )
+ {
+ iSummary = aSummary.AllocL();
+ iSetAttributes |= ESummary;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetDescriptionL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetDescriptionL( const TDesC& aDescription )
+ {
+ if( aDescription.Length() )
+ {
+ iDescription = aDescription.AllocL();
+ iSetAttributes |= EDescription;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetLocationL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetLocationL( const TDesC& aLocation )
+ {
+ if( aLocation.Length() )
+ {
+ iLocation = aLocation.AllocL();
+ iSetAttributes |= ELocation;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetMethodL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetMethodL( const TDesC& aMethod )
+ {
+ //Sets the entry's method property for group scheduling
+ if ( aMethod.CompareF(KMethodNone) == 0 )
+ iMethod = CCalEntry::EMethodNone;
+
+ else if ( aMethod.CompareF(KMethodPublish) == 0 )
+ iMethod = CCalEntry::EMethodPublish;
+
+ else if ( aMethod.CompareF(KMethodRequest) == 0 )
+ iMethod = CCalEntry::EMethodRequest;
+
+ else if ( aMethod.CompareF(KMethodReply) == 0 )
+ iMethod = CCalEntry::EMethodReply;
+
+ else if ( aMethod.CompareF(KMethodAdd) == 0 )
+ iMethod = CCalEntry::EMethodAdd;
+
+ else if ( aMethod.CompareF(KMethodCancel) == 0 )
+ iMethod = CCalEntry::EMethodCancel;
+
+ else if ( aMethod.CompareF(KMethodRefresh) == 0 )
+ iMethod = CCalEntry::EMethodRefresh;
+
+ else if ( aMethod.CompareF(KMethodCounter) == 0 )
+ iMethod = CCalEntry::EMethodCounter;
+
+ else if ( aMethod.CompareF(KMethodDecCounter) == 0 )
+ iMethod = CCalEntry::EMethodDeclineCounter;
+
+ else
+ User::Leave(KErrArgument);
+
+ iSetAttributes |= EMethod;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetPriority
+// ---------------------------------------------------------------------------
+//
+EXPORT_C int CEntryAttributes::SetPriority( TInt aPriority )
+ {
+ if( aPriority < 0 || aPriority > 255 )
+ return KErrArgument;
+ iPriority = aPriority;
+ iSetAttributes |= EPriority;
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetLocalUid
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetLocalUid( const TCalLocalUid aLUid)
+ {
+ iLocal = aLUid;
+ iSetAttributes |= ELocalUid;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SetRepeatRule
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CEntryAttributes::SetRepeatRule( CRepeatInfo* aRptInfo)
+ {
+ if ( aRptInfo )
+ iRepeatRule = aRptInfo->GetRepeatRule();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::StartTime
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalTime& CEntryAttributes::StartTime()
+ {
+ return iStartTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::EndTime
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalTime& CEntryAttributes::EndTime()
+ {
+ return iEndTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::InstanceStartTime
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalTime& CEntryAttributes::InstanceStartTime()
+ {
+ return iInstanceStartTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::ReplicationStatus
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCalEntry::TReplicationStatus CEntryAttributes::ReplicationStatus()
+ {
+ return iRepStatus;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Summary
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CEntryAttributes::Summary()
+ {
+ return iSummary ? TPtrC( *iSummary ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Description
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CEntryAttributes::Description()
+ {
+ return iDescription ? TPtrC( *iDescription ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Location
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CEntryAttributes::Location()
+ {
+ return iLocation ? TPtrC( *iLocation ) : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::EntryType
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCalEntry::TType CEntryAttributes::EntryType()
+ {
+ return iType;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::SequenceNumber
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CEntryAttributes::SequenceNumber()
+ {
+ return iSequenceNum;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::AlarmTime
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TTime CEntryAttributes::AlarmTime()
+ {
+ return iAlarmTime;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::EntryStatus
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCalEntry::TStatus CEntryAttributes::EntryStatus()
+ {
+ return iEntryStatus;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::PhoneOwner
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CEntryAttributes::PhoneOwner()
+ {
+ return iPhoneOwner ? *iPhoneOwner : TPtrC();
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Organizer
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCalUser* CEntryAttributes::Organizer()
+ {
+ return iOrganizer;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::AttendeeList
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RPointerArray<CCalAttendee>& CEntryAttributes::AttendeeList()
+ {
+ return iAttendees;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::RepeatDates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RArray<TCalTime>& CEntryAttributes::RepeatDates()
+ {
+ return iRepeatDates;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::ExceptionDates
+// ---------------------------------------------------------------------------
+//
+EXPORT_C RArray<TCalTime>& CEntryAttributes::ExceptionDates()
+ {
+ return iExDates;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::RepeatRuleL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalRRule& CEntryAttributes::RepeatRuleL()
+ {
+ if ( iType == CCalEntry::EAnniv )
+ // explicitly set repeat rule for anniversary type entries
+ {
+ TTime stTime = iStartTime.TimeLocalL();
+ TTime zero(TInt64(0));
+ stTime = zero + stTime.DaysFrom(zero);
+ iStartTime.SetTimeLocalFloatingL( stTime );
+ TCalRRule rrule( TCalRRule::EYearly );
+ rrule.SetDtStart( iStartTime );
+ rrule.SetInterval( 1 ); // once a year
+ iRepeatRule = rrule ;
+ }
+ return iRepeatRule;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Method
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCalEntry::TMethod CEntryAttributes::Method()
+ {
+ return iMethod;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::Priority
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CEntryAttributes::Priority()
+ {
+ return iPriority;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::LocalUid
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCalLocalUid CEntryAttributes::LocalUid()
+ {
+ return iLocal;
+ }
+
+// ---------------------------------------------------------------------------
+// CEntryAttributes::ModifiedAttributes
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt32 CEntryAttributes::ModifiedAttributes()
+ {
+ return iSetAttributes;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CEntryAttributes::CEntryAttributes()
+ {
+ iMethod = CCalEntry::EMethodNone;
+ iSequenceNum = 0;
+ iRepStatus = CCalEntry::EOpen;
+ iPriority = 0;
+ iPhoneOwner = NULL;
+ iOrganizer = NULL;
+ iLocation = NULL;
+ iAlarmTime = NULL;
+ iEntryStatus = CCalEntry::ENullStatus;
+ }
+