diff -r 000000000000 -r 8466d47a6819 meetingrequest/mrtasks/src/cesmrtaskextensionimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrtasks/src/cesmrtaskextensionimpl.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,281 @@ +/* +* 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: ESMR task extension implementation +* +*/ + +#include "emailtrace.h" +#include "cesmrtaskextensionimpl.h" + +#include +#include "esmrinternaluid.h" +// +#include "cesmrpolicymanager.h" +// +#include "cesmrentryprocessor.h" +#include "mesmrmeetingrequestentry.h" +#include "cesmrtaskfactory.h" +#include "mesmrtask.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::CESMRTaskExtenstionImpl +// --------------------------------------------------------------------------- +// +CESMRTaskExtenstionImpl::CESMRTaskExtenstionImpl( + MESMRCalDbMgr& aCalDBMgr, + CMRMailboxUtils& aMRMailboxUtils, + CESMRPolicyManager& aPolicyManager, + CESMREntryProcessor& aEntryProcessor, + MESMRTaskFactory& aTaskFactory ) +: iCalDBMgr( aCalDBMgr ), + iMRMailboxUtils( aMRMailboxUtils), + iPolicyManager( aPolicyManager ), + iEntryProcessor( aEntryProcessor), + iTaskFactory( aTaskFactory ) + { + FUNC_LOG; + //do nothing + } + + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::~CESMRTaskExtenstionImpl +// --------------------------------------------------------------------------- +// +EXPORT_C CESMRTaskExtenstionImpl::~CESMRTaskExtenstionImpl() + { + FUNC_LOG; + //do nothing + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C CESMRTaskExtenstionImpl* CESMRTaskExtenstionImpl::NewL( + MESMRCalDbMgr& aCalDBMgr, + CMRMailboxUtils& aMRMailboxUtils, + CESMRPolicyManager& aPolicyManager, + CESMREntryProcessor& aEntryProcessor, + MESMRTaskFactory& aTaskFactory ) + { + FUNC_LOG; + CESMRTaskExtenstionImpl* self = + new (ELeave) CESMRTaskExtenstionImpl( + aCalDBMgr, + aMRMailboxUtils, + aPolicyManager, + aEntryProcessor, + aTaskFactory ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::ConstructL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::ConstructL() + { + FUNC_LOG; + //do nothing + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::SendAndStoreResponseL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::SendAndStoreResponseL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // First do possible command conversion + if ( EESMRAcceptWithoutAttachmentCheck == aCommand ) + { + aCommand = EESMRCmdAcceptMR; + } + else if ( EESMRTentativeWithoutAttachmentCheck == aCommand ) + { + aCommand = EESMRCmdTentativeMR; + } + else if ( EESMRDeclineWithoutAttachmentCheck == aCommand ) + { + aCommand = EESMRCmdDeclineMR; + } + + // Check that command is valid + if ( !( EESMRCmdAcceptMR == aCommand || + EESMRCmdTentativeMR == aCommand || + EESMRCmdDeclineMR == aCommand ) ) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::SendAndStoreMRL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::SendAndStoreMRL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // Check that command is valid + if ( !( EESMRCmdSendMR == aCommand || + EESMRCmdSendMRUpdate == aCommand) ) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::SendAndStoreMRL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::DeleteMRFromLocalDBL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // Check that command is valid + if ( EESMRCmdDeleteMR != aCommand ) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + + // Create and execute task + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::SendAndStoreMRL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::DeleteAndSendMRL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // Check that command is valid + if ( EESMRCmdDeleteMR == aCommand || + EESMRCmdRemoveFromCalendar == aCommand || + EESMRCmdMailDelete == aCommand ) + { + // Create And execute task + CreateAndExecuteTaskL( aCommand, aEntry ); + } + else + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::StoreMRToLocalDBL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::StoreMRToLocalDBL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + if ( EESMRCmdSaveMR != aCommand ) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::ForwardMRAsEmailL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::ForwardMRAsEmailL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // Check that command is valid + if ( EESMRCmdForwardAsMail != aCommand ) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + + // Create And exexute task + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::ReplyAsEmailL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::ReplyAsEmailL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + // Check that command is valid + if ( EESMRCmdReply != aCommand && EESMRCmdReplyAll != aCommand) + { + // Invalid command --> Leave + User::Leave( KErrArgument ); + } + + // Create And exexute task + CreateAndExecuteTaskL( aCommand, aEntry ); + } + +// --------------------------------------------------------------------------- +// CESMRTaskExtenstionImpl::CreateAndExecuteTaskL +// --------------------------------------------------------------------------- +// +void CESMRTaskExtenstionImpl::CreateAndExecuteTaskL( + TESMRCommand aCommand, + MESMRMeetingRequestEntry& aEntry ) + { + FUNC_LOG; + MESMRTask* task = iTaskFactory.CreateTaskL( aCommand, aEntry ); + + if (task ) + { + CleanupDeletePushL( task ); + task->ExecuteTaskL(); + CleanupStack::PopAndDestroy(); // task; + } + else + { + // Task cannot be constructed --> Leave + + User::Leave( KErrNotSupported ); + } + } + +//EOF +