emailcontacts/remotecontactlookup/engine/src/cpbkxrclvcardsender.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- a/emailcontacts/remotecontactlookup/engine/src/cpbkxrclvcardsender.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,320 +0,0 @@
-/*
-* Copyright (c) 2008 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 of the class CPbkxRclvCardSender.
-*
-*/
-
-
-#include "emailtrace.h"
-#include <sendui.h>
-#include <BCardEng.h>
-#include <CPbkContactEngine.h>
-#include <CPbkContactItem.h>
-#include <eikenv.h>
-#include <featmgr.h>
-#include <features.hrh>
-#include <s32file.h>
-#include <CMessageData.h>
-#include <txtrich.h>
-#include <MsgBioUids.h>
-#include <SendUiConsts.h>
-
-#include "cpbkxrclvcardsender.h"
-#include "cpbkxrclcontactconverter.h"
-#include "pbkxrclengineconstants.h"
-#include "pbkxremotecontactlookuppanic.h"
-
-// temp file created for the business card to be sent
-//<cmail> file path is not hardcoded
-_LIT( KVcardExtension, ".vcf" );
-#include <pathinfo.h>
-//</cmail>
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::NewL
-// ---------------------------------------------------------------------------
-//
-CPbkxRclvCardSender* CPbkxRclvCardSender::NewL( 
-    CPbkContactEngine& aContactEngine )
-    {
-    FUNC_LOG;
-    CPbkxRclvCardSender* sender = CPbkxRclvCardSender::NewLC( aContactEngine );
-    CleanupStack::Pop( sender );
-    return sender;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::NewLC
-// ---------------------------------------------------------------------------
-//
-CPbkxRclvCardSender* CPbkxRclvCardSender::NewLC( 
-    CPbkContactEngine& aContactEngine )
-    {
-    FUNC_LOG;
-    CPbkxRclvCardSender* sender = new ( ELeave ) CPbkxRclvCardSender();
-    CleanupStack::PushL( sender );
-    sender->ConstructL( aContactEngine );
-    return sender;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::CPbkxRclvCardSender
-// ---------------------------------------------------------------------------
-//
-CPbkxRclvCardSender::CPbkxRclvCardSender() : CBase()
-    {
-    FUNC_LOG;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::~CPbkxRclvCardSender
-// ---------------------------------------------------------------------------
-//
-CPbkxRclvCardSender::~CPbkxRclvCardSender()
-    {
-    FUNC_LOG;
-    delete iSendUi;
-    delete iCardEngine;
-    delete iFilter;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclvCardSender::ConstructL( CPbkContactEngine& aContactEngine )
-    {
-    FUNC_LOG;
-    iEikEnv = CEikonEnv::Static();
-
-    __ASSERT_ALWAYS( iEikEnv != NULL, PbkxRclPanic( EPbkxRclPanicGeneral ) );
-
-    iSendUi = CSendUi::NewL();
-    iCardEngine = CBCardEngine::NewL( &aContactEngine );
-    CreateFilterL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::SendvCardL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclvCardSender::SendvCardL( 
-        CPbkContactItem& aContactItem, 
-        CPbkxRclContactConverter& aContactConverter )
-    {
-    FUNC_LOG;
-    User::LeaveIfError( GetTemporaryFileNameL( iTempFileName, aContactItem ) );
-    CreateTempFileL( aContactItem, aContactConverter );
-
-    TUid mtmUid = iSendUi->ShowSendQueryL( 
-        NULL, 
-        KCapabilitiesForAllServices, 
-        iFilter );
-
-    if ( mtmUid == KNullUid )
-        {
-        // user pressed cancel
-        DestroyTempFileL();
-        return;
-        }
-
-    CMessageData* messageData = CMessageData::NewLC();
-       
-    //<cmail>
-    RFs fs;
-    RFile attachament;
-    
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs );
-    User::LeaveIfError( attachament.Open( fs, iTempFileName, EFileShareAny ) );
-    CleanupClosePushL( attachament );
-    
-    messageData->AppendAttachmentHandleL( attachament );
-    
-    // Send the message using Send Ui
-    iSendUi->CreateAndSendMessageL( mtmUid, messageData, KMsgBioUidVCard );
-    
-    CleanupStack::PopAndDestroy( &attachament );
-    CleanupStack::PopAndDestroy( &fs );
-    CleanupStack::PopAndDestroy( messageData );
-    
-    //</cmail>
-
-    DestroyTempFileL();
-    
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::CreateTempFileL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclvCardSender::CreateTempFileL( 
-        CPbkContactItem& aContactItem, 
-        CPbkxRclContactConverter& aContactConverter )
-    {
-    FUNC_LOG;
-    RFileWriteStream stream;
-    User::LeaveIfError( 
-        stream.Replace( 
-            iEikEnv->FsSession(), 
-            iTempFileName, //<cmail>
-            EFileWrite ) );
-    CleanupClosePushL( stream );
-    // Convert and export to vcard
-    aContactConverter.ConvertAndExportContactL( aContactItem, stream );
-    
-    stream.CommitL();
-    CleanupStack::PopAndDestroy( &stream );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::DestroyTempFileL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclvCardSender::DestroyTempFileL()
-    {
-    FUNC_LOG;
-    //<cmail>
-    User::LeaveIfError( iEikEnv->FsSession().Delete( iTempFileName ) );
-    //<cmail>
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::CreateRichTextFromFileLC
-// ---------------------------------------------------------------------------
-//
-CRichText* CPbkxRclvCardSender::CreateRichTextFromFileLC()
-    {
-    FUNC_LOG;
-   
-    // Common allocation granularity and buffer size for rich text and
-    // file reading
-    const TInt KBufSize = CEditableText::EDefaultTextGranularity;
-    
-    // Create a rich text object with default formatting
-    CRichText* richText = CRichText::NewL(
-        iEikEnv->SystemParaFormatLayerL(), 
-        iEikEnv->SystemCharFormatLayerL(),
-        CEditableText::ESegmentedStorage,
-        KBufSize  // Allocation granularity
-        );
-    CleanupStack::PushL( richText );
-    
-    // Open the file for reading
-    RFile file;
-    //<cmail> take away double line break
-    User::LeaveIfError( file.Open( iEikEnv->FsSession(), 
-                            iTempFileName, //<cmail>
-                            EFileRead | EFileStream | EFileShareReadersOnly ) );
-    //</cmail>
-    CleanupClosePushL( file );
-    
-    // Create two buffers: 8-bit for reading from file and 16-bit for
-    // converting to 16-bit format
-    HBufC8* buf8 = HBufC8::NewLC( KBufSize );
-    TPtr8 ptr8 = buf8->Des();
-    HBufC16* buf16 = HBufC16::NewLC( ptr8.MaxLength() );
-    TPtr16 ptr16 = buf16->Des();
-
-    // Read, convert and append to rich text until the file ends
-    User::LeaveIfError( file.Read( ptr8 ) );
-    while ( ptr8.Length() > 0 )
-        {
-        ptr16.Copy( ptr8 );
-        richText->InsertL( richText->DocumentLength(), ptr16 );
-        User::LeaveIfError( file.Read( ptr8 ) );
-        }
-    
-    // Cleanup and return
-    CleanupStack::PopAndDestroy( buf16 );
-    CleanupStack::PopAndDestroy( buf8 );
-    CleanupStack::PopAndDestroy( &file );
-    return richText;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::CreateFilterL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclvCardSender::CreateFilterL()
-    {
-    FUNC_LOG;
-    if ( iFilter == NULL )
-        {
-        iFilter = new ( ELeave ) CArrayFixFlat<TUid>( KArrayGranularity );
-        }
-    else
-        {
-        iFilter->Reset();
-        }
-
-    const TUid KPostcardMtmUid = { KSenduiMtmPostcardUidValue };
-
-    iFilter->AppendL( KPostcardMtmUid );    // hide postcard
-    iFilter->AppendL( KSenduiMtmAudioMessageUid ); // hide audio message
-
-    // Check must we disable SMS menuitem
-    if ( !iSendUi->CanSendBioMessage( KMsgBioUidVCard ) )
-        {
-        iFilter->AppendL( KSenduiMtmSmsUid );	// hide SMS
-        }
-    
-    // Hide MMS if not supported
-    if ( !FeatureManager::FeatureSupported( KFeatureIdMMS ) )
-        {
-        iFilter->AppendL(KSenduiMtmMmsUid);
-        }
-    
-    // Hide Email if not supported
-    if ( !FeatureManager::FeatureSupported( KFeatureIdEmailUi ) )
-        {
-        iFilter->AppendL( KSenduiMtmSmtpUid );
-        iFilter->AppendL( KSenduiMtmImap4Uid );
-        iFilter->AppendL( KSenduiMtmPop3Uid );
-        iFilter->AppendL( KSenduiMtmSyncMLEmailUid );
-        }
-    
-    }
-//<cmail> hard coded paths removed
-// ---------------------------------------------------------------------------
-// CPbkxRclvCardSender::GetTemporaryFileName
-// ---------------------------------------------------------------------------
-//
-TInt CPbkxRclvCardSender::GetTemporaryFileNameL( TFileName& aFileName, CPbkContactItem& aContactItem )
-    {
-    TFileName KPath;
-    RFs fsSession;
-    TInt result = fsSession.Connect();
-    if( result==KErrNone )
-        {
-        fsSession.PrivatePath( KPath );
-        TFindFile findFile( fsSession );
-        aFileName = KPath;
-        result = findFile.FindByDir( KPath, KNullDesC );
-        if (result != KErrNone ) //create path if doesn't exists
-            {
-            fsSession.CreatePrivatePath( TDriveUnit(PathInfo::PhoneMemoryRootPath() ) );
-            result = findFile.FindByDir( KPath, KNullDesC );
-            }
-        aFileName = findFile.File();
-        aFileName.Append( *aContactItem.GetContactTitleL() ); // getting name from contact
-        aFileName.Append( KVcardExtension ); // postfix extension
-        fsSession.Close();
-        }
-    return result;
-    }
-//</cmail>
-