idlehomescreen/xmluicontroller/src/xmlnodeidgenerator.cpp
changeset 0 f72a12da539e
child 9 f966699dea19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluicontroller/src/xmlnodeidgenerator.cpp	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2005-2007 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:  Builder class for XML UI node identifiers.
+*
+*/
+
+
+#include "xmlnodeidgenerator.h"
+#include "aipropertyextension.h"
+#include "aicontentmodel.h"
+#include "aixmluiutils.h"
+#include "aixmluiconstants.h"
+#include "aistrcnv.h"
+
+using namespace AiXmlUiController;
+
+CXmlNodeIdGenerator::CXmlNodeIdGenerator()
+    {
+    }
+    
+CXmlNodeIdGenerator* CXmlNodeIdGenerator::NewL()
+    {
+    return new(ELeave) CXmlNodeIdGenerator;
+    }
+    
+CXmlNodeIdGenerator::~CXmlNodeIdGenerator()
+    {
+    delete iContentNodeIdBuf;
+    }
+
+TPtrC CXmlNodeIdGenerator::SettingsNodeIdL( const TAiPublisherInfo& aPubInfo )
+    {
+    const TInt idLength = aPubInfo.iName.Length()
+                          + AiUiDef::xml::id::KSettingsIdSeparator().Length()
+                          + AiUiDef::xml::propertyClass::KSettings().Length();
+    TPtr bufPtr( AiUtility::EnsureBufMaxLengthL( iContentNodeIdBuf, idLength ) );
+    
+    bufPtr.Copy( AiUiDef::xml::propertyClass::KSettings );
+    bufPtr.Append( AiUiDef::xml::id::KSettingsIdSeparator );
+    bufPtr.Append( aPubInfo.iName );
+    
+    return bufPtr;
+    }
+
+TPtrC CXmlNodeIdGenerator::ContentNodeIdL(MAiPropertyExtension& aPlugin, const TAiContentItem& aContentItem)
+    {
+    TAiPublisherInfo* info = static_cast<TAiPublisherInfo*>( aPlugin.GetPropertyL( EAiPublisherInfo ) );
+    
+    LeaveIfNull( info, KErrNotFound );
+    
+    return ContentNodeIdL(*info, aContentItem);
+    }
+    
+TPtrC CXmlNodeIdGenerator::ContentNodeIdL
+        ( const TAiPublisherInfo& aPubInfo, const TAiContentItem& aContentItem )
+    {
+    const TDesC& contentCid = ContentCid( aContentItem );
+    
+    // Calculate buffer size and ensure buffer has enough room
+    const TInt idLength = aPubInfo.iName.Length()
+                          + AiUiDef::xml::id::KContentIdSeparator().Length()
+                          + contentCid.Length();
+    TPtr bufPtr( AiUtility::EnsureBufMaxLengthL( iContentNodeIdBuf, idLength ) );
+    
+    // Copy publisher info name to the buffer
+    bufPtr.Copy( aPubInfo.iName );
+    
+    // Append separator
+    bufPtr.Append( AiUiDef::xml::id::KContentIdSeparator );
+    
+    // Append content item id
+    bufPtr.Append( contentCid );
+    
+    return bufPtr;
+    }
+
+TPtrC CXmlNodeIdGenerator::ResourceNodeIdL
+        ( MAiPropertyExtension& aPlugin, const TAiContentItem& aContentItem )
+    {
+    TAiPublisherInfo* info = static_cast<TAiPublisherInfo*>( aPlugin.GetPropertyL( EAiPublisherInfo ) );
+    
+    LeaveIfNull( info, KErrNotFound );
+    
+    return ResourceNodeIdL(*info, aContentItem);
+    }
+
+TPtrC CXmlNodeIdGenerator::ResourceNodeIdL
+        ( const TAiPublisherInfo& aPubInfo, const TAiContentItem& aContentItem )
+    {
+    // Resources node id is similar to content node id
+    return ContentNodeIdL( aPubInfo, aContentItem );
+    }