--- /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 );
+ }
+ }