/*
* Copyright (c) 2008 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:  
*
*/



#ifndef CREATORCALENDARELEMENT_H_
#define CREATORCALENDARELEMENT_H_

#include "creator_scriptelement.h"

class CCalenderInterimParameters;

// Calendar elements:
namespace creatorcalendar
{
    _LIT(KCalendar, "calendar");

    // Calendar entry types:
    _LIT(KType, "type");
    _LIT(KCalTypeAppointment, "appointment");
    _LIT(KCalTypeEvent, "event");
    _LIT(KCalTypeReminder, "reminder");
    _LIT(KCalTypeAnniversary, "anniversary");
    _LIT(KCalTypeTodo, "todo");

    // Calendar entry field elements:
    _LIT(KSummary, "summary");
    _LIT(KDescription, "description");
    _LIT(KLocation, "location");
    _LIT(KStarttime, "starttime");
    _LIT(KEndtime, "endtime");
    _LIT(KRecurrentFreq, "recurrentfrequency");
    _LIT(KRecurrentInterval, "recurrentinterval");
    _LIT(KRecurrentFrom, "recurrentfrom");
    _LIT(KRecurrentTo, "recurrentto");
    _LIT(KRepeatingCount, "repeatingcount");
    _LIT(KAlarmtime, "alarmtime");
    _LIT(KSynchronization, "synchronization");
    _LIT(KOrganizername, "organizername");
    _LIT(KOrganizeremail, "organizeremail");
    _LIT(KAttendees, "attendees");
    _LIT(KAttendee, "attendee");
    _LIT(KCommonname, "commonname");
    _LIT(KEmail, "email");
    _LIT(KRole, "role");
    _LIT(KStatus, "status");
    _LIT(KPriority, "priority");

    // Recurrency frequency values:
    _LIT(KNotRepeated, "not-repeated");
    _LIT(KWeekly, "weekly");
    _LIT(KDaily, "daily");
    _LIT(KMonthly, "monthly");
    _LIT(KYearly, "yearly");

    // Attendee role values:
    _LIT(KRoleRequired, "required");
    _LIT(KRoleOptional, "optional");
    _LIT(KRoleNonPart, "non-participant");
    _LIT(KRoleChair, "chair");
    
    // Calendar entry status values:
    _LIT(KCalStatusTentative, "tentative");
    _LIT(KCalStatusConfirmed, "confirmed");
    _LIT(KCalStatusCancelled, "cancelled");
    _LIT(KCalStatusNeedsAction, "todoneedsaction");
    _LIT(KCalStatusCompleted, "todocompleted");
    _LIT(KCalStatusInProcess, "todoinprocess");

    // Attendee status values:
    _LIT(KStatusNeedsAction, "needsaction");
    _LIT(KStatusAccepted, "accepted");
    _LIT(KStatusTentative, "tentative");
    _LIT(KStatusConfirmed, "confirmed");
    _LIT(KStatusDeclined, "declined");
    _LIT(KStatusCompleted, "completed");
    _LIT(KStatusDelegated, "delegated");
    _LIT(KStatusInProcess, "inprocess");
    
    // Priority values:
    _LIT(KPriorityHigh, "high");
    _LIT(KPriorityMedium, "medium");
    _LIT(KPriorityLow, "low");
}

class CCreatorCalendarElement : public CCreatorScriptElement
{
public:
    static CCreatorCalendarElement* NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext = KNullDesC);
    void ExecuteCommandL();
protected:
    CCreatorCalendarElement(CCreatorEngine* aEngine);
    
    enum TEntryType {
        EAppointment,
        EEvent,
        EReminder,
        EAnniversary,
        ETodo
    };
    
    void FillEntryParamsL(TEntryType aType, const RPointerArray<CCreatorScriptElement>& fields, CCalenderInterimParameters* parameters); 
};

#endif /*CREATORCALENDARELEMENT_H_*/
