diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrtasks/src/cesmrforwardasfsmailtask.cpp --- a/meetingrequest/mrtasks/src/cesmrforwardasfsmailtask.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,296 +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 forwarding mr as email -* -*/ - -#include "emailtrace.h" -#include "cesmrforwardasfsmailtask.h" - -#include -#include -#include -#include -#include -#include -// -#include "FreestyleEmailUiConstants.h" -// -#include "tesmrinputparams.h" - -#include "cesmrcaldbmgr.h" -#include "mesmrmeetingrequestentry.h" -#include "cesmrmailplaitextformatter.h" -#include "cesmrcalimportexporter.h" -#include "cesmrfsemailmanager.h" -#include "cesmrcaluserutil.h" -#include "esmrinternaluid.h" -#include "esmrhelper.h" - -// Unnamed namespace for local definitions -namespace { - -// remove hardcoded paths -// Literal for temporary iCal meeting path -//_LIT( KTemporaryIcsPath, "c:\\temp\\" ); //codescanner::driveletters -// - -// Literal for temporary iCal meeting file -// remove hardcoded paths -//_LIT( KTemporaryIcsFullName, -// "c:\\temp\\meeting.ics" ); //codescanner::driveletters -_LIT( KTemporaryIcsName, "temp\\meeting.ics" ); -// - -#ifdef _DEBUG - -// Literal for panics -_LIT( KESMRForwardAsFSMail, "ESMRForwardAsFSMail" ); - -// Panic codes -enum TESMRForwardAsFSMailPanic - { - EESMRForwardAsFSMailCoeNull, - EESMRForwardAsFSMailAppUiNull, - EESMRForwardCannotBeTriggeredFromMail - }; - -// --------------------------------------------------------------------------- -// Raises system panic. -// --------------------------------------------------------------------------- -// -void Panic( TESMRForwardAsFSMailPanic aPanic ) - { - User::Panic( KESMRForwardAsFSMail, aPanic ); - } - -#endif // _DEBUG - -} - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CESMRForwardAsFSMailTask::CESMRForwardAsFSMailTask -// --------------------------------------------------------------------------- -// -CESMRForwardAsFSMailTask::CESMRForwardAsFSMailTask( - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils ) -: CESMRTaskBase( aCalDbMgr, aEntry, aMRMailboxUtils ) - { - FUNC_LOG; - //do nothing - } - -// --------------------------------------------------------------------------- -// CESMRForwardAsFSMailTask::~CESMRForwardAsFSMailTask -// --------------------------------------------------------------------------- -// -CESMRForwardAsFSMailTask::~CESMRForwardAsFSMailTask() - { - FUNC_LOG; - delete iEntryToSend; - delete iCaluserUtil; - delete iEmailMgr; - } - -// --------------------------------------------------------------------------- -// CESMRForwardAsFSMailTask::NewL -// --------------------------------------------------------------------------- -// -CESMRForwardAsFSMailTask* CESMRForwardAsFSMailTask::NewL( - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils ) - { - FUNC_LOG; - CESMRForwardAsFSMailTask* self = - new (ELeave) CESMRForwardAsFSMailTask( - aCalDbMgr, - aEntry, - aMRMailboxUtils ); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CESMRForwardAsFSMailTask::ConstructL -// --------------------------------------------------------------------------- -// -void CESMRForwardAsFSMailTask::ConstructL() - { - FUNC_LOG; - BaseConstructL(); - iEmailMgr = CESMRFSEMailManager::NewL( MailboxUtils() ); - } - -// --------------------------------------------------------------------------- -// CESMRForwardAsFSMailTask::ExecuteTaskL -// --------------------------------------------------------------------------- -// -void CESMRForwardAsFSMailTask::ExecuteTaskL() - { - FUNC_LOG; - iEntryToSend = ESMREntry().ValidateEntryL(); - iCaluserUtil = CESMRCalUserUtil::NewL( *iEntryToSend ); - - TESMRInputParams startupparams; - TBool isEmail = ESMREntry().StartupParameters(startupparams); - - // This command cannot be triggered from email - __ASSERT_DEBUG( !isEmail, Panic(EESMRForwardCannotBeTriggeredFromMail) ); - - if(isEmail) - { - // This command cannot be triggered from email - User::Leave( KErrNotSupported ); - } - - // Create mail message: - ConstructMailL(); - - // Save the message to drafts folder: - iEmailMgr->StoreMessageToDraftsFolderL(); - - // Launch FS EMail Editor: - LaunchFSEmailEditorL(); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailTask::ConstructMailL -// --------------------------------------------------------------------------- -// -void CESMRForwardAsFSMailTask::ConstructMailL() - { - FUNC_LOG; - // create text formatter: - CESMRMailPlainTextFormatter* textFormatter = - CESMRMailPlainTextFormatter::NewLC(MailboxUtils()); - - // Prepare email manager for sending - CCalUser *mailboxUser = iEntryToSend->PhoneOwnerL(); - iEmailMgr->PrepareForSendingL( - ESMRHelper::AddressWithoutMailtoPrefix(mailboxUser->Address() ) ); - - // set the email subject: - HBufC* subject = - textFormatter->Subject16LC( - *iEntryToSend, - ETrue, - EFalse ); - iEmailMgr->SetSubjectL(*subject); - CleanupStack::PopAndDestroy(subject); - subject = NULL; - - iEmailMgr->CreateTextPlainPartL( KNullDesC() ); - - CreateTemporaryMeetingFileL(); - iEmailMgr->StoreMessageToDraftsFolderL(); - - CleanupStack::PopAndDestroy( textFormatter ); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailTask::CreateTemporaryMeetingFileL -// --------------------------------------------------------------------------- -// -void CESMRForwardAsFSMailTask::CreateTemporaryMeetingFileL() - { - FUNC_LOG; - CCoeEnv* coe = CCoeEnv::Static(); - - __ASSERT_DEBUG( coe, Panic(EESMRForwardAsFSMailCoeNull) ); - - if ( !coe ) - { - User::Leave( KErrNotSupported ); - } - - RFs& fs = coe->FsSession(); - - // Ensure that path exists - // hardcoded paths removal - /*TInt err = fs.MkDirAll( KTemporaryIcsPath ); - if ( KErrAlreadyExists != err ) - { - User::LeaveIfError( err ); - }*/ - // - - RFile calendarFile; - //hard coded paths removal - TFileName fileName(KTemporaryIcsName); - User::LeaveIfError(ESMRHelper::CreateAndAppendPrivateDirToFileName(fileName)); - TInt err = calendarFile.Replace( - fs, - fileName, - EFileWrite ); - // - if ( KErrNone != err ) - User::LeaveIfError( err ); - - CleanupClosePushL( calendarFile ); - - CESMRCalImportExporter* calExporter = CESMRCalImportExporter::NewLC(); - HBufC8* calendarText = calExporter->ExportToICal8LC( *iEntryToSend ); - - calendarFile.Write( *calendarText ); - calendarFile.Flush(); - - // calendarText, calExporter and calendarFile - CleanupStack::PopAndDestroy( 3, & calendarFile); - iEmailMgr->SetAttachmentL( fileName );// - } - -// --------------------------------------------------------------------------- -// CESMRSendMRFSMailTask::LaunchFSEmailEditorL -// --------------------------------------------------------------------------- -// -TInt CESMRForwardAsFSMailTask::LaunchFSEmailEditorL() - { - FUNC_LOG; - CCoeEnv* coe = CCoeEnv::Static(); - __ASSERT_DEBUG( coe, Panic(EESMRForwardAsFSMailCoeNull) ); - - CCoeAppUi* appui = coe->AppUi(); - __ASSERT_DEBUG( appui, Panic(EESMRForwardAsFSMailAppUiNull) ); - - // 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 = TUid::Uid( KEditorCmdOpen ); - TPckgC buf( params ); - - appui->ActivateViewL( - viewId, - editorCommand, - buf ); - - return KErrNone; - } - -//EOF -