--- 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 <utf.h>
-#include <bautils.h>
-#include <caluser.h>
-#include <cmrmailboxutils.h>
-#include <calentry.h>
-//<cmail>
-#include "cfsmailmessage.h"
-#include <coemain.h>
-#include <coeaui.h>
-#include "FreestyleEmailUiConstants.h"
-//</cmail>
-
-#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<CCalAttendee*> requiredAttendees;
- CleanupClosePushL( requiredAttendees );
-
- RArray<CCalAttendee*> 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<TEditorLaunchParams> buf( params );
-
- appui->ActivateViewL(
- viewId,
- editorCommand,
- buf );
-
- return KErrNone;
- }
-
-//EOF
-