--- 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