--- /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<const MNcdPreminetProtocolFolderRef&>( 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 );
+ }