diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/src/ncdpurchasedetails.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/src/ncdpurchasedetails.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,932 @@ +/* +* 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: +* +*/ + + +#include + +#include "ncdpurchasedetails.h" +#include "ncdpurchasedownloadinfo.h" +#include "ncdpurchaseinstallinfo.h" +#include "catalogsutils.h" +#include "catalogsconstants.h" +#include "ncdutils.h" +#include "ncdattributes.h" + +#include "catalogsdebug.h" + + +static inline void AssignHBufC( HBufC*& aDes, HBufC* const aSource ) + { + delete aDes; + aDes = aSource; + } + +EXPORT_C CNcdPurchaseDetails* CNcdPurchaseDetails::NewL() + { + CNcdPurchaseDetails* self = NewLC(); + CleanupStack::Pop( self ); + return self; + } + +EXPORT_C CNcdPurchaseDetails* CNcdPurchaseDetails::NewLC() + { + CNcdPurchaseDetails* self = new ( ELeave ) CNcdPurchaseDetails; + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +EXPORT_C CNcdPurchaseDetails* CNcdPurchaseDetails::NewL( + const MNcdPurchaseDetails& aDetails ) + { + CNcdPurchaseDetails* self = NewLC( aDetails ); + CleanupStack::Pop( self ); + return self; + } + +EXPORT_C CNcdPurchaseDetails* CNcdPurchaseDetails::NewLC( + const MNcdPurchaseDetails& aDetails ) + { + DLTRACEIN(("")); + CNcdPurchaseDetails* self = new ( ELeave ) CNcdPurchaseDetails; + CleanupStack::PushL( self ); + self->ConstructL(); + + self->SetCatalogSourceNameL( aDetails.CatalogSourceName() ); + self->SetClientUid( aDetails.ClientUid() ); + self->SetDescriptionL( aDetails.Description() ); + self->SetDownloadAccessPointL( aDetails.DownloadAccessPoint() ); + self->SetDownloadedFilesL( aDetails.DownloadedFiles() ); + self->SetDownloadInfoL( aDetails.DownloadInfoL() ); + self->SetEntityIdL( aDetails.EntityId() ); + self->SetFinalPriceL( aDetails.FinalPrice() ); + self->SetIconL( aDetails.Icon() ); + self->SetInstallInfoL( aDetails.InstallInfoL() ); + self->SetItemNameL( aDetails.ItemName() ); + self->SetItemPurpose( aDetails.ItemPurpose() ); + self->SetNamespaceL( aDetails.Namespace() ); + self->SetPaymentMethodNameL( aDetails.PaymentMethodName() ); + self->SetPurchaseOptionIdL( aDetails.PurchaseOptionId() ); + self->SetPurchaseOptionNameL( aDetails.PurchaseOptionName() ); + self->SetPurchaseOptionPriceL( aDetails.PurchaseOptionPrice() ); + self->SetPurchaseTime( aDetails.PurchaseTime() ); + self->SetVersionL( aDetails.Version() ); + self->SetServerUriL( aDetails.ServerUri() ); + self->SetItemType( aDetails.ItemType() ); + self->SetTotalContentSize( aDetails.TotalContentSize() ); + self->SetLastOperationTime( aDetails.LastOperationTime() ); + self->SetLastOperationErrorCode( aDetails.LastOperationErrorCode() ); + self->SetOriginNodeIdL( aDetails.OriginNodeId() ); + + // Some ugly stuff for copying the attributes + // This WILL NOT work for other MNcdPurchaseDetails-implementations + // if there's going to be any + const CNcdPurchaseDetails& details = + static_cast( aDetails ); + + if ( details.iAttributes ) + { + DeletePtr( self->iAttributes ); + self->iAttributes = CNcdAttributes::NewL( *details.iAttributes ); + } + + return self; + } + +CNcdPurchaseDetails::~CNcdPurchaseDetails() + { + delete iNamespace; + delete iEntityId; + delete iItemName; + delete iCatalogSourceName; + ResetAndDestroyWithCast< CNcdPurchaseDownloadInfo >( iDownloadInfo ); + delete iPurchaseOptionId; + delete iPurchaseOptionName; + delete iPurchaseOptionPrice; + delete iFinalPrice; + delete iPaymentMethodName; + delete iDownloadedFiles; + + ResetAndDestroyWithCast< CNcdPurchaseInstallInfo >( iInstallInfo ); + + delete iIcon; + delete iDownloadAccessPoint; + delete iDescription; + delete iVersion; + delete iServerUri; + delete iOriginNodeId; + delete iAttributes; + } + +MNcdPurchaseDetails::TState CNcdPurchaseDetails::State() const + { + // The state is automatically checked here without using any + // state member variable. At the moment, a member variable for + // the state and setter function for the state can not be used + // because, for example, PC-client does not support it. + + // Notice, that here we do not use the last operation error code + // to check if the last operation has failed. We just give, the current + // state. It is up to the user of the purchase details to do more checking + // related to the error code if more information is needed, for example, + // to check if some operation has failed and the state has not progressed + // because of that. + + if ( iInstallInfo.Count() > 0 + && iInstallInfo.Count() >= iDownloadInfo.Count() ) + { + // All the items have been installed. + // So, we can suppose that the installation was a success. + // So, return installed-state. + return EStateInstalled; + } + else if ( iDownloadedFiles + && iDownloadedFiles->Count() > 0 + && iDownloadedFiles->Count() >= iDownloadInfo.Count() ) + { + // All of the items have been downloaded, + // So, we can suppose that the download was a success. + return EStateDownloaded; + } + else + { + // Because an item has not been yet fully downloaded or installed, + // its state is purchased-state. + return EStatePurchased; + } + } + +TUid CNcdPurchaseDetails::ClientUid() const + { + return iClientUid; + } + +const TDesC& CNcdPurchaseDetails::Namespace() const + { + return *iNamespace; + } + +const TDesC& CNcdPurchaseDetails::EntityId() const + { + return *iEntityId; + } + +const TDesC& CNcdPurchaseDetails::ItemName() const + { + return *iItemName; + } + +TUint CNcdPurchaseDetails::ItemPurpose() const + { + return iItemPurpose; + } + +const TDesC& CNcdPurchaseDetails::CatalogSourceName() const + { + return *iCatalogSourceName; + } + +TArray< MNcdPurchaseDownloadInfo* > + CNcdPurchaseDetails::DownloadInfoL() const + { + return iDownloadInfo.Array(); + } + +const TDesC& CNcdPurchaseDetails::PurchaseOptionId() const + { + return *iPurchaseOptionId; + } + +const TDesC& CNcdPurchaseDetails::PurchaseOptionName() const + { + return *iPurchaseOptionName; + } + +const TDesC& CNcdPurchaseDetails::PurchaseOptionPrice() const + { + return *iPurchaseOptionPrice; + } + +const TDesC& CNcdPurchaseDetails::FinalPrice() const + { + return *iFinalPrice; + } + +const TDesC& CNcdPurchaseDetails::PaymentMethodName() const + { + return *iPaymentMethodName; + } + +TTime CNcdPurchaseDetails::PurchaseTime() const + { + return iPurchaseTime; + } + +const MDesCArray& CNcdPurchaseDetails::DownloadedFiles() const + { + return *iDownloadedFiles; + } + +TArray< MNcdPurchaseInstallInfo* > CNcdPurchaseDetails::InstallInfoL() const + { + return iInstallInfo.Array(); + } + +const TDesC8& CNcdPurchaseDetails::Icon() const + { + DASSERT( iIcon ); + return *iIcon; + } + +TBool CNcdPurchaseDetails::HasIcon() const + { + DLTRACE(("iHasIcon: %d",iHasIcon)); + return iHasIcon; + } + +const TDesC& CNcdPurchaseDetails::DownloadAccessPoint() const + { + return *iDownloadAccessPoint; + } + +const TDesC& CNcdPurchaseDetails::Description() const + { + return *iDescription; + } + +const TDesC& CNcdPurchaseDetails::Version() const + { + return *iVersion; + } + +const TDesC& CNcdPurchaseDetails::ServerUri() const + { + return *iServerUri; + } + +MNcdPurchaseDetails::TItemType CNcdPurchaseDetails::ItemType() const + { + return iItemType; + } + +TInt CNcdPurchaseDetails::TotalContentSize() const + { + return iTotalContentSize; + } + +const TDesC& CNcdPurchaseDetails::OriginNodeId() const + { + return *iOriginNodeId; + } + +TTime CNcdPurchaseDetails::LastOperationTime() const + { + return iLastOperationTime; + } + +TInt CNcdPurchaseDetails::LastOperationErrorCode() const + { + return iLastOperationErrorCode; + } + + +const TDesC& CNcdPurchaseDetails::AttributeString( + TPurchaseAttribute aAttribute ) const + { + DLTRACEIN(("")); + return iAttributes->AttributeString16( aAttribute ); + } + + +TInt32 CNcdPurchaseDetails::AttributeInt32( + TPurchaseAttribute aAttribute ) const + { + return iAttributes->AttributeInt32( aAttribute ); + } + + +EXPORT_C void CNcdPurchaseDetails::ExternalizeL( RWriteStream& aStream ) const + { + TUint count = 0; + + aStream.WriteInt32L( iClientUid.iUid ); + ExternalizeDesL( *iNamespace, aStream ); + ExternalizeDesL( *iEntityId, aStream ); + ExternalizeDesL( *iItemName, aStream ); + aStream.WriteUint32L( iItemPurpose ); + ExternalizeDesL( *iCatalogSourceName, aStream ); + + count = iDownloadInfo.Count(); + aStream.WriteUint32L( count ); + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseDownloadInfo* info = + (CNcdPurchaseDownloadInfo*)iDownloadInfo[i]; + info->ExternalizeL( aStream ); + } + + ExternalizeDesL( *iPurchaseOptionId, aStream ); + ExternalizeDesL( *iPurchaseOptionName, aStream ); + ExternalizeDesL( *iPurchaseOptionPrice, aStream ); + ExternalizeDesL( *iFinalPrice, aStream ); + ExternalizeDesL( *iPaymentMethodName, aStream ); + aStream << iPurchaseTime.Int64(); + + count = iDownloadedFiles->Count(); + aStream.WriteUint32L( count ); + for ( TInt i = 0; i < count; i++ ) + { + ExternalizeDesL( (*iDownloadedFiles)[i], aStream ); + } + + count = iInstallInfo.Count(); + aStream.WriteUint32L( count ); + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseInstallInfo* info = + (CNcdPurchaseInstallInfo*)iInstallInfo[i]; + info->ExternalizeL( aStream ); + } + + aStream.WriteInt32L( iHasIcon ); + ExternalizeDesL( *iIcon, aStream ); + ExternalizeDesL( *iDownloadAccessPoint, aStream ); + ExternalizeDesL( *iDescription, aStream ); + ExternalizeDesL( *iVersion, aStream ); + ExternalizeDesL( *iServerUri, aStream ); + aStream.WriteInt32L( iItemType ); + aStream.WriteInt32L( iTotalContentSize ); + ExternalizeDesL( *iOriginNodeId, aStream ); + + aStream << LastOperationTime().Int64(); + aStream.WriteInt32L( LastOperationErrorCode() ); + + iAttributes->ExternalizeL( aStream ); + } + +EXPORT_C void CNcdPurchaseDetails::InternalizeL( RReadStream& aStream ) + { + TInt64 int64 = 0; + TUint count = 0; + + iClientUid = TUid::Uid( aStream.ReadInt32L() ); + InternalizeDesL( iNamespace, aStream ); + InternalizeDesL( iEntityId, aStream ); + InternalizeDesL( iItemName, aStream ); + iItemPurpose = aStream.ReadUint32L(); + InternalizeDesL( iCatalogSourceName, aStream ); + + count = aStream.ReadUint32L(); + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseDownloadInfo* info = CNcdPurchaseDownloadInfo::NewLC(); + info->InternalizeL( aStream ); + iDownloadInfo.AppendL( info ); + CleanupStack::Pop( info ); + } + + InternalizeDesL( iPurchaseOptionId, aStream ); + InternalizeDesL( iPurchaseOptionName, aStream ); + InternalizeDesL( iPurchaseOptionPrice, aStream ); + InternalizeDesL( iFinalPrice, aStream ); + InternalizeDesL( iPaymentMethodName, aStream ); + aStream >> int64; + iPurchaseTime = int64; + + count = aStream.ReadUint32L(); + for ( TInt i = 0; i < count; i++ ) + { + HBufC* buf = NULL; + InternalizeDesL( buf, aStream ); + CleanupStack::PushL( buf ); + iDownloadedFiles->AppendL( *buf ); + CleanupStack::PopAndDestroy( buf ); + } + + count = aStream.ReadUint32L(); + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseInstallInfo* info = CNcdPurchaseInstallInfo::NewLC(); + info->InternalizeL( aStream ); + User::LeaveIfError( iInstallInfo.Append( info ) ); + CleanupStack::Pop( info ); + } + + iHasIcon = aStream.ReadInt32L(); + InternalizeDesL( iIcon, aStream ); + InternalizeDesL( iDownloadAccessPoint, aStream ); + InternalizeDesL( iDescription, aStream ); + InternalizeDesL( iVersion, aStream ); + InternalizeDesL( iServerUri, aStream ); + iItemType = (MNcdPurchaseDetails::TItemType)aStream.ReadInt32L(); + iTotalContentSize = aStream.ReadInt32L(); + InternalizeDesL( iOriginNodeId, aStream ); + + TInt64 tmpLastOperationTime( 0 ); + aStream >> tmpLastOperationTime; + iLastOperationTime = tmpLastOperationTime; + + iLastOperationErrorCode = aStream.ReadInt32L(); + + iAttributes->InternalizeL( aStream ); + } + +EXPORT_C void CNcdPurchaseDetails::SetClientUid( TUid aClientUid ) + { + iClientUid = aClientUid; + } + +EXPORT_C void CNcdPurchaseDetails::SetNamespaceL( const TDesC& aNamespace ) + { + AssignDesL( iNamespace, aNamespace ); + } + +EXPORT_C void CNcdPurchaseDetails::SetNamespace( HBufC* aNamespace ) + { + AssignHBufC( iNamespace, aNamespace ); + } + +EXPORT_C void CNcdPurchaseDetails::SetEntityIdL( const TDesC& aEntityId ) + { + AssignDesL( iEntityId, aEntityId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetEntityId( HBufC* aEntityId ) + { + AssignHBufC( iEntityId, aEntityId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetItemNameL( const TDesC& aItemName ) + { + AssignDesL( iItemName, aItemName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetItemName( HBufC* aItemName ) + { + AssignHBufC( iItemName, aItemName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetItemPurpose( TUint aItemPurpose ) + { + iItemPurpose = aItemPurpose; + } + +EXPORT_C void CNcdPurchaseDetails::SetCatalogSourceNameL( + const TDesC& aCatalogSourceName ) + { + AssignDesL( iCatalogSourceName, aCatalogSourceName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetCatalogSourceName( HBufC* aCatalogSourceName ) + { + AssignHBufC( iCatalogSourceName, aCatalogSourceName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetDownloadInfoL( + const TArray< MNcdPurchaseDownloadInfo* >& aDownloadInfo ) + { + DLTRACEIN(("")); + + RPointerArray< MNcdPurchaseDownloadInfo > tempArray; + // Can't push to cleanup stack since MNcdPurchaseDownloadInfo cannot be + // deleted but the array owns the objects + + TRAPD( err, + { + TInt count = aDownloadInfo.Count(); + tempArray.ReserveL( count ); + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseDownloadInfo* info = + CNcdPurchaseDownloadInfo::NewLC( *aDownloadInfo[i] ); + tempArray.AppendL( info ); + CleanupStack::Pop( info ); + } + }); + if ( err != KErrNone ) + { + DLERROR(("%d", err)); + ResetAndDestroyWithCast( tempArray ); + User::Leave( err ); + } + + ResetAndDestroyWithCast( iDownloadInfo ); + iDownloadInfo = tempArray; + } + + + +EXPORT_C void CNcdPurchaseDetails::AddDownloadInfoL( + MNcdPurchaseDownloadInfo* aDownloadInfo ) + { + iDownloadInfo.AppendL( aDownloadInfo ); + } + + +EXPORT_C void CNcdPurchaseDetails::InsertDownloadInfoL( + MNcdPurchaseDownloadInfo* aDownloadInfo, + TInt aIndex ) + { + iDownloadInfo.InsertL( aDownloadInfo, aIndex ); + } + + +EXPORT_C void CNcdPurchaseDetails::RemoveDownloadInfo( TInt aIndex ) + { + DeleteFromArray( iDownloadInfo, aIndex ); + } + + +EXPORT_C TInt CNcdPurchaseDetails::DownloadInfoCount() const + { + return iDownloadInfo.Count(); + } + + +EXPORT_C CNcdPurchaseDownloadInfo& CNcdPurchaseDetails::DownloadInfo( + TInt aIndex ) + { + CNcdPurchaseDownloadInfo* ptr = static_cast( + iDownloadInfo[aIndex] ); + return *ptr; + } + + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionIdL( + const TDesC& aPurchaseOptionId ) + { + AssignDesL( iPurchaseOptionId, aPurchaseOptionId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionId( HBufC* aPurchaseOptionId ) + { + AssignHBufC( iPurchaseOptionId, aPurchaseOptionId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionNameL( + const TDesC& aPurchaseOptionName ) + { + AssignDesL( iPurchaseOptionName, aPurchaseOptionName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionName( HBufC* aPurchaseOptionName ) + { + AssignHBufC( iPurchaseOptionName, aPurchaseOptionName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionPriceL( + const TDesC& aPurchaseOptionPrice ) + { + AssignDesL( iPurchaseOptionPrice, aPurchaseOptionPrice ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseOptionPrice( + HBufC* aPurchaseOptionPrice ) + { + AssignHBufC( iPurchaseOptionPrice, aPurchaseOptionPrice ); + } + +EXPORT_C void CNcdPurchaseDetails::SetFinalPriceL( const TDesC& aFinalPrice ) + { + AssignDesL( iFinalPrice, aFinalPrice ); + } + +EXPORT_C void CNcdPurchaseDetails::SetFinalPrice( HBufC* aFinalPrice ) + { + AssignHBufC( iFinalPrice, aFinalPrice ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPaymentMethodNameL( + const TDesC& aPaymentMethodName ) + { + AssignDesL( iPaymentMethodName, aPaymentMethodName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPaymentMethodName( HBufC* aPaymentMethodName ) + { + AssignHBufC( iPaymentMethodName, aPaymentMethodName ); + } + +EXPORT_C void CNcdPurchaseDetails::SetPurchaseTime( TTime aPurchaseTime ) + { + iPurchaseTime = aPurchaseTime; + } + +EXPORT_C void CNcdPurchaseDetails::SetDownloadedFiles( CDesCArray* aDownloadedFiles ) + { + delete iDownloadedFiles; + iDownloadedFiles = aDownloadedFiles; + } + +EXPORT_C void CNcdPurchaseDetails::SetDownloadedFilesL( + const MDesCArray& aDownloadedFiles ) + { + delete iDownloadedFiles; + iDownloadedFiles = NULL; + iDownloadedFiles = new (ELeave) CDesCArrayFlat( KListGranularity ); + for ( TInt i = 0; i < aDownloadedFiles.MdcaCount(); i++ ) + { + iDownloadedFiles->AppendL( aDownloadedFiles.MdcaPoint( i ) ); + } + } + + +EXPORT_C void CNcdPurchaseDetails::ReplaceDownloadedFileL( TInt aIndex, + const TDesC& aDownloadedFile ) + { + iDownloadedFiles->InsertL( aIndex, aDownloadedFile ); + iDownloadedFiles->Delete( aIndex + 1 ); + } + + +EXPORT_C void CNcdPurchaseDetails::AddDownloadedFileL( + const TDesC& aDownloadedFile ) + { + iDownloadedFiles->AppendL( aDownloadedFile ); + } + +EXPORT_C void CNcdPurchaseDetails::InsertDownloadedFileL( + const TDesC& aDownloadedFile, + TInt aIndex ) + { + iDownloadedFiles->InsertL( aIndex, aDownloadedFile ); + } + + +EXPORT_C void CNcdPurchaseDetails::RemoveDownloadedFile( + TInt aIndex ) + { + iDownloadedFiles->Delete( aIndex ); + } + + +EXPORT_C void CNcdPurchaseDetails::SetInstallInfoL( + const TArray< MNcdPurchaseInstallInfo* >& aInstallInfo ) + { + DLTRACEIN(("")); + RPointerArray tempArray; + + TRAPD( err, + { + TInt count = aInstallInfo.Count(); + tempArray.ReserveL( count ); + + for ( TInt i = 0; i < count; i++ ) + { + CNcdPurchaseInstallInfo* info = + CNcdPurchaseInstallInfo::NewLC( *aInstallInfo[i] ); + tempArray.AppendL( info ); + CleanupStack::Pop( info ); + } + }); + + if ( err != KErrNone ) + { + DLERROR(("%d", err)); + ResetAndDestroyWithCast( tempArray ); + User::Leave( err ); + } + + ResetAndDestroyWithCast( iInstallInfo ); + iInstallInfo = tempArray; + } + + +EXPORT_C void CNcdPurchaseDetails::AddInstallInfoL( + MNcdPurchaseInstallInfo* aInstallInfo ) + { + iInstallInfo.AppendL( aInstallInfo ); + } + + +EXPORT_C void CNcdPurchaseDetails::InsertInstallInfoL( + MNcdPurchaseInstallInfo* aInstallInfo, + TInt aIndex ) + { + iInstallInfo.InsertL( aInstallInfo, aIndex ); + } + + +EXPORT_C void CNcdPurchaseDetails::RemoveInstallInfo( TInt aIndex ) + { + DeleteFromArray( iInstallInfo, aIndex ); + } + + +EXPORT_C TInt CNcdPurchaseDetails::InstallInfoCount() const + { + return iInstallInfo.Count(); + } + + +EXPORT_C CNcdPurchaseInstallInfo& CNcdPurchaseDetails::InstallInfo( + TInt aIndex ) + { + DASSERT( aIndex >= 0 && aIndex < iInstallInfo.Count() ); + CNcdPurchaseInstallInfo* ptr = static_cast( + iInstallInfo[aIndex] ); + return *ptr; + } + + +EXPORT_C void CNcdPurchaseDetails::SetIconL( const TDesC8& aIcon ) + { + HBufC8* tmpIcon = aIcon.AllocL(); + delete iIcon; + iIcon = tmpIcon; + iHasIcon = ETrue; + } + +EXPORT_C void CNcdPurchaseDetails::SetIcon( HBufC8* aIcon ) + { + delete iIcon; + iIcon = aIcon; + iHasIcon = ETrue; + } + +EXPORT_C HBufC8* CNcdPurchaseDetails::GetIconData() + { + HBufC8* tmpIcon = iIcon; + iIcon = NULL; + return tmpIcon; + } + +EXPORT_C void CNcdPurchaseDetails::SetHasIcon( TBool aHasIcon ) + { + iHasIcon = aHasIcon; + } + +EXPORT_C void CNcdPurchaseDetails::SetDownloadAccessPointL( + const TDesC& aAccessPoint ) + { + AssignDesL( iDownloadAccessPoint, aAccessPoint ); + } + +EXPORT_C void CNcdPurchaseDetails::SetDownloadAccessPoint( + HBufC* aAccessPoint ) + { + AssignHBufC( iDownloadAccessPoint, aAccessPoint ); + } + +EXPORT_C void CNcdPurchaseDetails::SetDescriptionL( + const TDesC& aDescription ) + { + AssignDesL( iDescription, aDescription ); + } + +EXPORT_C void CNcdPurchaseDetails::SetDescription( + HBufC* aDescription ) + { + AssignHBufC( iDescription, aDescription ); + } + +EXPORT_C void CNcdPurchaseDetails::SetVersionL( + const TDesC& aVersion ) + { + AssignDesL( iVersion, aVersion ); + } + +EXPORT_C void CNcdPurchaseDetails::SetVersion( + HBufC* aVersion ) + { + AssignHBufC( iVersion, aVersion ); + } + +EXPORT_C void CNcdPurchaseDetails::SetServerUriL( + const TDesC& aServerUri ) + { + AssignDesL( iServerUri, aServerUri ); + } + +EXPORT_C void CNcdPurchaseDetails::SetServerUri( + HBufC* aServerUri ) + { + AssignHBufC( iServerUri, aServerUri ); + } + +EXPORT_C void CNcdPurchaseDetails::SetItemType( + TItemType aItemType ) + { + iItemType = aItemType; + } + +EXPORT_C void CNcdPurchaseDetails::SetTotalContentSize( TInt aSize ) + { + iTotalContentSize = aSize; + } + +EXPORT_C void CNcdPurchaseDetails::SetOriginNodeIdL( const TDesC& aOriginNodeId ) + { + AssignDesL( iOriginNodeId, aOriginNodeId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetOriginNodeId( HBufC* aOriginNodeId ) + { + AssignHBufC( iOriginNodeId, aOriginNodeId ); + } + +EXPORT_C void CNcdPurchaseDetails::SetLastUniversalOperationTime() + { + TTime time; + time.UniversalTime(); + SetLastOperationTime( time ); + } + +EXPORT_C void CNcdPurchaseDetails::SetLastOperationTime( const TTime& aTime ) + { + iLastOperationTime = aTime; + } + +EXPORT_C void CNcdPurchaseDetails::SetLastOperationErrorCode( TInt aError ) + { + iLastOperationErrorCode = aError; + } + + +EXPORT_C void CNcdPurchaseDetails::SetAttributeL( + TPurchaseAttribute aAttribute, + TInt32 aValue ) + { + iAttributes->SetAttributeL( aAttribute, aValue ); + } + + +EXPORT_C void CNcdPurchaseDetails::SetAttributeL( + TPurchaseAttribute aAttribute, + const TDesC& aValue ) + { + iAttributes->SetAttributeL( aAttribute, aValue ); + } + +EXPORT_C void CNcdPurchaseDetails::ExternalizeAttributesL( + RWriteStream& aStream ) const + { + DLTRACEIN(("")); + iAttributes->ExternalizeL( aStream ); + } + +EXPORT_C void CNcdPurchaseDetails::InternalizeAttributesL( + RReadStream& aStream ) + { + DLTRACEIN(("")); + iAttributes->InternalizeL( aStream ); + } + + +void CNcdPurchaseDetails::CreateAttributesL() + { + DLTRACEIN(("")); + if ( !iAttributes ) + { + iAttributes = CNcdAttributes::NewL( + MNcdPurchaseDetails::EPurchaseAttributeInternal ); + } + } + + +void CNcdPurchaseDetails::ConstructL() + { + iNamespace = KNullDesC().AllocL(); + iEntityId = KNullDesC().AllocL(); + iItemName = KNullDesC().AllocL(); + iCatalogSourceName = KNullDesC().AllocL(); + iPurchaseOptionId = KNullDesC().AllocL(); + iPurchaseOptionName = KNullDesC().AllocL(); + iPurchaseOptionPrice = KNullDesC().AllocL(); + iFinalPrice = KNullDesC().AllocL(); + iPaymentMethodName = KNullDesC().AllocL(); + iDownloadedFiles = new (ELeave) CDesCArrayFlat( KListGranularity ); + iIcon = KNullDesC8().AllocL(); + iDownloadAccessPoint = KNullDesC().AllocL(); + iDescription = KNullDesC().AllocL(); + iVersion = KNullDesC().AllocL(); + iServerUri = KNullDesC().AllocL(); + iItemType = MNcdPurchaseDetails::EItem; + iOriginNodeId = KNullDesC().AllocL(); + CreateAttributesL(); + } + +CNcdPurchaseDetails::CNcdPurchaseDetails() + : iPurchaseTime( 0 ), + iHasIcon( EFalse ), + iTotalContentSize( 0 ), + iLastOperationTime( 0 ), + iLastOperationErrorCode( KErrNone ) + + { + iClientUid = TUid::Null(); + }