--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/src/ncddownloadinfo.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,281 @@
+/*
+* 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 CNcdDownloadInfo
+*
+*/
+
+
+#include "ncddownloadinfo.h"
+#include "ncd_pp_entitydependency.h"
+#include "ncd_pp_download.h"
+#include "ncd_pp_descriptor.h"
+#include "ncd_pp_rights.h"
+#include "catalogsutils.h"
+#include "ncdpurchasedownloadinfo.h"
+
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewL()
+ {
+ CNcdDownloadInfo* self =
+ CNcdDownloadInfo::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewLC()
+ {
+ CNcdDownloadInfo* self =
+ new (ELeave) CNcdDownloadInfo();
+ CleanupStack::PushL( self );
+ self->CNcdPurchaseDownloadInfo::ConstructL();
+ return self;
+ }
+
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewL(
+ const MNcdPreminetProtocolEntityDependency& aProtocolDependency )
+ {
+ CNcdDownloadInfo* self =
+ CNcdDownloadInfo::NewLC( aProtocolDependency );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewLC(
+ const MNcdPreminetProtocolEntityDependency& aProtocolDependency )
+ {
+ CNcdDownloadInfo* self =
+ new (ELeave) CNcdDownloadInfo();
+ CleanupStack::PushL( self );
+ self->ConstructL( aProtocolDependency );
+ return self;
+ }
+
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewLC(
+ const MNcdPreminetProtocolDownload& aProtocolDownload )
+ {
+ CNcdDownloadInfo* self =
+ new (ELeave) CNcdDownloadInfo();
+ CleanupStack::PushL( self );
+ self->ConstructL( aProtocolDownload );
+ return self;
+ }
+
+
+CNcdDownloadInfo* CNcdDownloadInfo::NewLC(
+ const MNcdPurchaseDownloadInfo& aDownload,
+ TUid aUid,
+ const TDesC& aVersion )
+ {
+ CNcdDownloadInfo* self =
+ new (ELeave) CNcdDownloadInfo();
+ CleanupStack::PushL( self );
+ self->ConstructL( aDownload, aUid, aVersion );
+ return self;
+ }
+
+
+
+void CNcdDownloadInfo::InternalizeL( RReadStream& aStream )
+ {
+ DLTRACEIN((""));
+ CNcdPurchaseDownloadInfo::InternalizeL( aStream );
+ iUid.iUid = aStream.ReadInt32L();
+ InternalizeDesL( iVersion, aStream );
+ InternalizeEnumL( iDependencyState, aStream );
+ DLTRACEOUT(("Internalization successful"));
+ }
+
+
+void CNcdDownloadInfo::ExternalizeL( RWriteStream& aStream )
+ {
+ DLTRACEIN((""));
+ CNcdPurchaseDownloadInfo::ExternalizeL( aStream );
+ aStream.WriteInt32L( iUid.iUid );
+ ExternalizeDesL( *iVersion, aStream );
+ ExternalizeEnumL( iDependencyState, aStream );
+ DLTRACEOUT(("Externalization successful"));
+ }
+
+
+
+const TDesC& CNcdDownloadInfo::ContentName() const
+ {
+ DLTRACEIN((""));
+ const TDesC* name = NULL;
+
+ // Errors ignore, AttributeStringL leaves with KErrNotFound if
+ // the attribute is not set but that doesn't matter
+ TRAP_IGNORE( name = &AttributeStringL(
+ MNcdPurchaseDownloadInfo::EDownloadAttributeDependencyName ) );
+ if ( name )
+ {
+ return *name;
+ }
+ return KNullDesC;
+ }
+
+
+TUid CNcdDownloadInfo::ContentId() const
+ {
+ return iUid;
+ }
+
+
+const TDesC& CNcdDownloadInfo::ContentVersion() const
+ {
+ DASSERT( iVersion );
+ return *iVersion;
+ }
+
+
+TNcdDependencyState CNcdDownloadInfo::DependencyState() const
+ {
+ return iDependencyState;
+ }
+
+
+void CNcdDownloadInfo::SetDependencyState( TNcdDependencyState aState )
+ {
+ iDependencyState = aState;
+ }
+
+
+CNcdDownloadInfo::CNcdDownloadInfo()
+ : CNcdPurchaseDownloadInfo(),
+ iDependencyState( ENcdDependencyMissing )
+ {
+ }
+
+
+void CNcdDownloadInfo::ConstructL(
+ const MNcdPreminetProtocolEntityDependency& aProtocolDependency )
+ {
+ DLTRACEIN((""));
+ // Just to be sure that everything will be initialized.
+ // Notice, that this initializes everything. So,
+ // most of the data is most likely unnecessarily created
+ // here because they will be replaced later in this function.
+ CNcdPurchaseDownloadInfo::ConstructL();
+
+ if ( aProtocolDependency.DownloadDetails() )
+ {
+ ConstructDownloadL( *aProtocolDependency.DownloadDetails() );
+ }
+
+ if ( aProtocolDependency.ContentId().Length() )
+ {
+ TInt uid = 0;
+ DLTRACE(( _L("Content ID: %S"), &aProtocolDependency.ContentId() ));
+
+ TRAPD( err, uid = DesHexToIntL( aProtocolDependency.ContentId() ) );
+ if( err != KErrNone )
+ {
+ DLERROR(( "DownloadableContent()->Id() was not valid hex" ));
+ iUid.iUid = 0;
+ }
+ else
+ {
+ iUid.iUid = uid;
+ }
+ }
+
+ iVersion = aProtocolDependency.ContentVersion().AllocL();
+
+
+ SetAttributeL( MNcdPurchaseDownloadInfo::EDownloadAttributeDependencyName,
+ aProtocolDependency.Name() );
+
+ DLTRACEOUT(( _L("Content version: %S"), iVersion ));
+ }
+
+
+void CNcdDownloadInfo::ConstructL(
+ const MNcdPreminetProtocolDownload& aProtocolDownload )
+ {
+ DLTRACEIN((""));
+ CNcdPurchaseDownloadInfo::ConstructL();
+ iVersion = KNullDesC().AllocL();
+
+ SetAttributeL( MNcdPurchaseDownloadInfo::EDownloadAttributeDependencyName,
+ KNullDesC );
+
+ ConstructDownloadL( aProtocolDownload );
+ }
+
+
+void CNcdDownloadInfo::ConstructDownloadL(
+ const MNcdPreminetProtocolDownload& aProtocolDownload )
+ {
+ DLTRACEIN((""));
+
+
+ SetContentUriL( aProtocolDownload.Uri() );
+ SetLaunchable( aProtocolDownload.Launchable() );
+ SetContentMimeTypeL( aProtocolDownload.Mime() );
+
+ SetContentSize( aProtocolDownload.Size() );
+
+ SetInstallNotificationUriL( aProtocolDownload.InstallNotificationUri() );
+
+ // Set content usage
+ if ( aProtocolDownload.Target() == EDownloadTargetConsumable )
+ {
+ SetContentUsage( MNcdPurchaseDownloadInfo::EConsumable );
+ }
+ else
+ {
+ DLINFO(("Setting as downloadable, was actually: %d",
+ aProtocolDownload.Target()));
+ SetContentUsage( MNcdPurchaseDownloadInfo::EDownloadable );
+ }
+
+ if( aProtocolDownload.Descriptor() != NULL )
+ {
+ SetDescriptorDataL( aProtocolDownload.Descriptor()->Data() );
+ SetDescriptorNameL( aProtocolDownload.Descriptor()->Name() );
+ SetDescriptorTypeL( aProtocolDownload.Descriptor()->Type() );
+ SetDescriptorUriL( aProtocolDownload.Descriptor()->Uri() );
+ }
+
+ if( aProtocolDownload.Rights() )
+ {
+ SetRightsTypeL( aProtocolDownload.Rights()->Type() );
+ SetRightsUriL( aProtocolDownload.Rights()->Uri() );
+ SetActivationKeyL( aProtocolDownload.Rights()->ActivationKey());
+ }
+
+ SetContentValidityDelta( aProtocolDownload.ValidityDelta() );
+
+ DLTRACEOUT((""));
+ }
+
+
+void CNcdDownloadInfo::ConstructL(
+ const MNcdPurchaseDownloadInfo& aDownload,
+ TUid aUid,
+ const TDesC& aVersion )
+ {
+ DLTRACEIN((""));
+ CNcdPurchaseDownloadInfo::ConstructL( aDownload );
+ iVersion = aVersion.AllocL();
+ iUid = aUid;
+ }
+
+
+CNcdDownloadInfo::~CNcdDownloadInfo()
+ {
+ delete iVersion;
+ }