diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/src/ncdnodefolderlink.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/server/src/ncdnodefolderlink.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,136 @@ +/* +* 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: Implements CNcdNodeFolderLink class +* +*/ + + +#include "ncdnodefolderlink.h" +#include "ncd_pp_folderref.h" +#include "catalogsdebug.h" + + +CNcdNodeFolderLink* CNcdNodeFolderLink::NewL( CNcdNode& aNode ) + { + CNcdNodeFolderLink* self = + CNcdNodeFolderLink::NewLC( aNode ); + CleanupStack::Pop( self ); + return self; + } + +CNcdNodeFolderLink* CNcdNodeFolderLink::NewLC( CNcdNode& aNode ) + { + CNcdNodeFolderLink* self = new( ELeave ) CNcdNodeFolderLink( aNode ); + CleanupClosePushL( *self ); + self->ConstructL(); + return self; + } + + +CNcdNodeFolderLink::CNcdNodeFolderLink( + CNcdNode& aNode, + NcdNodeClassIds::TNcdNodeClassId aClassId ) +: CNcdNodeLink( aNode, aClassId ) + { + } + +void CNcdNodeFolderLink::ConstructL() + { + CNcdNodeLink::ConstructL(); + } + +CNcdNodeFolderLink::~CNcdNodeFolderLink() + { + } + + +TInt CNcdNodeFolderLink::ExpectedChildrenCount() const + { + DLTRACEIN(( "iExpectedChildrenCount: %d", iExpectedChildrenCount )); + + return iExpectedChildrenCount; + } + + +void CNcdNodeFolderLink::InternalizeL( const MNcdPreminetProtocolEntityRef& aData, + const CNcdNodeIdentifier& aParentIdentifier, + const CNcdNodeIdentifier& aRequestParentIdentifier, + const TUid& aClientUid ) + { + DLTRACEIN(("")); + + if( aData.Type() != MNcdPreminetProtocolEntityRef::EFolderRef ) + { + DLERROR(("Wrong type")); + DASSERT( EFalse ); + // The data should be for the folder + User::Leave( KErrArgument ); + } + + // First internalize parent stuff + CNcdNodeLink::InternalizeL( + aData, aParentIdentifier, aRequestParentIdentifier, aClientUid ); + + // Safe to cast because the type was checked in the beginning + // of this function. + const MNcdPreminetProtocolFolderRef& castedData = + static_cast( aData ); + + if( castedData.Count() != MNcdPreminetProtocolFolderRef::KValueNotSet ) + { + DLTRACE(("Child count set -> change it, previous count: %d new count: %d", + iExpectedChildrenCount, castedData.Count() )); + iExpectedChildrenCount = castedData.Count(); + } + + DLTRACEOUT(("")); + } + + +void CNcdNodeFolderLink::ExternalizeL( RWriteStream& aStream ) + { + DLTRACEIN(("")); + + // First use the parent to externalize the general data + CNcdNodeLink::ExternalizeL( aStream ); + + // Now externalize the data of this specific class + aStream.WriteInt32L( iExpectedChildrenCount ); + + DLTRACEOUT(("")); + } + +void CNcdNodeFolderLink::InternalizeL( RReadStream& aStream ) + { + DLTRACEIN(("")); + + // First use the parent to internalize the general data + CNcdNodeLink::InternalizeL( aStream ); + + // Now internalize the data of this specific class + iExpectedChildrenCount = aStream.ReadInt32L(); + + DLTRACEOUT(("")); + } + + +void CNcdNodeFolderLink::ExternalizeDataForRequestL( RWriteStream& aStream ) const + { + // First use the parent to set the data into the stream + CNcdNodeLink::ExternalizeDataForRequestL( aStream ); + + // Then, insert the folder specific data. + + aStream.WriteInt32L( iExpectedChildrenCount ); + }