ncdengine/provider/server/src/ncdnodefolderlink.cpp
changeset 0 ba25891c3a9e
--- /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 );
+    }