messagingapp/msgutils/unidatamodel/unimmsdataplugin/src/UniMimeInfo.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingapp/msgutils/unidatamodel/unimmsdataplugin/src/UniMimeInfo.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-/*
-* Copyright (c) 2005 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: 
-*       CUniMimeInfo, Storage for objects mime headers.
-*
-*
-*/
-
-
-// ========== INCLUDE FILES ================================
-
-#include <e32def.h>     // for basic types
-#include <eikenv.h>     // for CBase
-#include <msvstd.h>     // for TMsvId
-#include <msvids.h>     // for KMsvTempIndexEntryId
-
-#include <mmsvattachmentmanager.h>
-#include <cmsvattachment.h>
-#include <cmsvmimeheaders.h>
-
-#include "msgtextutils.h"
-#include "UniModelConst.h"
-#include "UniDataUtils.h"
-#include "UniMimeInfo.h"
-
-// ========== EXTERNAL DATA STRUCTURES =====================
-
-// ========== EXTERNAL FUNCTION PROTOTYPES =================
-
-// ========== CONSTANTS ====================================
-
-// Maximum num of characters for descriptors stored in HBufC members
-const TInt KMaxMimeFieldLength  = 260;
-const TInt KMaxContentLocation  = 100; // Max byte size for content location
-
-// From RFC2183. Content-Disposition filename max length.
-// Does not need special handling.
-//const TInt KMaxMimeFieldParamLength = 78;
-
-// ========== MACROS =======================================
-
-// ========== LOCAL CONSTANTS AND MACROS ===================
-
-// ========== MODULE DATA STRUCTURES =======================
-
-
-// ========== LOCAL FUNCTION PROTOTYPES ====================
-
-// ========== LOCAL FUNCTIONS ==============================
-
-// ========== MEMBER FUNCTIONS =============================
-
-
-// ---------------------------------------------------------
-// CUniMimeInfo
-//
-// Constructor
-// ---------------------------------------------------------
-//
-CUniMimeInfo::CUniMimeInfo() : iContentTypeCharset(0)
-    {
-    }
-
-// ---------------------------------------------------------
-// CUniMimeInfo
-//
-// Destructor.
-// ---------------------------------------------------------
-//
-CUniMimeInfo::~CUniMimeInfo()
-    {
-    delete iContentDescription;
-    delete iContentBase;
-    delete iContentLocation;
-    delete iContentId;
-    delete iContentType;
-    delete iContentDisposition;
-    }
-
-
-// ---------------------------------------------------------
-// Accessors/Mutators
-// ---------------------------------------------------------
-
-// ---------------------------------------------------------
-// SetContentTypeL
-// NOTE: 8 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentTypeL( const TDesC8& aSourceDesc )
-    {
-    if ( aSourceDesc.Length() > KMaxMimeFieldLength )
-        User::Leave( KErrArgument );
-
-    HBufC8* buf = aSourceDesc.AllocL();
-    delete iContentType;
-    iContentType = buf;
-    }
-
-// ---------------------------------------------------------
-// SetContentLocationL
-// NOTE: 16 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentLocationL( const TDesC& aSourceDesc )
-    {
-    TInt copyLen = aSourceDesc.Length();
-    if ( copyLen > KMaxContentLocation )
-        {
-        copyLen = KMaxContentLocation;
-        }
-
-    HBufC* buf = HBufC::NewL( copyLen );
-    *buf = aSourceDesc.Left( copyLen );
-    delete iContentLocation;
-    iContentLocation = buf;
-    }
-
-// ---------------------------------------------------------
-// SetContentIdL
-// NOTE: 8 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentIdL( const TDesC8& aSourceDesc )
-    {
-    if ( aSourceDesc.Length() > KMaxMimeFieldLength )
-        User::Leave( KErrArgument );
-
-    HBufC8* buf = aSourceDesc.AllocL();
-    delete iContentId;
-    iContentId = buf;
-    }
-
-// ---------------------------------------------------------
-// SetContentBaseL
-// NOTE: 8 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentBaseL( const TDesC8& aSourceDesc )
-    {
-    if ( aSourceDesc.Length() > KMaxMimeFieldLength )
-        User::Leave( KErrArgument );
-
-    HBufC8* buf = aSourceDesc.AllocL();
-    delete iContentBase;
-    iContentBase = buf;
-    }
-
-// ---------------------------------------------------------
-// SetContentDescriptionL
-// NOTE: 8 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentDescriptionL( const TDesC8& aSourceDesc )
-    {
-    if ( aSourceDesc.Length() > KMaxMimeFieldLength )
-        User::Leave( KErrArgument );
-
-    HBufC8* buf = aSourceDesc.AllocL();
-    delete iContentDescription;
-    iContentDescription = buf;
-    }
-
-// ---------------------------------------------------------
-// SetContentDispositionL
-// NOTE: 8 bit.
-// ---------------------------------------------------------
-void CUniMimeInfo::SetContentDispositionL( const TDesC8& aSourceDesc )
-    {
-    if ( aSourceDesc.Length() > KMaxMimeFieldLength )
-        User::Leave( KErrArgument );
-
-    HBufC8* buf = aSourceDesc.AllocL();
-    delete iContentDisposition;
-    iContentDisposition = buf;
-    }
-
-// ---------------------------------------------------------
-// Size
-// ---------------------------------------------------------
-TInt CUniMimeInfo::Size() const
-    {
-    // TODO: Check that MIME info size matches to the actual
-    //       MIME header size
-    //TInt size = sizeof( iContentTypeCharset );
-    TInt size = sizeof( TUint32 ); // mmsengine uses this
-
-    if ( iContentDescription ) size += iContentDescription->Size();
-
-    if ( iContentBase ) size += iContentBase->Size();
-
-    if ( iContentLocation ) size += iContentLocation->Size();
-
-    if ( iContentId ) size += iContentId->Size();
-
-    if ( iContentType ) size += iContentType->Size();
-
-    if ( iContentDisposition ) size += iContentDisposition->Size();
-
-    return size;
-    }
-
-// ---------------------------------------------------------
-// CUniMimeInfo::SaveMimeInfoL
-//
-// Save MIME info
-// ---------------------------------------------------------
-//
-void CUniMimeInfo::SaveMimeInfoL( MMsvAttachmentManager& aManager, CMsvAttachment& aAttachment )
-    {
-    // Content-Location.
-    HBufC* safeContentLocation = CMsgTextUtils::GetSafeAttachmentNameLC(
-        aManager,
-        ContentLocation(),
-        aAttachment.Id(),
-        ETrue );
-    SetContentLocationL( *safeContentLocation );
-    CleanupStack::PopAndDestroy( safeContentLocation );
-
-    CMsvMimeHeaders* msvMime = CMsvMimeHeaders::NewLC();
-    msvMime->RestoreL( aAttachment );
-
-    msvMime->SetContentLocationL( *iContentLocation );
-
-    // Content-type
-    if ( iContentType )
-        {
-        TInt slash = iContentType->Locate( '/' );
-        if ( slash != KErrNotFound )
-            {
-            msvMime->SetContentTypeL( iContentType->Left( slash ) );
-            msvMime->SetContentSubTypeL( iContentType->Mid( slash + 1 ) );
-            }
-        }
-
-    // Character set
-    if ( iContentTypeCharset )
-        {
-        msvMime->SetMimeCharset( iContentTypeCharset );
-        }
-    // Content-Id
-    if ( iContentId && iContentId->Length() )
-        {
-        msvMime->SetContentIdL( *iContentId );
-        }
-    // Content-Description
-    if ( iContentDescription && iContentDescription->Length() )
-        {
-        msvMime->SetContentDescriptionL( *iContentDescription );
-        }
-    // Content-Base
-    if ( iContentBase && iContentBase->Length() )
-        {
-        msvMime->SetContentBaseL( *iContentBase );
-        }
-    // Content-Disposition
-    if ( iContentDisposition && iContentDisposition->Length() )
-        {
-        msvMime->SetContentDispositionL( *iContentDisposition );
-        }
-    msvMime->StoreL( aAttachment );
-    CleanupStack::PopAndDestroy( msvMime );
-    }
-
-// ---------------------------------------------------------
-// CUniMimeInfo::DoReadMimeInfoL
-//
-// Reads mime info from clientMtm to aMimeInfo.
-// If function leaves whole MimeInfo object should be considered
-// invalid.
-// ---------------------------------------------------------
-//
-
-void CUniMimeInfo::ReadMimeInfoL( CMsvAttachment& aAttachment )
-    {
-    CMsvMimeHeaders* msvMime = CMsvMimeHeaders::NewLC();
-    msvMime->RestoreL( aAttachment );
-
-    // Content-Location
-    SetContentLocationL( msvMime->ContentLocation() );
-
-    // Content-ID
-    SetContentIdL( msvMime->ContentId() );
-
-    TBuf8<KMaxDataTypeLength> contentType;
-    contentType.Copy( msvMime->ContentType() );
-    contentType.Append( _L8("/") );
-    contentType.Append( msvMime->ContentSubType() );
-    // Content-type
-    SetContentTypeL( contentType );
-
-    // Character set
-    SetCharset( msvMime->MimeCharset() );
-
-    // Content-Description
-    SetContentDescriptionL( msvMime->ContentDescription() );
-
-    // Content-Base
-    SetContentBaseL( msvMime->ContentBase() );
-
-    // Content-Disposition
-    SetContentDispositionL( msvMime->ContentDisposition() );
-
-    CleanupStack::PopAndDestroy( msvMime );
-    }
-
-// ---------------------------------------------------------
-// EnsureContentLocationL
-// ---------------------------------------------------------
-void CUniMimeInfo::EnsureContentLocationL(
-    MMsvAttachmentManager& aManager,
-    CMsvAttachment& aAttachment,
-    TDesC& aPlainFileName )
-    {
-    if ( !ContentLocation().Length() && aPlainFileName.Length() )
-        {
-        // Generate safe content location from file name
-        HBufC* contLoc = CMsgTextUtils::GetSafeAttachmentNameLC(
-            aManager,
-            aPlainFileName,
-            aAttachment.Id(),
-            ETrue );
-        SetContentLocationL( *contLoc );
-
-        CleanupStack::PopAndDestroy( contLoc );
-
-        // Save ContentLocation.
-        SaveMimeInfoL( aManager, aAttachment );
-        }
-    }
-
-// EOF