--- 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 <caluser.h>
-#include <calentry.h>
-#include <utf.h>
-//<cmail>
-#include "mmrinfoprocessor.h"
-//</cmail>
-#include <f32file.h>
-#include <coemain.h>
-#include <bautils.h>
-#include <cmrmailboxutils.h>
-
-#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
-//<cmail> 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" );
-//</cmail>
-
-} // 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 );
-
- //<cmail> removing hardcoded paths
- TFileName fileName(KFileName);
- User::LeaveIfError(ESMRHelper::CreateAndAppendPrivateDirToFileName(fileName));
- SaveICalToFileL( *calendarPart, fileName );
- iEmailMgr->CreateTextCalendarPartL(
- CESMRFSEMailManager::EESMRMethodResponse,
- fileName);
- //</cmail>
-
- 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:
- //<cmail> remove hard coded paths
- //BaflUtils::EnsurePathExistsL(fs, KPath);
- //</cmail>
-
- // 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<CCalAttendee>& 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
-