diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrtasks/src/cesmrsendmrfsmailreplytask.cpp --- a/meetingrequest/mrtasks/src/cesmrsendmrfsmailreplytask.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,351 +0,0 @@ -/* -* 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: Implementation for ESMR send MR via fs email task -* -*/ - -#include "emailtrace.h" -#include "cesmrsendmrfsmailreplytask.h" - -#include -#include -#include -#include -#include -// -#include "cfsmailmessage.h" -#include -#include -#include "FreestyleEmailUiConstants.h" -// - -#include "cesmrcaldbmgr.h" -#include "mesmrmeetingrequestentry.h" -#include "cesmrfsemailmanager.h" -#include "cesmrmailplaitextformatter.h" -#include "cesmrcalimportexporter.h" -#include "cesmrcaluserutil.h" -#include "tesmrinputparams.h" -#include "esmrhelper.h" - -// Unnamed namespace for local definitions -namespace { - -#ifdef _DEBUG - -// Literal for panics -_LIT( ESMRSendMRRespMailPanicTxt, "ESMRSendMRFSEMailTask" ); - -// Panic codes -enum TESMRSendMRFSMailTaskPanic - { - EESMRSendMRFSAttendeesMissing, - EESMRCannotBeTriggeredFromMail - }; - -// ======== LOCAL FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Panic wrapper method -// --------------------------------------------------------------------------- -// -void Panic( TESMRSendMRFSMailTaskPanic aPanic ) - { - - User::Panic( ESMRSendMRRespMailPanicTxt, aPanic ); - } - -#endif // _DEBUG - -// --------------------------------------------------------------------------- -// Leave wrapper method -// --------------------------------------------------------------------------- -// -inline void DoLeaveIfErrorL( TInt aLeaveCode ) - { - if ( KErrNone != aLeaveCode ) - { - - User::Leave( aLeaveCode ); - } - } -} // namespace - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::CESMRSendMRFSMailReplyTask -// --------------------------------------------------------------------------- -// -CESMRSendMRFSMailReplyTask::CESMRSendMRFSMailReplyTask( - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils, - TBool aReplyAll) -: CESMRTaskBase( aCalDbMgr, aEntry, aMRMailboxUtils ), - iReplyAll(aReplyAll) - { - FUNC_LOG; - //do nothing - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::~CESMRSendMRFSMailReplyTask -// --------------------------------------------------------------------------- -// -CESMRSendMRFSMailReplyTask::~CESMRSendMRFSMailReplyTask() - { - FUNC_LOG; - delete iEntryToSend; - delete iCaluserUtil; - delete iEmailMgr; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::NewL -// --------------------------------------------------------------------------- -// -CESMRSendMRFSMailReplyTask* CESMRSendMRFSMailReplyTask::NewL( - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils, - TBool aReplyAll) - { - FUNC_LOG; - - CESMRSendMRFSMailReplyTask* self = - new (ELeave) CESMRSendMRFSMailReplyTask( - aCalDbMgr, - aEntry, - aMRMailboxUtils, - aReplyAll); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::ConstructL -// --------------------------------------------------------------------------- -// -void CESMRSendMRFSMailReplyTask::ConstructL() - { - FUNC_LOG; - BaseConstructL(); - iEmailMgr = CESMRFSEMailManager::NewL( MailboxUtils() ); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::ExecuteTaskL -// --------------------------------------------------------------------------- -// -void CESMRSendMRFSMailReplyTask::ExecuteTaskL() - { - FUNC_LOG; - - iEntryToSend = ESMREntry().ValidateEntryL(); - iCaluserUtil = CESMRCalUserUtil::NewL( *iEntryToSend ); - - ConstructMailL(); - - iEmailMgr->StoreMessageToDraftsFolderL(); - - LaunchFSEmailEditorL(iReplyAll); - - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::ConstructMailL -// --------------------------------------------------------------------------- -// -void CESMRSendMRFSMailReplyTask::ConstructMailL() - { - FUNC_LOG; - - // create text formatter: - CESMRMailPlainTextFormatter* textFormatter = - CESMRMailPlainTextFormatter::NewLC( MailboxUtils() ); - - TESMRInputParams startupparams; - TBool isEmail = ESMREntry().StartupParameters(startupparams); - - // This command cannot be triggered from email - __ASSERT_DEBUG( !isEmail, Panic(EESMRCannotBeTriggeredFromMail) ); - - if(isEmail) - { - // This command cannot be triggered from email - User::Leave( KErrNotSupported ); - } - else - { - //launched from calendar, mail id available for mr - - // Prepare email manager for sending - CCalUser* mailboxUser = iEntryToSend->PhoneOwnerL(); - iEmailMgr->PrepareForSendingL( - ESMRHelper::AddressWithoutMailtoPrefix( - mailboxUser->Address() ) ); - - // set the email subject: - HBufC* subject = - textFormatter->ReplyStringLC( *iEntryToSend ); - - iEmailMgr->SetSubjectL(*subject); - CleanupStack::PopAndDestroy(subject); - - CCalUser* organizer = iEntryToSend->OrganizerL(); - - //Add organizer as sender - iEmailMgr->SetSenderL( - organizer->Address(), - organizer->CommonName() ); - - if(iReplyAll) - { - //Add also required and optional attendees - AddAttendeesL(); - } - } - - CleanupStack::PopAndDestroy(textFormatter); - - } - - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::AddAttendeesL -// --------------------------------------------------------------------------- -// -void CESMRSendMRFSMailReplyTask::AddAttendeesL() - { - FUNC_LOG; - - RArray requiredAttendees; - CleanupClosePushL( requiredAttendees ); - - RArray optionalAttendees; - CleanupClosePushL( optionalAttendees ); - - iCaluserUtil->GetAttendeesL( - requiredAttendees, - EESMRRoleRequiredAttendee ); - iCaluserUtil->GetAttendeesL( - optionalAttendees, - EESMRRoleOptionalAttendee ); - - // Add recipients and cc-recipients - TInt attendeeCount( requiredAttendees.Count() ); - - __ASSERT_DEBUG( attendeeCount, Panic(EESMRSendMRFSAttendeesMissing) ); - - if ( !attendeeCount ) - { - DoLeaveIfErrorL( KErrArgument ); - } - - for (TInt i(0); i < attendeeCount; ++i) - { - iEmailMgr->AppendToRecipientL( - requiredAttendees[i]->Address(), - requiredAttendees[i]->CommonName() ); - } - - TInt optAttendeeCount( optionalAttendees.Count() ); - for (TInt i(0); i < optAttendeeCount; ++i) - { - iEmailMgr->AppendToRecipientL( - optionalAttendees[i]->Address(), - optionalAttendees[i]->CommonName() ); - } - - CleanupStack::PopAndDestroy(2, &requiredAttendees ); - - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::ResolveUsedMailboxUserAddressLC -// --------------------------------------------------------------------------- -// -HBufC* CESMRSendMRFSMailReplyTask::ResolveUsedMailboxUserAddressLC() - { - FUNC_LOG; - - HBufC* mailboxUserAddress = NULL; - MESMRMeetingRequestEntry& mrEntry( ESMREntry()); - if ( mrEntry.IsForwardedL() ) - { - // Entry is forwarder --> Use default mailbox - CMRMailboxUtils::TMailboxInfo mbInfo; - CMRMailboxUtils& mbUtils( MailboxUtils() ); - mbUtils.GetDefaultMRMailBoxL( mbInfo ); - mailboxUserAddress = mbInfo.iEmailAddress.AllocLC(); - } - else - { - CCalUser *mailboxUser = iEntryToSend->PhoneOwnerL(); - mailboxUserAddress = mailboxUser->Address().AllocLC(); - } - - return mailboxUserAddress; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailReplyTask::LaunchFSEmailEditorL -// --------------------------------------------------------------------------- -// -TInt CESMRSendMRFSMailReplyTask::LaunchFSEmailEditorL(TBool aReplAll) - { - FUNC_LOG; - CCoeEnv* coe = CCoeEnv::Static(); - - CCoeAppUi* appui = coe->AppUi(); - - // fill params - TEditorLaunchParams params; - params.iActivatedExternally = ETrue; - params.iMailboxId = iEmailMgr->MailboxId(); - params.iFolderId = iEmailMgr->MessageFolderId(); - params.iMsgId = iEmailMgr->MessageId(); - - TVwsViewId viewId( - KFSEmailUiUid, - MailEditorId ); - - TUid editorCommand; - - if(aReplAll) - { - editorCommand = TUid::Uid( KEditorCmdReplyAll ); - } - else - { - editorCommand = TUid::Uid( KEditorCmdReply ); - } - - TPckgC buf( params ); - - appui->ActivateViewL( - viewId, - editorCommand, - buf ); - - return KErrNone; - } - -//EOF -