diff -r 000000000000 -r 8466d47a6819 meetingrequest/mrgui/mrfieldbuilderplugin/src/CESMRFieldBuilderPlugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/CESMRFieldBuilderPlugin.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,362 @@ +/* +* Copyright (c) 2007-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: MRUI field build plugin implementation +* +*/ + + +#include "emailtrace.h" +#include "CESMRFieldBuilderPlugin.h" + +// +#include "esmrdef.h" +// +#include "mesmrresponseobserver.h" + +// Editor fields +#include "cesmrsubjectfield.h" +#include "cesmrtimefield.h" +#include "cesmrdatefield.h" +#include "cesmrlocationfield.h" +#include "cesmralarmfield.h" +#include "cesmrrecurencefield.h" +#include "cesmrdescriptionfield.h" +#include "cesmrcheckbox.h" +#include "cesmrsingletimefield.h" +#include "cesmrbooleanfield.h" +#include "cesmrsyncfield.h" +#include "cesmrpriorityfield.h" + +// Viewer fields +#include "cesmrviewerlabelfield.h" +#include "cesmrviewerlocationfield.h" +#include "cesmrviewerstartdatefield.h" +#include "cesmrviewertimefield.h" +#include "cesmrvieweralarmfield.h" +#include "cesmrviewerdescriptionfield.h" +#include "cesmrviewerstopdatefield.h" +#include "cesmrviewerrecurrencefield.h" +#include "cesmrviewerrecurrencedatefield.h" +#include "cesmrviewersyncfield.h" +#include "cesmrviewerpriorityfield.h" +#include "cesmrvieweralldayeventfield.h" +#include "cesmrvieweralarmdatefield.h" +#include "cesmrvieweralarmtimefield.h" +#include "cesmrviewerdetailedsubjectfield.h" +#include "cesmrrepeatuntil.h" + +// Removed profiling. + +/// Unnamed namespace for local definitions +namespace { // codescanner::namespace + +#ifdef _DEBUG + +// Panic literal +_LIT( KESMRFieldBuilderPlugin, "ESMRFieldBuilderPlugin" ); + +/** Panic codes */ +enum TESMRFieldBuilderPluginPanic + { + EInvalidFieldId = 0 // Invalid field id + }; + +void Panic( TESMRFieldBuilderPluginPanic aPanic ) + { + User::Panic( KESMRFieldBuilderPlugin, aPanic ); + } + +#endif // _DEBUG + +} // namespace + +// ======== MEMBER FUNCTIONS ======== + +// ----------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::CESMRFieldBuilderPlugin +// ----------------------------------------------------------------------------- +// +CESMRFieldBuilderPlugin::CESMRFieldBuilderPlugin() + :iExtension(NULL), + iFieldExtension(NULL) + { + FUNC_LOG; + //do nothing + } + +// ----------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::~CESMRFieldBuilderPlugin +// ----------------------------------------------------------------------------- +// +CESMRFieldBuilderPlugin::~CESMRFieldBuilderPlugin() + { + FUNC_LOG; + delete iExtension; + } + +// ----------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::NewL +// ----------------------------------------------------------------------------- +// +CESMRFieldBuilderPlugin* CESMRFieldBuilderPlugin::NewL() + { + FUNC_LOG; + CESMRFieldBuilderPlugin* self = new (ELeave) CESMRFieldBuilderPlugin; + return self; + } + +// ---------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::ExtensionL +// ---------------------------------------------------------------------------- +// +TAny* CESMRFieldBuilderPlugin::ExtensionL( TUid aExtensionUid ) + { + FUNC_LOG; + if(!iExtension) + { + LoadExtensionL(); + } + + TAny* extension = NULL; + if ( iExtension ) + { + extension = iExtension->ExtensionL( aExtensionUid ); + } + return extension; + } + +// --------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::FieldBuilderL() +// --------------------------------------------------------------------------- +// +MESMRFieldBuilder* CESMRFieldBuilderPlugin::FieldBuilderL() + { + FUNC_LOG; + return this; + } + +// --------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::CreateEditorFieldL() +// --------------------------------------------------------------------------- +// +CESMRField* CESMRFieldBuilderPlugin::CreateEditorFieldL( + MESMRFieldValidator* aValidator, + TESMREntryField aField ) + { + FUNC_LOG; + CESMRField* field = NULL; + switch ( aField.iFieldId ) + { + case EESMRFieldMeetingTime: + field = CESMRTimeField::NewL( aValidator ); + break; + case EESMRFieldStartDate: + field = CESMRDateField::NewL( aValidator, aField.iFieldId ); + break; + case EESMRFieldStopDate: + field = CESMRDateField::NewL( aValidator, aField.iFieldId ); + break; + case EESMRFieldLocation: + field = CESMRLocationField::NewL(); + break; + case EESMRFieldAlarm: + field = CESMRAlarmField::NewL( aValidator ); + break; + case EESMRFieldAllDayEvent: + field = CESMRCheckBox::NewL( aValidator ); + break; + case EESMRFieldAlarmOnOff: + field = CESMRBooleanField::NewL( aValidator ); + break; + case EESMRFieldAlarmTime: + field = CESMRSingleTimeField::NewL( aValidator ); + break; + case EESMRFieldAlarmDate: + field = CESMRDateField::NewL( aValidator, aField.iFieldId ); + break; + case EESMRFieldSubject: + field = CESMRSubjectField::NewL(); + break; + case EESMRFieldDescription: + field = CESMRDescriptionField::NewL(); + break; + case EESMRFieldRecurrence: + field = CESMRRecurenceField::NewL( aValidator ); + break; + case EESMRFieldRecurrenceDate: + field = CESMRRepeatUntilField::NewL( aValidator ); + break; + case EESMRFieldSync: + field = CESMRSyncField::NewL(); + break; + case EESMRFieldOccasion: + field = CESMRSubjectField::NewL( CESMRSubjectField::ETypeOccasion ); + break; + case EESMRFieldPriority: + field = CESMRPriorityField::NewL(); + break; + default: + { + field = FieldBuilderExtensionL()->CreateEditorFieldL( + aValidator, + aField ); + } + break; + } + + __ASSERT_DEBUG( field, Panic(EInvalidFieldId) ); + return field; + } + +// --------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::CreateViewerFieldL() +// --------------------------------------------------------------------------- +// +CESMRField* CESMRFieldBuilderPlugin::CreateViewerFieldL( MESMRResponseObserver* aResponseObserver, + TESMREntryField aField, + TBool aResponseReady ) + { + FUNC_LOG; + CESMRField* field = NULL; + switch ( aField.iFieldId ) + { + case EESMRFieldMeetingTime: + { + field = CESMRViewerTimeField::NewL(); + break; + } + case EESMRFieldStartDate: + { + field = CESMRViewerStartDateField::NewL(); + break; + } + case EESMRFieldStopDate: + { + field = CESMRViewerStopDateField::NewL(); + break; + } + case EESMRFieldLocation: + { + field = CESMRViewerLocationField::NewL(); + break; + } + case EESMRFieldAlarm: + { + field = CESMRViewerAlarmField::NewL(); + break; + } + case EESMRFieldDescription: + { + field = CESMRViewerDescriptionField::NewL(); + break; + } + case EESMRFieldRecurrence: + { + field = CESMRViewerRecurrenceField::NewL(); + break; + } + case EESMRFieldRecurrenceDate: + { + field = CESMRViewerRecurrenceDateField::NewL(); + break; + } + case EESMRFieldSync: + { + field = CESMRViewerSyncField::NewL(); + break; + } + case EESMRFieldPriority: + { + field = CESMRViewerPriorityField::NewL(); + break; + } + case EESMRFieldAllDayEvent: + { + field = CESMRViewerAllDayEventField::NewL(); + break; + } + case EESMRFieldAlarmDate: + { + field = CESMRViewerAlarmDateField::NewL(); + break; + } + case EESMRFieldAlarmTime: + { + field = CESMRViewerAlarmTimeField::NewL(); + break; + } + case EESMRFieldDetailedSubject: + { + field = CESMRViewerDetailedSubjectField::NewL(); + break; + } + default: + { + MESMRFieldBuilder* extension = FieldBuilderExtensionL(); + if ( extension ) + { + field = extension->CreateViewerFieldL( + aResponseObserver, + aField, + aResponseReady ); + } + } + break; + } + + __ASSERT_DEBUG( field, Panic(EInvalidFieldId) ); + // Set field mode + field->SetFieldMode( EESMRFieldModeView ); + + return field; + } + +// --------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::FieldBuilderExtensionL() +// --------------------------------------------------------------------------- +// +MESMRFieldBuilder* CESMRFieldBuilderPlugin::FieldBuilderExtensionL() + { + FUNC_LOG; + if(!iFieldExtension) + { + LoadExtensionL(); + } + + return iFieldExtension; + } + +// --------------------------------------------------------------------------- +// CESMRFieldBuilderPlugin::LoadExtensionL() +// --------------------------------------------------------------------------- +// +void CESMRFieldBuilderPlugin::LoadExtensionL() + { + FUNC_LOG; + CESMRFieldBuilderInterface* extension = NULL; + + TRAPD(error, + extension = CESMRFieldBuilderInterface::CreatePluginL( + TUid::Uid(KESMRUIFieldBuilderPluginExtensionImplUId) ) ); + + if ( error == KErrNone && extension ) + { + delete iExtension; + iExtension = extension; + iFieldExtension = iExtension->FieldBuilderL(); + } + + } +//EOF +