--- a/creator/engine/src/creator_calendarelement.cpp Tue Aug 31 15:15:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,595 +0,0 @@
-/*
-* Copyright (c) 2010 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 "creator_calendarelement.h"
-#include "creator_traces.h"
-#include "creator_calendar.h"
-
-using namespace creatorcalendar;
-
-CCreatorCalendarElement* CCreatorCalendarElement::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext )
- {
- CCreatorCalendarElement* self = new (ELeave) CCreatorCalendarElement(aEngine);
- CleanupStack::PushL(self);
- self->ConstructL(aName, aContext);
- CleanupStack::Pop(self);
- return self;
- }
-
-void CCreatorCalendarElement::FillEntryParamsL(TEntryType aType, const RPointerArray<CCreatorScriptElement>& fields, CCalenderInterimParameters* parameters)
- {
- if( parameters == 0 )
- return;
-
- TBool startResolved = EFalse;
- TBool endResolved = EFalse;
-
- for( TInt i = 0; i < fields.Count(); ++i )
- {
- TPtrC elemName = fields[i]->Name();
- TPtrC elemContent = fields[i]->Content();
- const CCreatorScriptAttribute* randomAttr = fields[i]->FindAttributeByName(KRandomLength);
-
- if( elemName == KSummary || elemName == KDescription )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- TPtrC reason;
- if( aType == EAppointment )
- {
- reason.Set(iEngine->RandomString (CCreatorEngine::EMeetingReason ));
- }
- else if( aType == EEvent )
- {
- reason.Set(iEngine->RandomString(CCreatorEngine::EMemoText));
- }
- else if( aType == EReminder )
- {
- reason.Set(iEngine->RandomString(CCreatorEngine::EReminderText));
- }
- else if( aType == EAnniversary )
- {
- reason.Set(iEngine->RandomString(CCreatorEngine::EAnniversaryReason));
- }
- else if( aType == ETodo )
- {
- reason.Set(iEngine->RandomString(CCreatorEngine::EToDoText));
- }
-
- if( elemName == KDescription )
- {
- delete parameters->iDescription;
- parameters->iDescription = 0;
- parameters->iDescription = HBufC::NewL(reason.Length());
- parameters->iDescription->Des().Copy(reason);
- }
- else if(elemName == KSummary)
- {
- delete parameters->iSummary;
- parameters->iSummary = 0;
- parameters->iSummary = HBufC::NewL(reason.Length());
- parameters->iSummary->Des().Copy(reason);
- }
- }
- else if( elemName == KDescription )
- {
- delete parameters->iDescription;
- parameters->iDescription = 0;
- parameters->iDescription = HBufC::NewL(elemContent.Length());
- parameters->iDescription->Des().Copy(elemContent);
- }
- else if( elemName == KSummary)
- {
- delete parameters->iSummary;
- parameters->iSummary = 0;
- parameters->iSummary = HBufC::NewL(elemContent.Length());
- parameters->iSummary->Des().Copy(elemContent);
- }
- }
- else if( elemName == KLocation )
- {
- delete parameters->iLocation;
- parameters->iLocation = 0;
-
- if( randomAttr || elemContent.Length() == 0 )
- {
- TPtrC reason = iEngine->RandomString (CCreatorEngine::EMeetingPlace );
- parameters->iLocation = HBufC::NewL(reason.Length());
- parameters->iLocation->Des().Copy(reason);
- }
- else
- {
- parameters->iLocation = HBufC::NewL(elemContent.Length());
- parameters->iLocation->Des().Copy(elemContent);
- }
- }
- else if( elemName == KStarttime )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- // Random start time used. If end time is already resolved, let's use that one for the basis.
- if( endResolved )
- {
- parameters->iStartTime = iEngine->RandomTime(parameters->iEndTime, CCreatorEngine::EDatePast);
- }
- else
- {
- // Past or future:
- CCreatorEngine::TRandomDateType pastOrfuture =
- (CCreatorEngine::TRandomDateType) iEngine->RandomNumber((TInt) CCreatorEngine::EDatePast,
- (TInt) CCreatorEngine::EDateFuture);
-
- parameters->iStartTime =
- iEngine->RandomTime(iEngine->RandomDate(pastOrfuture), pastOrfuture);
- }
- }
- else
- {
- parameters->iStartTime = ConvertToDateTimeL(elemContent);
- }
- startResolved = ETrue;
- }
- else if( elemName == KEndtime )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- // Random end time used. If start time is already resolved, let's use that one.
- if( startResolved )
- {
- parameters->iEndTime = iEngine->RandomTime(parameters->iStartTime, CCreatorEngine::EDateFuture);
- }
- else
- {
- // Past or future:
- CCreatorEngine::TRandomDateType pastOrfuture =
- (CCreatorEngine::TRandomDateType) iEngine->RandomNumber((TInt) CCreatorEngine::EDatePast,
- (TInt) CCreatorEngine::EDateFuture);
-
- parameters->iEndTime =
- iEngine->RandomTime(iEngine->RandomDate(pastOrfuture), pastOrfuture);
- }
- }
- else
- {
- parameters->iEndTime = ConvertToDateTimeL(elemContent);
- }
- if( aType == ETodo )
- {
- parameters->iTodoDueTime = parameters->iEndTime;
- }
- }
- else if( elemName == KRecurrentFreq )
- {
- TInt randomFreq = 0;
- if( randomAttr || elemContent.Length() == 0 )
- {
- randomFreq = iEngine->RandomNumber(1, 4);
- }
- if(randomFreq == 1 || CompareIgnoreCase(elemContent, KDaily) == 0 )
- parameters->iRecurrentFrequency = TCalRRule::EDaily;
- else if( randomFreq == 2 || CompareIgnoreCase(elemContent, KWeekly) == 0 )
- parameters->iRecurrentFrequency = TCalRRule::EWeekly;
- else if( randomFreq == 3 || CompareIgnoreCase(elemContent, KMonthly) == 0 )
- parameters->iRecurrentFrequency = TCalRRule::EMonthly;
- else if( randomFreq == 4 || CompareIgnoreCase(elemContent, KYearly) == 0 )
- parameters->iRecurrentFrequency = TCalRRule::EYearly;
- else
- parameters->iRecurrentFrequency = TCalRRule::EInvalid;
- }
- else if( elemName == KRecurrentInterval )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- parameters->iRecurrentInterval = iEngine->RandomNumber(1,7);
- }
- else
- {
- parameters->iRecurrentInterval = ConvertStrToIntL(elemContent);
- }
- }
- else if( elemName == KRecurrentFrom )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- if( startResolved )
- {
- // Let's use the start time if it's resolved.
- parameters->iRecurrentStartTime = parameters->iStartTime;
- }
- else
- {
- parameters->iRecurrentStartTime = iEngine->RandomDate(CCreatorEngine::EDateFuture);
- }
- }
- else
- {
- parameters->iRecurrentStartTime = ConvertToDateTimeL(elemContent);
- }
- }
- else if( elemName == KRecurrentTo )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- parameters->iRepeatingCount = iEngine->RandomNumber(1, 6);
- //parameters->iRecurrentEndTime = iEngine->RandomDate(CCreatorEngine::EDateFuture);
- }
- else
- {
- parameters->iRecurrentEndTime = ConvertToDateTimeL(elemContent);
- }
- }
- else if( elemName == KRepeatingCount )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- parameters->iRepeatingCount = iEngine->RandomNumber(1, 52);
- }
- else
- {
- parameters->iRepeatingCount = ConvertStrToIntL(elemContent);
- }
- }
- else if( elemName == KAlarmtime )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- parameters->iUseRandomAlarmTime = ETrue;
- }
- else
- {
- parameters->iAlarmTime = ConvertToDateTimeL(elemContent);
- }
- }
- else if( elemName == KOrganizername )
- {
- delete parameters->iOrganizerName;
- parameters->iOrganizerName = 0;
- if( randomAttr || elemContent.Length() == 0 )
- {
- TPtrC name = iEngine->RandomString (CCreatorEngine::EFirstName );
- parameters->iOrganizerName = HBufC::NewL(name.Length());
- parameters->iOrganizerName->Des().Copy(name);
- }
- else
- {
- parameters->iOrganizerName = HBufC::NewL(elemContent.Length());
- parameters->iOrganizerName->Des().Copy(elemContent);
- }
- }
- else if( elemName == KOrganizeremail )
- {
- delete parameters->iOrganizerEmail;
- parameters->iOrganizerEmail = 0;
- if( randomAttr || elemContent.Length() == 0 )
- {
- TDesC* email = iEngine->CreateEmailAddressLC();
- parameters->iOrganizerEmail = (HBufC*) email;
- CleanupStack::Pop(); // email
- }
- else
- {
- parameters->iOrganizerEmail = HBufC::NewL(elemContent.Length());
- parameters->iOrganizerEmail->Des().Copy(elemContent);
- }
- }
- else if( elemName == KStatus )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- if( aType == ETodo )
- {
- parameters->iStatus = (CCalEntry::TStatus) iEngine->RandomNumber(CCalEntry::ETodoNeedsAction, CCalEntry::ETodoInProcess);
- }
- else
- {
- parameters->iStatus = (CCalEntry::TStatus) iEngine->RandomNumber(CCalEntry::ETentative, CCalEntry::ECancelled);
- }
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusTentative) == 0 )
- {
- parameters->iStatus = CCalEntry::ETentative;
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusConfirmed) == 0 )
- {
- parameters->iStatus = CCalEntry::EConfirmed;
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusCancelled) == 0 )
- {
- parameters->iStatus = CCalEntry::ECancelled;
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusNeedsAction) == 0 )
- {
- parameters->iStatus = CCalEntry::ETodoNeedsAction;
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusCompleted) == 0 )
- {
- parameters->iStatus = CCalEntry::ETodoCompleted;
- }
- else if( CompareIgnoreCase(elemContent, KCalStatusInProcess) == 0 )
- {
- parameters->iStatus = CCalEntry::ETodoInProcess;
- }
- else
- {
- parameters->iStatus = CCalEntry::ENullStatus;
- }
- }
- else if( elemName == KPriority )
- {
- if( randomAttr || elemContent.Length() == 0 )
- {
- parameters->iTodoPriority = iEngine->RandomNumber(1,3);
- }
- else if( CompareIgnoreCase(elemContent, KPriorityHigh) == 0)
- {
- parameters->iTodoPriority = 1;
- }
- else if( CompareIgnoreCase(elemContent, KPriorityMedium) == 0)
- {
- parameters->iTodoPriority = 2;
- }
- else if( CompareIgnoreCase(elemContent, KPriorityLow) == 0 )
- {
- parameters->iTodoPriority = 3;
- }
- else
- {
- parameters->iTodoPriority = ConvertStrToIntL(elemContent);
- }
- }
- else if( elemName == KAttendees )
- {
- const RPointerArray<CCreatorScriptElement>& attendeesSubElems = fields[i]->SubElements();
- for( TInt j = 0; j < attendeesSubElems.Count(); ++j )
- {
- TPtrC eName = attendeesSubElems[j]->Name();
- TPtrC eContent = attendeesSubElems[j]->Content();
- if( eName == KContactSetRef )
- {
- AppendContactSetReferenceL(*attendeesSubElems[j], parameters->iAttendeeLinkIds);
- }
- else if( eName == KAttendee )
- {
- CCreatorCalenderAttendee* calAtt = CCreatorCalenderAttendee::NewL();
- CleanupStack::PushL(calAtt);
- const RPointerArray<CCreatorScriptElement>& attendeeFields = attendeesSubElems[j]->SubElements();
- // Make sure that at least email is given:
- if(attendeeFields.Count() == 0 )
- {
- CCreatorScriptElement* emailField = CCreatorScriptElement::NewL(iEngine, KEmail );
- CleanupStack::PushL(emailField);
- fields[i]->SubElements().AppendL(emailField);
- CleanupStack::Pop(); // emailField
- }
- for( TInt k = 0; k < attendeeFields.Count(); ++k )
- {
- const CCreatorScriptAttribute* randomAttr = attendeeFields[k]->FindAttributeByName(KRandomLength);
- TPtrC attElemName = attendeeFields[k]->Name();
- TPtrC attElemCont = attendeeFields[k]->Content();
- if( attElemName == KCommonname )
- {
- if( randomAttr || attElemCont.Length() == 0)
- {
- // Random data:
- calAtt->SetCommonNameL(iEngine->RandomString(CCreatorEngine::EFirstName));
- }
- else
- {
- calAtt->SetCommonNameL(attElemCont);
- }
- }
- else if( attElemName == KEmail )
- {
- if( randomAttr || attElemCont.Length() == 0)
- {
- // Random data:
- TDesC* email = iEngine->CreateEmailAddressLC();
- calAtt->SetEmailAddressL(*email);
- CleanupStack::PopAndDestroy(); // email
- }
- else
- {
- calAtt->SetEmailAddressL(attElemCont);
- }
- }
- else if( attElemName == KRole )
- {
- if( randomAttr || attElemCont.Length() == 0)
- {
- // Random role:
- CCalAttendee::TCalRole randomRole =
- (CCalAttendee::TCalRole) iEngine->RandomNumber(
- (TInt) CCalAttendee::EReqParticipant,
- (TInt) CCalAttendee::EChair);
- calAtt->SetRole(randomRole);
- }
- else if( CompareIgnoreCase(attElemCont, KRoleRequired) == 0 )
- {
- calAtt->SetRole(CCalAttendee::EReqParticipant);
- }
- else if( CompareIgnoreCase(attElemCont, KRoleOptional) == 0 )
- {
- calAtt->SetRole(CCalAttendee::EOptParticipant);
- }
- else if( CompareIgnoreCase(attElemCont, KRoleNonPart) == 0 )
- {
- calAtt->SetRole(CCalAttendee::ENonParticipant);
- }
- else if( CompareIgnoreCase(attElemCont, KRoleChair) == 0 )
- {
- calAtt->SetRole(CCalAttendee::EChair);
- }
- }
- else if( attElemName == KStatus )
- {
- if( randomAttr || attElemCont.Length() == 0)
- {
- // Random role:
- CCalAttendee::TCalStatus randomStatus =
- (CCalAttendee::TCalStatus) iEngine->RandomNumber(
- (TInt) CCalAttendee::ENeedsAction,
- (TInt) CCalAttendee::EInProcess);
- calAtt->SetStatus(randomStatus);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusNeedsAction) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::ENeedsAction);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusAccepted) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::EAccepted);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusTentative) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::ETentative);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusConfirmed) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::EConfirmed);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusDeclined) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::EDeclined);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusCompleted) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::ECompleted);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusDelegated) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::EDelegated);
- }
- else if( CompareIgnoreCase(attElemCont, KStatusInProcess) == 0 )
- {
- calAtt->SetStatus(CCalAttendee::EInProcess);
- }
- }
- }
- parameters->iAttendees.AppendL(calAtt);
- CleanupStack::Pop(); // calAtt
- }
- }
- }
- }
- }
-
-void CCreatorCalendarElement::ExecuteCommandL()
- {
- LOGSTRING("Creator: CCreatorCalendarElement::ExecuteCommandL");
- // Amount of calendar entries:
- const CCreatorScriptAttribute* calEntryAmountAttr = this->FindAttributeByName(KAmount);
- const CCreatorScriptAttribute* calEntryTypeAttr = this->FindAttributeByName(KType);
- TInt entryAmount = 1;
- if( calEntryAmountAttr )
- {
- entryAmount = ConvertStrToIntL(calEntryAmountAttr->Value());
- }
- if( calEntryTypeAttr == 0 )
- {
- LOGSTRING("ERROR in CCreatorCalendarElement::ExecuteCommandL: Type attribute is missing.");
- User::Leave(KErrGeneral); // type is required attribute
- }
-
- // Find fields element:
- CCreatorScriptElement* fieldsElement = FindSubElement(KFields);
-
- for( TInt cI = 0; cI < entryAmount; ++cI )
- {
- CCalenderInterimParameters* param = new (ELeave) CCalenderInterimParameters;
- CleanupStack::PushL(param);
- if( CompareIgnoreCase(calEntryTypeAttr->Value(), KCalTypeAppointment) == 0 )
- {
- if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
- {
- FillEntryParamsL(EAppointment, fieldsElement->SubElements(), param);
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryAppointments, param);
- }
- else
- {
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryAppointments, 0, entryAmount);
- CleanupStack::PopAndDestroy(param);
- break; // We can step out from the for-loop, because the amount is given to engine.
- }
- }
- else if( CompareIgnoreCase(calEntryTypeAttr->Value(), KCalTypeEvent ) == 0 )
- {
- if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
- {
- FillEntryParamsL(EEvent, fieldsElement->SubElements(), param);
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryEvents, param);
- }
- else
- {
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryEvents, 0, entryAmount);
- CleanupStack::PopAndDestroy(param);
- break; // We can step out from the for-loop, because the amount is given to engine.
- }
- }
- else if( CompareIgnoreCase(calEntryTypeAttr->Value(), KCalTypeReminder ) == 0 )
- {
- if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
- {
- FillEntryParamsL(EReminder, fieldsElement->SubElements(), param);
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryReminders, param);
- }
- else
- {
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryReminders, 0, entryAmount);
- CleanupStack::PopAndDestroy(param);
- break; // We can step out from the for-loop, because the amount is given to engine.
- }
- }
- else if( CompareIgnoreCase(calEntryTypeAttr->Value(), KCalTypeAnniversary ) == 0 )
- {
- if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
- {
- FillEntryParamsL(EAnniversary, fieldsElement->SubElements(), param);
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryAnniversaries, param);
- }
- else
- {
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryAnniversaries, 0, entryAmount);
- CleanupStack::PopAndDestroy(param);
- break; // We can step out from the for-loop, because the amount is given to engine.
- }
- }
- else if( CompareIgnoreCase(calEntryTypeAttr->Value(), KCalTypeTodo ) == 0 )
- {
- if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
- {
- FillEntryParamsL(ETodo, fieldsElement->SubElements(), param);
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryToDos, param);
- }
- else
- {
- iEngine->AppendToCommandArrayL(ECmdCreateCalendarEntryToDos, 0, entryAmount);
- CleanupStack::PopAndDestroy(param);
- break; // We can step out from the for-loop, because the amount is given to engine.
- }
- }
- CleanupStack::Pop(); // param
- }
- }
-
-CCreatorCalendarElement::CCreatorCalendarElement(CCreatorEngine* aEngine)
-:
-CCreatorScriptElement(aEngine)
- {
- iIsCommandElement = ETrue;
- }