ncdengine/provider/src/ncdpurchasedownloadinfo.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/src/ncdpurchasedownloadinfo.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,396 @@
+/*
+* Copyright (c) 2006-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 CNcdPurchaseDownloadInfo
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "ncdutils.h"
+#include "catalogsutils.h"
+#include "ncdattributes.h"
+
+EXPORT_C CNcdPurchaseDownloadInfo* CNcdPurchaseDownloadInfo::NewL()
+    {
+    CNcdPurchaseDownloadInfo* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+EXPORT_C CNcdPurchaseDownloadInfo* CNcdPurchaseDownloadInfo::NewLC()
+    {
+    CNcdPurchaseDownloadInfo* self = new (ELeave) CNcdPurchaseDownloadInfo;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+EXPORT_C CNcdPurchaseDownloadInfo* CNcdPurchaseDownloadInfo::NewL(
+    const MNcdPurchaseDownloadInfo& aSource )
+    {
+    CNcdPurchaseDownloadInfo* self = NewLC( aSource );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+EXPORT_C CNcdPurchaseDownloadInfo* CNcdPurchaseDownloadInfo::NewLC(
+    const MNcdPurchaseDownloadInfo& aSource )
+    {
+    CNcdPurchaseDownloadInfo* self = new (ELeave) CNcdPurchaseDownloadInfo;
+    CleanupStack::PushL( self );
+    self->ConstructL( aSource );
+    return self;
+    }
+
+
+EXPORT_C CNcdPurchaseDownloadInfo::CNcdPurchaseDownloadInfo()
+: CBase()
+    {
+    }
+
+
+EXPORT_C void CNcdPurchaseDownloadInfo::ConstructL()
+    {
+    SetContentUsage( MNcdPurchaseDownloadInfo::EDownloadable );
+    SetContentUriL( KNullDesC );
+    SetContentValidityDelta( -1 );
+    SetContentMimeTypeL( KNullDesC );
+    SetContentSize( 0 );
+    SetLaunchable( EFalse );
+    SetDescriptorTypeL( KNullDesC );
+    SetDescriptorNameL( KNullDesC );
+    SetDescriptorUriL( KNullDesC );
+    SetDescriptorDataL( KNullDesC8 );
+    SetRightsUriL( KNullDesC );
+    SetRightsTypeL( KNullDesC );
+    SetActivationKeyL( KNullDesC );
+    SetInstallNotificationUriL( KNullDesC );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::ConstructL(
+    const MNcdPurchaseDownloadInfo& aSource )
+    {
+    SetContentUsage( aSource.ContentUsage() );
+    SetContentUriL( aSource.ContentUri() );
+    SetContentValidityDelta( aSource.ContentValidityDelta() );
+    SetContentMimeTypeL( aSource.ContentMimeType() );
+    SetContentSize( aSource.ContentSize() );
+    SetLaunchable( aSource.IsLaunchable() );
+    SetDescriptorTypeL( aSource.DescriptorType() );
+    SetDescriptorNameL( aSource.DescriptorName() );
+    SetDescriptorUriL( aSource.DescriptorUri() );
+    SetDescriptorDataL( aSource.DescriptorData() );
+    SetRightsUriL( aSource.RightsUri() );
+    SetRightsTypeL( aSource.RightsType() );
+    SetActivationKeyL( aSource.ActivationKey() );
+    SetInstallNotificationUriL( aSource.InstallNotificationUri() );
+    
+    // Some ugly stuff for copying the attributes
+    // This WILL NOT work for other MNcdPurchaseDownloadInfo-implementations
+    // if there's going to be any
+    const CNcdPurchaseDownloadInfo& info = 
+        static_cast<const CNcdPurchaseDownloadInfo&>( aSource );
+    
+    if ( info.iAttributes ) 
+        {
+        iAttributes = CNcdAttributes::NewL( *info.iAttributes );
+        }
+    }
+
+            
+EXPORT_C CNcdPurchaseDownloadInfo::~CNcdPurchaseDownloadInfo()
+    {
+    delete iContentUri;
+    delete iContentMimeType;
+    delete iDescriptorType;
+    delete iDescriptorName;
+    delete iDescriptorUri;
+    delete iDescriptorData;
+    delete iRightsUri;
+    delete iRightsType;
+    delete iActivationKey;
+    delete iInstallNotificationUri;
+    delete iAttributes;
+    }
+
+
+EXPORT_C MNcdPurchaseDownloadInfo::TContentUsage
+    CNcdPurchaseDownloadInfo::ContentUsage() const
+    {
+    return iContentUsage;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::ContentUri() const
+    {
+    return *iContentUri;
+    }
+
+EXPORT_C TInt CNcdPurchaseDownloadInfo::ContentValidityDelta() const
+    {
+    return iValidityDelta;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::ContentMimeType() const
+    {
+    return *iContentMimeType;
+    }
+
+EXPORT_C TInt CNcdPurchaseDownloadInfo::ContentSize() const
+    {
+    return iContentSize;
+    }
+
+EXPORT_C TBool CNcdPurchaseDownloadInfo::IsLaunchable() const
+    {
+    return iLaunchable;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::DescriptorType() const
+    {
+    return *iDescriptorType;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::DescriptorName() const
+    {
+    return *iDescriptorName;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::DescriptorUri() const
+    {
+    return *iDescriptorUri;
+    }
+
+EXPORT_C const TDesC8& CNcdPurchaseDownloadInfo::DescriptorData() const
+    {
+    return *iDescriptorData;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::RightsUri() const
+    {
+    return *iRightsUri;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::RightsType() const
+    {
+    return *iRightsType;
+    }
+
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::ActivationKey() const
+    {
+    return *iActivationKey;
+    }
+    
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::InstallNotificationUri() const
+    {
+    return *iInstallNotificationUri;
+    }
+    
+    
+EXPORT_C const TDesC& CNcdPurchaseDownloadInfo::AttributeStringL( 
+    TDownloadAttribute aAttribute ) const
+    {
+    DLTRACEIN((""));
+    if ( !iAttributes || 
+         iAttributes->AttributeType( aAttribute ) == 
+            CNcdAttributes::EAttributeTypeUndefined )
+        {
+        DLERROR(("Attribute not set yet"));
+        User::Leave( KErrNotFound );
+        }
+    return iAttributes->AttributeString16( aAttribute );    
+    }
+
+
+EXPORT_C TInt32 CNcdPurchaseDownloadInfo::AttributeInt32L( 
+    TDownloadAttribute aAttribute ) const
+    {
+    if ( !iAttributes || 
+         iAttributes->AttributeType( aAttribute ) == 
+            CNcdAttributes::EAttributeTypeUndefined )
+        {
+        User::Leave( KErrNotFound );
+        }
+    return iAttributes->AttributeInt32( aAttribute );    
+    }
+    
+
+EXPORT_C void CNcdPurchaseDownloadInfo::ExternalizeL( RWriteStream& aStream ) const
+    {
+    aStream.WriteInt16L( iContentUsage );
+    ExternalizeDesL( *iContentUri, aStream );
+    aStream.WriteInt32L( iValidityDelta );
+    ExternalizeDesL( *iContentMimeType, aStream );
+    aStream.WriteInt32L( iContentSize );
+    aStream.WriteInt8L( iLaunchable );
+    ExternalizeDesL( *iDescriptorType, aStream );
+    ExternalizeDesL( *iDescriptorName, aStream );
+    ExternalizeDesL( *iDescriptorUri, aStream );
+    ExternalizeDesL( *iDescriptorData, aStream );
+    ExternalizeDesL( *iRightsUri, aStream );
+    ExternalizeDesL( *iRightsType, aStream );
+    ExternalizeDesL( *iActivationKey, aStream );
+    ExternalizeDesL( *iInstallNotificationUri, aStream );
+    
+    if ( iAttributes ) 
+        {
+        aStream.WriteInt8L( 1 );
+        iAttributes->ExternalizeL( aStream );
+        }
+    else 
+        {
+        aStream.WriteInt8L( 0 );
+        }
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::InternalizeL( RReadStream& aStream )
+    {
+    iContentUsage = (TContentUsage)aStream.ReadInt16L();
+    InternalizeDesL( iContentUri, aStream );
+    iValidityDelta = aStream.ReadInt32L();
+    InternalizeDesL( iContentMimeType, aStream );
+    iContentSize = aStream.ReadInt32L();
+    iLaunchable = aStream.ReadInt8L();
+    InternalizeDesL( iDescriptorType, aStream );
+    InternalizeDesL( iDescriptorName, aStream );
+    InternalizeDesL( iDescriptorUri, aStream );
+    InternalizeDesL( iDescriptorData, aStream );
+    InternalizeDesL( iRightsUri, aStream );
+    InternalizeDesL( iRightsType, aStream );
+    InternalizeDesL( iActivationKey, aStream );
+    InternalizeDesL( iInstallNotificationUri, aStream );
+    
+    delete iAttributes;
+    iAttributes = NULL;
+    
+    TInt8 attribsExist = aStream.ReadInt8L();
+    if ( attribsExist ) 
+        {
+        
+        iAttributes = CNcdAttributes::NewL( 
+            aStream,
+            MNcdPurchaseDownloadInfo::EDownloadAttributeInternal );
+        }
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetContentUsage(
+    TContentUsage aUsage )
+    {
+    DLTRACEIN(("Content usage: %d", aUsage));
+    iContentUsage = aUsage;
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetContentUriL( const TDesC& aUri )
+    {
+    DLTRACEIN(( _L("URI: %S"), &aUri ));
+    AssignDesL( iContentUri, aUri );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetContentValidityDelta(
+    TInt aValidityDelta )
+    {
+    iValidityDelta = aValidityDelta;
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetContentMimeTypeL(
+    const TDesC& aMimeType )
+    {
+    DLTRACEIN(( _L("Mime: %S"), &aMimeType ));
+    AssignDesL( iContentMimeType, aMimeType );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetContentSize( TInt aSize )
+    {
+    iContentSize = aSize;
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetLaunchable( TBool aLaunchable )
+    {
+    DLTRACEIN(("Launchable: %d", aLaunchable));
+    iLaunchable = aLaunchable;
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetDescriptorTypeL(
+    const TDesC& aType )
+    {
+    DLTRACEIN(( _L("Descriptor type: %S"), &aType ));
+    AssignDesL( iDescriptorType, aType );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetDescriptorNameL(
+    const TDesC& aName )
+    {
+    DLTRACEIN(( _L("Descriptor name: %S"), &aName ));
+    AssignDesL( iDescriptorName, aName );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetDescriptorUriL( const TDesC& aUri )
+    {
+    DLTRACEIN(( _L("Descriptor URI: %S"), &aUri ));
+    AssignDesL( iDescriptorUri, aUri );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetDescriptorDataL(
+    const TDesC8& aData )
+    {    
+    AssignDesL( iDescriptorData, aData );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetRightsUriL( const TDesC& aUri )
+    {
+    AssignDesL( iRightsUri, aUri );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetRightsTypeL( const TDesC& aType )
+    {
+    DLTRACEIN(( _L("Rights type: %S"), &aType ));
+    AssignDesL( iRightsType, aType );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetActivationKeyL(
+    const TDesC& aActivationKey )
+    {
+    AssignDesL( iActivationKey, aActivationKey );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetInstallNotificationUriL(
+    const TDesC& aInstallNotificationUri )
+    {
+    AssignDesL( iInstallNotificationUri, aInstallNotificationUri );
+    }
+
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetAttributeL( 
+    TDownloadAttribute aAttribute, TInt32 aValue )
+    {
+    CreateAttributesL();
+    iAttributes->SetAttributeL( aAttribute, aValue );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::SetAttributeL( 
+    TDownloadAttribute aAttribute, const TDesC& aValue )
+    {
+    CreateAttributesL();
+    iAttributes->SetAttributeL( aAttribute, aValue );
+    }
+
+EXPORT_C void CNcdPurchaseDownloadInfo::CreateAttributesL()
+    {
+    DLTRACEIN((""));
+    if ( !iAttributes ) 
+        {
+        iAttributes = CNcdAttributes::NewL( 
+            MNcdPurchaseDownloadInfo::EDownloadAttributeInternal );
+        }
+    }