diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrtasks/src/cesmrsendmrrespfsmailtask.cpp --- a/meetingrequest/mrtasks/src/cesmrsendmrrespfsmailtask.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,358 +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 sending MR response via fs email -* -*/ -#include "emailtrace.h" -#include "cesmrsendmrrespfsmailtask.h" - -#include -#include -#include -// -#include "mmrinfoprocessor.h" -// -#include -#include -#include -#include - -#include "cesmrcaldbmgr.h" -#include "mesmrmeetingrequestentry.h" -#include "cesmrmailplaitextformatter.h" -#include "cesmrfsemailmanager.h" -#include "cesmrcalimportexporter.h" -#include "tesmrinputparams.h" -#include "cesmrcaluserutil.h" -#include "esmrhelper.h" - -// Unnamed namespace for local definitions -namespace { -// Literal for plain text separator -_LIT( KPlainTextResponseTxtSeparator, - "\n----------------------------------------\n"); - - -// Literal for response iCal file -// remove hard coded paths -//_LIT( KPath, "c:\\temp\\" ); //codescanner::driveletters -//_LIT( KFileAndPath, "c:\\temp\\response.ics" ); //codescanner::driveletters -//_LIT( KPath, "temp\\" ); -_LIT( KFileName, "temp\\response.ics" ); -// - -} // namespace - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::CESMRSendMRRespFSMailTask -// --------------------------------------------------------------------------- -// -CESMRSendMRRespFSMailTask::CESMRSendMRRespFSMailTask( - TESMRCommand aCommand, - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils, - TESMRResponseType aResponseType ) -: CESMRTaskBase( aCalDbMgr, aEntry, aMRMailboxUtils ), - iCommand( aCommand ), - iResponseType( aResponseType ) - { - FUNC_LOG; - //do nothing - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::~CESMRSendMRRespFSMailTask -// --------------------------------------------------------------------------- -// -CESMRSendMRRespFSMailTask::~CESMRSendMRRespFSMailTask() - { - FUNC_LOG; - delete iCaluserUtil; - delete iEntryToSend; - delete iResponseMessage; - delete iEmailMgr; - delete iTextFormatter; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::NewL -// --------------------------------------------------------------------------- -// -CESMRSendMRRespFSMailTask* CESMRSendMRRespFSMailTask::NewL( - TESMRCommand aCommand, - MESMRCalDbMgr& aCalDbMgr, - MESMRMeetingRequestEntry& aEntry, - CMRMailboxUtils& aMRMailboxUtils, - TESMRResponseType aResponseType, - const TDesC& aResponseMessage ) - { - FUNC_LOG; - CESMRSendMRRespFSMailTask* self = - new (ELeave) CESMRSendMRRespFSMailTask( - aCommand, - aCalDbMgr, - aEntry, - aMRMailboxUtils, - aResponseType ); - - CleanupStack::PushL(self); - self->ConstructL(aResponseMessage); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::ConstructL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::ConstructL( - const TDesC& aResponseMessage ) - { - FUNC_LOG; - BaseConstructL(); - iEmailMgr = CESMRFSEMailManager::NewL( MailboxUtils() ); - iTextFormatter = CESMRMailPlainTextFormatter::NewL( MailboxUtils() ); - iResponseMessage = aResponseMessage.AllocL(); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::ExecuteTaskL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::ExecuteTaskL() - { - FUNC_LOG; - iEntryToSend = ESMREntry().ValidateEntryL(); - - // Checking input paramters - if( CCalEntry::EMethodReply != iEntryToSend->MethodL() && - EESMRCmdRemoveFromCalendar != iCommand ) - { - User::Leave( KErrArgument ); - } - - if ( ESMREntry().IsSyncObjectPresent( ) ) - { - SendMailViaSyncL(); - } - else - { - iCaluserUtil = CESMRCalUserUtil::NewL( *iEntryToSend ); - - // create mail message: - ConstructMailL(); - - TInt ret = iEmailMgr->SendMessageL(); - User::LeaveIfError(ret); - } - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::ConstructMailL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::ConstructMailL() - { - FUNC_LOG; - // Prepare email manager for sending - CCalUser *mailboxUser = ESMREntry().Entry().PhoneOwnerL(); - iEmailMgr->PrepareForSendingL( - ESMRHelper::AddressWithoutMailtoPrefix( - mailboxUser->Address() ) ); - - // set the email subject - HBufC* subject = - iTextFormatter->Subject16LC( - *iEntryToSend, - ESMREntry().IsForwardedL(), - ESMREntry().IsEntryEditedL() ); - - iEmailMgr->SetSubjectL(*subject); - CleanupStack::PopAndDestroy(subject); - subject = NULL; - - // Set the To recipient - iEmailMgr->AppendToRecipientL( - iEntryToSend->OrganizerL()->Address(), - iEntryToSend->OrganizerL()->CommonName() ); - - // Set text/plain part - AddPlainTextPartL(); - - // Set text/calendar part: - AddCalendarPartL(); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::AddPlainTextPartL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::AddPlainTextPartL() - { - FUNC_LOG; - - HBufC* plainText = iTextFormatter->Body16LC( *iEntryToSend ); - if ( iResponseMessage ) - { - TPtrC plainTextSeparator( KPlainTextResponseTxtSeparator() ); - - plainText = plainText->ReAlloc( - plainText->Length() + - plainTextSeparator.Length() + - iResponseMessage->Length() ); - - CleanupStack::Pop( plainText ); - CleanupStack::PushL( plainText ); - - TPtr ptrPlainText( plainText->Des() ); - ptrPlainText.Append( plainTextSeparator ); - ptrPlainText.Append( *iResponseMessage ); - } - - iEmailMgr->CreateTextPlainPartL(*plainText); - CleanupStack::PopAndDestroy(plainText); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::AddCalendarPartL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::AddCalendarPartL() - { - FUNC_LOG; - SetAttendeesL(); - - CESMRCalImportExporter* calExporter = - CESMRCalImportExporter::NewLC(); - - HBufC* calendarPart = - calExporter->ExportToICal16LC( *iEntryToSend ); - - // removing hardcoded paths - TFileName fileName(KFileName); - User::LeaveIfError(ESMRHelper::CreateAndAppendPrivateDirToFileName(fileName)); - SaveICalToFileL( *calendarPart, fileName ); - iEmailMgr->CreateTextCalendarPartL( - CESMRFSEMailManager::EESMRMethodResponse, - fileName); - // - - CleanupStack::PopAndDestroy( calendarPart ); - CleanupStack::PopAndDestroy( calExporter ); - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::SendMailViaSyncL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::SendMailViaSyncL() - { - FUNC_LOG; - TESMRInputParams startupParams; - - if ( ESMREntry().StartupParameters(startupParams) ) - { - MMRInfoProcessor::TMRInfoResponseMode responseMode ( - MMRInfoProcessor::EMRInfoResponseSendAndSync ); - - if ( EESMRResponseDontSend == iResponseType ) - { - responseMode = MMRInfoProcessor::EMRInfoResponseSync; - } - else if ( EESMRCmdRemoveFromCalendar == iCommand ) - { - responseMode = MMRInfoProcessor::EMRInfoRemoveFromCal; - } - - MMRInfoObject& infoObject = ESMREntry().ValidateSyncObjectL(); - iEmailMgr->SendMailViaSyncL( - startupParams, - infoObject, - responseMode, - *iResponseMessage ); - } - else - { - User::Leave( KErrArgument ); - } - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::SaveICalToFileL -// --------------------------------------------------------------------------- -// -TInt CESMRSendMRRespFSMailTask::SaveICalToFileL( - const TDesC& aICal, - const TDesC& aFilename ) - { - FUNC_LOG; - //create 8 bit buffer for temp file content - TInt length = aICal.Length() * 2; - HBufC8* buffer = HBufC8::NewLC( length ); - TPtr8 des = buffer->Des(); - - // covert the 16 bit iCal to 8 bit iCal: - TInt err = CnvUtfConverter::ConvertFromUnicodeToUtf8(des, aICal); - - RFs& fs( CCoeEnv::Static()->FsSession() ); - - // ensure the path exists: - // remove hard coded paths - //BaflUtils::EnsurePathExistsL(fs, KPath); - // - - // delete previous file - fs.Delete( aFilename ); - - // save the iCal to file system: - RFile file; - User::LeaveIfError(file.Create(fs, aFilename, EFileWrite)); - CleanupClosePushL(file); - User::LeaveIfError(file.Write(*buffer)); - - // clean up: - CleanupStack::PopAndDestroy(2, buffer); // file, fs, buffer - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CESMRSendMRRespFSMailTask::SetAttendeesL -// --------------------------------------------------------------------------- -// -void CESMRSendMRRespFSMailTask::SetAttendeesL() - { - FUNC_LOG; - CCalAttendee* thisAttendee = - ESMRHelper::CopyAttendeeLC( - *(MailboxUtils().ThisAttendeeL( *iEntryToSend )) ); - - RPointerArray& attendeeList = iEntryToSend->AttendeesL(); - - while ( attendeeList.Count() ) - { - //remove attendees from entry that is to be forwarded - iEntryToSend->DeleteAttendeeL( 0 ); - } - - // Ownership is transferred - iEntryToSend->AddAttendeeL( thisAttendee ); - CleanupStack::Pop( thisAttendee ); - } - -//EOF -