homescreenpluginsrv/hspsodt/src/hspsodt.cpp
changeset 0 79c6a41cd166
child 3 ff572005ac23
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/hspsodt/src/hspsodt.cpp	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,911 @@
+/*
+* Copyright (c) 2002-2004 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:  Class represents an Object Description Tree of Xuikon.
+*
+*/
+
+
+#include "hspsodt.h"
+#include <s32strm.h>
+#include <s32mem.h>
+#include "hspsthememanagement.h"
+#include "hspsdomdocument.h"
+#include "hspsresource.h"
+
+/* Literal delim is used in separation of theme header and and other data in ODT-streaming. */
+_LIT(KDelim, "#");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ChspsODT
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+ChspsODT::ChspsODT()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void ChspsODT::ConstructL()
+    {
+    iDomDocument = ChspsDomDocument::NewL();
+    iResourceList = new( ELeave ) CArrayPtrSeg<ChspsResource>( KPathListGranularity ); 
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C ChspsODT* ChspsODT::NewL()
+    {
+    ChspsODT* self = new( ELeave ) ChspsODT;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C ChspsODT* ChspsODT::NewLC( const TDesC8& aStreamData )
+    {
+    ChspsODT* data = ChspsODT::NewL();
+    CleanupStack::PushL( data );
+    RDesReadStream stream( aStreamData );
+    CleanupClosePushL( stream );
+    data->InternalizeL( stream );
+    CleanupStack::PopAndDestroy( &stream );
+    return data;
+    }
+    
+// Destructor
+ChspsODT::~ChspsODT()
+    {
+    delete iDescription;
+    delete iLogoFile;
+    delete iPreviewFile;
+    delete iProviderName;
+    delete iThemeFullName;
+    delete iThemeShortName;
+    delete iThemeVersion;
+    delete iPackageVersion;
+    // clean up the array
+    if( iResourceList )
+        {
+        iResourceList->ResetAndDestroy();
+        delete iResourceList;
+        }
+    delete iDomDocument;
+    }
+
+
+// -----------------------------------------------------------------------------
+// ChspsODT::MarshalHeaderL
+// Marshals the ODT header into descriptor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C HBufC8* ChspsODT::MarshalHeaderL() const
+    {
+    CBufFlat* buf = CBufFlat::NewL( KMaxHeaderDataLength8 );
+    CleanupStack::PushL( buf );
+    RBufWriteStream stream( *buf );     //stream over the buffer
+    CleanupClosePushL( stream );
+    ExternalizeHeaderL( stream );
+    CleanupStack::PopAndDestroy( &stream );
+    
+    //Create a heap descriptor from the buffer
+    HBufC8* des = HBufC8::NewL( buf->Size() );
+    TPtr8 ptr( des->Des() );
+    buf->Read( 0, ptr, buf->Size() );
+    CleanupStack::PopAndDestroy( buf );
+    
+    return des;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::UnMarshalHeaderLC
+// Unmarshals the ODT header from descriptor stream
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C ChspsODT* ChspsODT::UnMarshalHeaderLC( const TDesC8& aStreamData )
+    {
+    ChspsODT* data = ChspsODT::NewL();
+    CleanupStack::PushL( data );
+    RDesReadStream stream( aStreamData );
+    CleanupClosePushL( stream );
+    data->InternalizeHeaderL( stream );
+    CleanupStack::PopAndDestroy( &stream );
+    
+    return data;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::UnMarshalHeaderL
+// Unmarshals the ODT header from descriptor stream
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::UnMarshalHeaderL( const TDesC8& aStreamData )
+    {
+
+    RDesReadStream stream( aStreamData );
+    CleanupClosePushL( stream );
+    InternalizeHeaderL( stream );
+    CleanupStack::PopAndDestroy( &stream );
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ExternalizeL
+// Externalizes the ODT
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::ExternalizeL( RWriteStream& aStream ) const
+    {
+    ExternalizeHeaderL( aStream );
+    ExternalizeResourceListL( aStream );   
+    aStream << *iDomDocument;    
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::InternalizeL
+// Internalizes the ODT
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------       
+EXPORT_C void ChspsODT::InternalizeL( RReadStream& aStream )
+    {
+    InternalizeHeaderL( aStream );
+    // consumes header delimiter
+    aStream.ReadInt16L();
+    InternalizeResourceListL( aStream );    
+    delete iDomDocument;
+    iDomDocument = NULL;
+    iDomDocument = ChspsDomDocument::NewL( aStream );
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ExternalizeHeaderL
+// Externalizes the ODT header
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+void ChspsODT::ExternalizeHeaderL( RWriteStream& aStream ) const
+    {
+    if ( iPackageVersion )
+        {
+        aStream << *iPackageVersion;
+        }
+    else
+        {
+        aStream << KNullDesC;
+        }
+    
+    aStream.WriteUint32L( iFamilyMask );
+    aStream.WriteUint32L( iConfigurationType );
+    aStream.WriteUint32L( iRootUid );
+    aStream.WriteUint32L( iProviderUid );
+    aStream.WriteUint32L( iThemeUid );
+    aStream.WriteInt32L( iMultiInstance );
+    if ( iDescription )
+        {
+        aStream << *iDescription;
+        }    
+    else
+        {
+        aStream << KNullDesC;
+        }
+    if ( iLogoFile )
+        {
+        aStream << *iLogoFile;
+        }    
+    else
+        {
+        aStream << KNullDesC;
+        }
+    if ( iPreviewFile )
+        {
+        aStream << *iPreviewFile;
+        }    
+    else
+        {
+        aStream << KNullDesC;
+        }
+    if ( iProviderName )
+        {
+        aStream << *iProviderName;
+        }
+    else
+        {
+        aStream << KNullDesC;
+        }
+    
+    if ( iThemeFullName )
+        {
+        aStream << *iThemeFullName;
+        }
+    else 
+        {
+        aStream << KNullDesC;
+        }
+        
+    if ( iThemeShortName )
+        {
+        aStream << *iThemeShortName;
+        }
+    else 
+        {
+        aStream << KNullDesC;
+        }
+        
+    if ( iThemeVersion )
+        {
+        aStream << *iThemeVersion;
+        }
+    else
+        {
+        aStream << KNullDesC;
+        }
+    aStream.WriteInt32L( iLanguage );
+    aStream.WriteUint32L( iFlags );
+    // end of the header delimiter
+    aStream.WriteL( KDelim );
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::InternalizeHeaderL
+// Internalizes the ODT header
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------       
+EXPORT_C void ChspsODT::InternalizeHeaderL( RReadStream& aStream )
+    {
+    HBufC* version = HBufC::NewL( aStream, KMaxFileName );
+    CleanupStack::PushL( version );
+    if ( iPackageVersion && version->Des().Compare( iPackageVersion->Des() ) != 0 )
+        {
+        // Package version check requested (iPackageVersion defined) 
+        // and package version not supported
+        User::Leave( KErrNotSupported );
+        }
+    if ( !iPackageVersion && version->Length() )
+        {
+        // Package version check not requested
+        iPackageVersion = version->AllocL();
+        }
+    CleanupStack::PopAndDestroy( version );
+    
+    iFamilyMask = aStream.ReadUint32L();    
+    iConfigurationType = aStream.ReadUint32L();
+    iRootUid = aStream.ReadUint32L();
+    iProviderUid = aStream.ReadUint32L();
+    iThemeUid = aStream.ReadUint32L();
+    iMultiInstance = aStream.ReadInt32L();
+    
+    delete iDescription;
+    iDescription = NULL;
+    iDescription = HBufC::NewL(aStream, KMaxDescLength );
+    
+    delete iLogoFile;
+    iLogoFile = NULL;
+    iLogoFile = HBufC::NewL(aStream, KMaxFileName );
+    
+    delete iPreviewFile;
+    iPreviewFile = NULL;
+    iPreviewFile = HBufC::NewL(aStream, KMaxFileName );
+        
+    delete iProviderName;
+    iProviderName = NULL;
+    iProviderName = HBufC::NewL(aStream, KMaxFileName );
+    
+    delete iThemeFullName;
+    iThemeFullName = NULL;
+    iThemeFullName = HBufC::NewL(aStream, KMaxFileName );
+    
+    delete iThemeShortName;
+    iThemeShortName = NULL;
+    iThemeShortName = HBufC::NewL(aStream, KMaxFileName );
+    
+    delete iThemeVersion;
+    iThemeVersion = NULL;
+    iThemeVersion = HBufC::NewL(aStream, KMaxFileName );
+        
+    iLanguage = aStream.ReadInt32L();
+    iFlags = aStream.ReadUint32L();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::AddResourceL
+// Adds a resource into Resource List. Takes ownership.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::AddResourceL( ChspsResource* aResource )
+    {
+    const TInt resourceIndex = CheckResourceL( aResource );   
+    if ( resourceIndex >= 0 ) 
+    	{
+        ChspsResource* resource = iResourceList->At( resourceIndex );
+        delete resource;
+        resource = NULL;
+        iResourceList->Delete( resourceIndex );
+    	}
+    iResourceList->AppendL( aResource );
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::CheckResourceL
+// Check for duplicates
+// -----------------------------------------------------------------------------
+TInt ChspsODT::CheckResourceL( ChspsResource* aResource )
+	{
+	if ( !aResource )
+		{
+		User::Leave( KErrArgument );
+		}
+	
+	for ( TInt index=0; index < ResourceCount(); index++ )
+		{
+		ChspsResource& r = ResourceL(index);
+		if ( r.ResourceId() == aResource->ResourceId() 
+				&& r.FileName() == aResource->FileName() )
+			{
+			return index;
+			}
+		}
+	
+	return KErrNotFound;
+	}
+
+// -----------------------------------------------------------------------------
+// ChspsODT::DeleteResourceL
+// Deletes resource from the element array
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::DeleteResourceL( TInt aIndex )
+    {
+    if ( aIndex < 0 || aIndex >= ResourceCount() )
+        {
+        User::Leave( KErrArgument );
+        }
+        
+    ChspsResource* resource = iResourceList->At( aIndex );    
+    if ( resource )
+        {
+        delete resource;
+        resource = NULL;
+        iResourceList->Delete( aIndex );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ResourceL
+// Get the resource by the index
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C ChspsResource& ChspsODT::ResourceL( TInt aIndex ) const
+    {
+    if ( aIndex < 0 || aIndex >= ResourceCount() )
+        {
+        User::Leave( KErrArgument );
+        }
+        
+    return ( *iResourceList->At(aIndex));
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ElementCount
+// Returns the amount of elements
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C TInt ChspsODT::ResourceCount() const
+    {
+    return iResourceList->Count();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ExternalizeResourceListL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::ExternalizeResourceListL( RWriteStream& aStream ) const
+    {
+    // Stream out the resource list
+	TInt count = iResourceList->Count();
+	aStream.WriteInt32L(count);
+	ChspsResource* resource;
+	for (TInt i=0;i<count;i++)
+	    {
+	    resource = iResourceList->At(i);
+	    resource->ExternalizeL(aStream);
+	    }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::InternalizeResourceListL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::InternalizeResourceListL( RReadStream& aStream )
+    {
+    // clean up the array
+    if( iResourceList )
+        {
+        iResourceList->ResetAndDestroy();
+        }
+	// stream in the resource list
+	TInt count = aStream.ReadInt32L();
+	for (TInt i=0;i<count;i++)
+		{
+		ChspsResource* resource = ChspsResource::NewL();
+       	CleanupStack::PushL(resource);
+       	resource->InternalizeL(aStream);
+       	iResourceList->AppendL( resource );
+       	CleanupStack::Pop( resource ); // now owned by array
+       	resource = NULL;
+		}
+    }
+
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetRootUid
+// Set RootUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetRootUid( TInt aUid )
+    {
+    iRootUid = aUid;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::RootUid
+// Get RootUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C TInt ChspsODT::RootUid() const
+    {
+    return iRootUid;        
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetProviderUid
+// Set ProviderUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetProviderUid( TInt aUid )
+    {
+    iProviderUid = aUid;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ProviderUid
+// Get ProviderUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C TInt ChspsODT::ProviderUid() const
+    {
+    return iProviderUid;    
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetThemeUid
+// Set ThemeUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetThemeUid( TInt aUid )
+    {
+    iThemeUid = aUid;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ThemeUid
+// Get ThemeUid
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C  TInt ChspsODT::ThemeUid() const
+    {
+    return iThemeUid; 
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetProviderNameL
+// Set ProviderNameL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetProviderNameL( const TDesC& aName )
+    {
+    delete iProviderName;
+    iProviderName = NULL;
+    iProviderName = aName.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ProviderName
+// Get ProviderName
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::ProviderName() const
+    {
+    if ( iProviderName )
+        {
+        return *iProviderName;
+        }
+    else
+        {
+        return KNullDesC;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetThemeFullNameL
+// Set ThemeFullNameL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetThemeFullNameL( const TDesC& aName )
+    {
+    delete iThemeFullName;
+    iThemeFullName = NULL;
+    iThemeFullName = aName.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ThemeFullName
+// Get ThemeFullName
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::ThemeFullName() const
+    {
+    if ( iThemeFullName )
+        {
+        return *iThemeFullName;
+        }
+    else
+        {
+        return KNullDesC;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetThemeShortNameL
+// Set ThemeShortNameL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::SetThemeShortNameL( const TDesC& aName )
+    {
+    delete iThemeShortName;
+    iThemeShortName = NULL;
+    iThemeShortName = aName.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ThemeShortName
+// Get ThemeShortName
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::ThemeShortName() const
+    {
+    if ( iThemeShortName )
+        {
+        return *iThemeShortName;
+        }
+    else
+        {
+        return KNullDesC;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetThemeVersionL
+// Set ThemeVersionL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::SetThemeVersionL( const TDesC& aVersion )
+    {
+    delete iThemeVersion;
+    iThemeVersion = NULL;
+    iThemeVersion = aVersion.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::ThemeVersion
+// Get ThemeVersion
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C const TDesC& ChspsODT::ThemeVersion() const
+    {
+    if ( iThemeVersion )
+        {
+        return *iThemeVersion;
+        }
+    else
+        {
+        return KNullDesC;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetOdtLanguage
+// Set OdtLanguage
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::SetOdtLanguage( TInt aLanguage )
+    {
+    iLanguage = aLanguage;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::OdtLanguage
+// Get OdtLanguage
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C TInt ChspsODT::OdtLanguage() const
+    {
+    return iLanguage;        
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetFlags
+// Set Flags
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetFlags( TUint aFlags )
+    {
+    iFlags = aFlags;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::Flags
+// Get Flags
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C TUint ChspsODT::Flags() const
+    {
+  return iFlags;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::DomDocument
+// Get DomDocument
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C ChspsDomDocument& ChspsODT::DomDocument() const
+    {
+    return *iDomDocument;
+    }
+  
+// -----------------------------------------------------------------------------
+// ChspsODT::CloneL()
+// Makes a clone of this ODT and returns pointer to it
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C ChspsODT* ChspsODT::CloneL()
+    {
+    ChspsODT* clone = new (ELeave) ChspsODT;
+    CleanupStack::PushL( clone );
+    clone->ConstructL();
+    clone->SetConfigurationType( iConfigurationType );
+    clone->SetRootUid( iRootUid );
+    clone->SetProviderUid( iProviderUid );
+    clone->SetThemeUid( iThemeUid );
+    if( iProviderName )
+        {
+        clone->SetProviderNameL( *iProviderName );
+        }
+    if( iThemeFullName )
+        {
+        clone->SetThemeFullNameL( *iThemeFullName );
+        }
+    if( iThemeShortName )
+        {
+        clone->SetThemeShortNameL( *iThemeShortName );
+        }
+    if( iThemeVersion )
+        {
+        clone->SetThemeVersionL( *iThemeVersion );
+        }
+    if( iPackageVersion )
+        {
+        clone->SetPackageVersionL( *iPackageVersion );
+        }
+    clone->SetOdtLanguage( iLanguage );
+    clone->SetFlags( iFlags );
+          
+    TInt resourceCount = iResourceList->Count();
+
+    for ( TInt index = 0; index < resourceCount ; index++ )
+        {
+        ChspsResource& resource = ResourceL( index );
+        clone->AddResourceL( resource.CloneL() );
+        }
+       
+    CleanupStack::Pop( clone );
+    return clone;
+    }
+    
+// -----------------------------------------------------------------------------
+// ChspsODT::CopyDomDocumentL()
+// Clones the aDom and sets it as this ChspsODT's DomDocument
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void ChspsODT::CopyDomDocumentL( ChspsDomDocument& aDom )
+    {
+    delete iDomDocument;
+    iDomDocument = NULL;
+    iDomDocument = aDom.CloneL();
+    }    
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetConfigurationType()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void ChspsODT::SetConfigurationType( TUint aType )
+	{
+	iConfigurationType = aType;
+	}
+  
+// -----------------------------------------------------------------------------
+// ChspsODT::ConfigurationType()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint ChspsODT::ConfigurationType() const
+	{
+	return iConfigurationType;
+	}
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetPackageVersionL
+// Set package version
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C void ChspsODT::SetPackageVersionL( const TDesC& aVersion )
+    {
+    delete iPackageVersion;
+    iPackageVersion = NULL;
+    iPackageVersion = aVersion.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::PackageVersion
+// Get package version
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C const TDesC& ChspsODT::PackageVersion() const
+    {
+    if ( iPackageVersion )
+        {
+        return *iPackageVersion;
+        }
+    else
+        {
+        return KNullDesC;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetFamily
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetFamily( const TUint32 aFamilyMask )
+    {    
+    iFamilyMask = aFamilyMask;
+    }
+                 
+// -----------------------------------------------------------------------------
+// ChspsODT::Family
+// -----------------------------------------------------------------------------
+EXPORT_C TUint32 ChspsODT::Family() const
+    {    
+    return iFamilyMask;    
+    }   
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetMultiInstance
+// Set MultiInstance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetMultiInstance( TInt aMultiInstance )
+    {
+    iMultiInstance = aMultiInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::MultiInstance
+// Get MultiInstance
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+EXPORT_C  TInt ChspsODT::MultiInstance() const
+    {
+    return iMultiInstance; 
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetDescriptionL
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetDescriptionL( const TDesC& aDesc )
+    {    
+    delete iDescription;
+    iDescription = NULL;
+    iDescription = aDesc.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::Description
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::Description() const
+    {
+    if ( iDescription )
+        {
+        return *iDescription;
+        }
+    else
+        {
+        return KNullDesC;
+        } 
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetLogoFileL
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetLogoFileL( const TDesC& aPath )
+    {    
+    delete iLogoFile;
+    iLogoFile = NULL;
+    iLogoFile = aPath.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::LogoFile
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::LogoFile() const
+    {
+    if ( iLogoFile )
+        {
+        return *iLogoFile;
+        }
+    else
+        {
+        return KNullDesC;
+        } 
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::SetPreviewFileL
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::SetPreviewFileL( const TDesC& aPath )
+    {    
+    delete iPreviewFile;
+    iPreviewFile = NULL;
+    iPreviewFile = aPath.AllocL();
+    }
+
+// -----------------------------------------------------------------------------
+// ChspsODT::PreviewFile
+// -----------------------------------------------------------------------------    
+EXPORT_C const TDesC& ChspsODT::PreviewFile() const
+    {
+    if ( iPreviewFile )
+        {
+        return *iPreviewFile;
+        }
+    else
+        {
+        return KNullDesC;
+        } 
+    }
+
+//  End of File