diff -r b8fae6b8a148 -r d05a55b217df idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Wed Mar 31 21:17:19 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Wed Apr 14 15:47:59 2010 +0300 @@ -102,7 +102,7 @@ // @return returns pointer to desired node, NULL if nothing found // --------------------------------------------------------------------------- // -CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName ) +static CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName ) { if ( !aNode ) { @@ -131,12 +131,57 @@ } // --------------------------------------------------------------------------- +// Finds template publisher name +// +// --------------------------------------------------------------------------- +// +static const TDesC8& FindTemplatePublisherName( CXnDomNode* aNode ) + { + if ( !aNode ) + { + return KNullDesC8(); + } + + CXnDomList& list( aNode->ChildNodes() ); + + for ( TInt i = 0; i < list.Length(); i++ ) + { + CXnDomNode* node = static_cast< CXnDomNode* >( list.Item( i ) ); + + // Find element + if ( node->Name() == KConfigurationModel ) + { + CXnDomList& attributes( node->AttributeList() ); + + CXnDomAttribute* name( + static_cast< CXnDomAttribute* >( + attributes.FindByName( XnPropertyNames::action::KName ) ) ); + + // Find attribute name="publisher" + if ( name && name->Value() == KPublisher ) + { + CXnDomAttribute* value( + static_cast< CXnDomAttribute* >( + attributes.FindByName( XnPropertyNames::action::KValue ) ) ); + + if ( value ) + { + return value->Value(); + } + } + } + } + + return KNullDesC8(); + } + +// --------------------------------------------------------------------------- // FindNodeById // Finds recursively node by id // @return returns pointer to desired node, NULL if nothing found // --------------------------------------------------------------------------- // -CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId ) +static CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId ) { if ( !aNode ) { @@ -595,12 +640,16 @@ if( bgManager.WallpaperType() == CXnBackgroundManager::EPageSpecific ) { HBufC* bgImage = ItemValueL( *configuration, KWallpaper, KPath ); - CleanupStack::PushL( bgImage ); - if( bgImage && bgImage->Length() > 0 ) + if ( bgImage ) { - bgManager.CacheWallpaperL( bgImage->Des(), aViewData ); + CleanupStack::PushL( bgImage ); + bgImage->Des().Trim(); + if( bgImage && bgImage->Length() > 0 ) + { + bgManager.CacheWallpaperL( bgImage->Des(), aViewData ); + } + CleanupStack::PopAndDestroy( bgImage ); } - CleanupStack::PopAndDestroy( bgImage ); } if ( pluginNode ) { @@ -736,20 +785,9 @@ if ( info.Type() == KKeyTemplate ) { - CXnDomNode* node( FindNodeByName( widgetRoot, KContentSourceNode ) ); + const TDesC8& name( FindTemplatePublisherName( widgetRoot ) ); - if ( node ) - { - CXnDomList& attributes( node->AttributeList() ); - - CXnDomAttribute* attribute( static_cast< CXnDomAttribute* >( - attributes.FindByName( KName ) ) ); - - if ( attribute ) - { - aPluginData.SetPublisherNameL( attribute->Value() ); - } - } + aPluginData.SetPublisherNameL( name ); } retval = KErrNone;