meetingrequest/mrtasks/src/cesmrsendmrrespfsmailtask.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- 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
-