diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/client/src/ncdinstalledapplicationimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/client/src/ncdinstalledapplicationimpl.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,149 @@ +/* +* Copyright (c) 2006 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: Contains CNcdInstalledApplication class implementation +* +*/ + + +#include "ncdnodeinstallproxy.h" +#include "ncdinstalledapplicationimpl.h" +#include "ncdinstallationservice.h" +#include "catalogsinterfaceidentifier.h" +#include "catalogsutils.h" +#include "catalogsdebug.h" + + +// ======== PUBLIC MEMBER FUNCTIONS ======== + + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CNcdInstalledApplication::CNcdInstalledApplication( + CNcdNodeInstallProxy& aParent, + const TUid& aUid, + MNcdInstalledContent::TInstalledContentType aType, + TBool aUriExists ) + : CNcdInstalledContent( aParent, aType ), + iUid( aUid ), + iUriExists( aUriExists ) + { + } + + +// --------------------------------------------------------------------------- +// 2nd phase constructor +// --------------------------------------------------------------------------- +// +void CNcdInstalledApplication::ConstructL( + const TDesC& aVersion, + const TDesC& aDocumentName ) + { + DLTRACEIN(("this: %x, iUid: %x", this, iUid.iUid )); + CNcdInstalledContent::ConstructL(); + + // Register the interface + MNcdInstalledApplication* interface( this ); + AddInterfaceL( + CCatalogsInterfaceIdentifier::NewL( interface, this, + MNcdInstalledApplication::KInterfaceUid ) ); + + TRAPD( err, TCatalogsVersion::ConvertL( iVersion, aVersion ) ); + LeaveIfNotErrorL( err, KErrArgument, KErrGeneral ); + iDocumentName = aDocumentName.AllocL(); + } + + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CNcdInstalledApplication* CNcdInstalledApplication::NewLC( + CNcdNodeInstallProxy& aParent, + const TUid& aUid, + const TDesC& aVersion, + const TDesC& aDocumentName, + MNcdInstalledContent::TInstalledContentType aType, + TBool aUriExists ) + { + CNcdInstalledApplication* self = + new( ELeave ) CNcdInstalledApplication( + aParent, aUid, aType, aUriExists ); + // Using normal PushL because the object does not have any references yet + CleanupStack::PushL( self ); + self->ConstructL( aVersion, aDocumentName ); + return self; + } + + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CNcdInstalledApplication::~CNcdInstalledApplication() + { + DLTRACEIN(("this: %x", this)); + + // Remove interfaces implemented by this class from the interface list. + // So, the interface list is up to date when this class object is deleted. + RemoveInterface( MNcdInstalledApplication::KInterfaceUid ); + + + // Delete member variables here + // Do not delete node and operation manager because + // this object does not own them. + delete iDocumentName; + } + + +// --------------------------------------------------------------------------- +// Is installed +// --------------------------------------------------------------------------- +// +TBool CNcdInstalledApplication::IsInstalledL() const + { + DLTRACEIN(("")); + if ( !iUriExists ) + { + DLTRACEOUT(("No URI, considered as installed")); + return ETrue; + } + + return ContentOwner().InstallationService().IsApplicationInstalledL( + iUid, iVersion ) >= ENcdApplicationInstalled; + } + + +// --------------------------------------------------------------------------- +// UID getter +// --------------------------------------------------------------------------- +// +TUid CNcdInstalledApplication::Uid() const + { + DLTRACEIN(("UID: %x", iUid.iUid)); + return iUid; + } + + +// --------------------------------------------------------------------------- +// Document name getter +// --------------------------------------------------------------------------- +// +const TDesC& CNcdInstalledApplication::DocumentName() const + { + DASSERT( iDocumentName ); + DLTRACEIN(( _L("document: %S"), iDocumentName )); + return *iDocumentName; + }