ncdengine/provider/server/src/ncdfileinfo.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:51:10 +0200
changeset 0 ba25891c3a9e
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2006 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:   CNcdFileInfo implementation
*
*/


#include "ncdfileinfo.h"
#include "catalogsdebug.h"
#include "catalogsutils.h"

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CNcdFileInfo* CNcdFileInfo::NewLC( 
    const TDesC& aFilePath,
    const TDesC& aMimeType, 
    TNcdItemPurpose aPurpose )
    {
    CNcdFileInfo* self = new(ELeave) CNcdFileInfo( aPurpose );
    CleanupStack::PushL( self );  
    self->ConstructL( aFilePath, aMimeType );
    return self;
    }
    
    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CNcdFileInfo* CNcdFileInfo::NewLC( RReadStream& aStream )
    {
    CNcdFileInfo* self = new(ELeave) CNcdFileInfo( 
        ENcdItemPurposeUnknown );
    CleanupStack::PushL( self );  
    self->InternalizeL( aStream );
    return self;
    }
    

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CNcdFileInfo::~CNcdFileInfo()
    {
    DLTRACEIN((""));
    delete iFilePath;
    delete iMimeType;
    delete iData;
    DLTRACEOUT((""));
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
const TDesC& CNcdFileInfo::FilePath() const
    {
    return *iFilePath;
    }
    
    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
const TDesC& CNcdFileInfo::MimeType() const
    {
    return *iMimeType;
    }
    

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::SetMimeTypeL( const TDesC& aMime )
    {
    delete iMimeType;
    iMimeType = NULL;
    iMimeType = aMime.AllocL();
    }
    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
TNcdItemPurpose CNcdFileInfo::Purpose() const
    {
    return iPurpose;
    }


// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::SetDataL( HBufC8* aData )
    {
    delete iData;
    iData = aData;
    if ( !iData ) 
        {
        iData = KNullDesC8().AllocL();
        }
    }


// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
const TDesC8& CNcdFileInfo::Data() const
    {    
    return *iData;
    }
        
    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::ExternalizeL( RWriteStream& aStream ) const
    {
    DLTRACEIN((""));
    
    DLINFO(( "Purpose: %d", iPurpose ));
    DLINFO(( _L("Filepath: %S"), iFilePath ));
    DLINFO(( _L("Mimetype: %S"), iMimeType));
    aStream.WriteInt32L( iPurpose );
    ExternalizeDesL( *iFilePath, aStream );
    ExternalizeDesL( *iMimeType, aStream );
    ExternalizeDesL( *iData, aStream );
    DLTRACEOUT((""));
    }


// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::ExternalizeWithoutFilenamesL( 
    RWriteStream& aStream ) const
    {
    DLTRACEIN((""));
    aStream.WriteInt32L( iPurpose );
    ExternalizeDesL( KNullDesC, aStream );
    ExternalizeDesL( *iMimeType, aStream );
    ExternalizeDesL( KNullDesC8, aStream );
    DLTRACEOUT((""));
    }



    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::InternalizeL( RReadStream& aStream )
    {
    DLTRACEIN((""));
    iPurpose = static_cast<TNcdItemPurpose>( aStream.ReadInt32L() );
    InternalizeDesL( iFilePath, aStream );
    InternalizeDesL( iMimeType, aStream );
    InternalizeDesL( iData, aStream );

    DLINFO(( "Purpose: %d", iPurpose ));
    DLINFO(( _L("Filepath: %S"), iFilePath ));
    DLINFO(( _L("Mimetype: %S"), iMimeType));

    DLTRACEOUT((""));
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CNcdFileInfo::CNcdFileInfo( TNcdItemPurpose aPurpose ) :
    iPurpose( aPurpose )
    {
    }


// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CNcdFileInfo::ConstructL( const TDesC& aFilePath,
    const TDesC& aMimeType )
    {
    iFilePath = aFilePath.AllocL();
    iMimeType = aMimeType.AllocL();
    iData = KNullDesC8().AllocL();
    }