homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp
branchRCL_3
changeset 74 edd621764147
parent 18 bd874ee5e5e2
child 82 ace62b58f4b2
--- a/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp	Tue Apr 27 16:57:49 2010 +0300
+++ b/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp	Tue May 11 16:30:05 2010 +0300
@@ -198,7 +198,7 @@
 		    {
 		    // remove widget data when widget removed from screen
 		    CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
-		    InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
+		    InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
 		    // removal may fail if the client has already removed the data
 		    TRAP_IGNORE( RemoveFromCpsL( cpdatamap, KCpData ) );
 		    mWidgetContentIds.erase( aWidget.getIdentifier() );
@@ -411,54 +411,45 @@
 // ---------------------------------------------------------------------------
 //
 void HsWidgetPublisherImpl::PublishWidgetDataL( HsWidget& aWidget )
-    {
-    CLiwGenericParamList* inParam = &(mServiceHandler->InParamListL());
-    CLiwGenericParamList* outParam = &(mServiceHandler->OutParamListL());
-    TLiwGenericParam type(KType, TLiwVariant(KCpData));
-    
-    int count = aWidget.itemsCount();
-    for( int i = 0; i < count; i++ )
-        {
-        inParam->AppendL(type);
-        CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
-
-        HsWidgetItem* const widgetItem = aWidget.getWidgetItem( i );
-        
-        // insert widget data identifiers
-        HBufC* itemName = StdStringToUnicodeLC( widgetItem->getItemName());
-        InsertWidgetDataIdentifiersL( aWidget, cpdatamap, *itemName );
-        CleanupStack::PopAndDestroy( itemName );
-        
-        // insert widget item
-        CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC();
-        InsertWidgetItemL( *widgetItem, datamap );
-        cpdatamap->InsertL( KDataMap, TLiwVariant( datamap ) );
-        
-        // insert widget access control list
-        InsertWidgetACLL( cpdatamap );
-        
-        // insert item triggers
-        CLiwDefaultMap* triggermap = CLiwDefaultMap::NewLC();
-        InsertItemTriggerL( *widgetItem, triggermap );
-        cpdatamap->InsertL( KActionMap, TLiwVariant( triggermap ) );
-        CleanupStack::PopAndDestroy( triggermap );
+	{
+	CLiwGenericParamList* inParam = &(mServiceHandler->InParamListL());
+	CLiwGenericParamList* outParam = &(mServiceHandler->OutParamListL());
+	
+	TLiwGenericParam type(KType, TLiwVariant(KCpData));
+	inParam->AppendL(type);
+	
+	CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
+	InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
+   
+	CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC();
+	InsertWidgetItemsL( aWidget, datamap );
+	cpdatamap->InsertL( KDataMap, TLiwVariant( datamap ) );
+	InsertWidgetACLL( cpdatamap );
+	
+	int count = aWidget.itemsCount();
+	if( count > 0 )
+		{
+		CLiwDefaultMap* triggermap = CLiwDefaultMap::NewLC();
+		InsertItemsTriggersL( aWidget, triggermap );
+		cpdatamap->InsertL( KActionMap, TLiwVariant( triggermap ) );
+		CleanupStack::PopAndDestroy( triggermap );
+		}
 
         // add to CPS
-        TLiwGenericParam item( KItem, TLiwVariant( cpdatamap ));
-        inParam->AppendL( item );
-        mServiceInterface->ExecuteCmdL( KAdd,
-                *inParam, *outParam);
-        TInt ret= ObtainErrorCode( *outParam );
-        
-        CleanupStack::PopAndDestroy( datamap );
-        CleanupStack::PopAndDestroy( cpdatamap );
-        
-        item.Reset();
-        outParam->Reset();
-        inParam->Reset();
-        User::LeaveIfError( ret );
-        }
-    type.Reset();
+	TLiwGenericParam item( KItem, TLiwVariant( cpdatamap ));	    
+	inParam->AppendL( item );
+	mServiceInterface->ExecuteCmdL( KAdd,
+			*inParam, *outParam);
+	TInt ret= ObtainErrorCode( *outParam );
+
+	CleanupStack::PopAndDestroy( datamap );
+	CleanupStack::PopAndDestroy( cpdatamap );
+
+	item.Reset();
+	type.Reset();	
+	outParam->Reset();
+	inParam->Reset();
+	User::LeaveIfError( ret );
     }
 
 // ---------------------------------------------------------------------------
@@ -572,7 +563,7 @@
     CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
     
     TRAPD( err,
-            InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
+            InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
             RemoveFromCpsL( cpdatamap, KCpData ) );
     if ( err != KErrNotFound )
         {
@@ -783,7 +774,7 @@
 // ---------------------------------------------------------------------------
 //
 void HsWidgetPublisherImpl::InsertWidgetDataIdentifiersL( HsWidget& aWidget,
-	CLiwDefaultMap* aDataMap, const TDesC& aContentType )
+	CLiwDefaultMap* aDataMap )
     {
     WidgetContentIdMapType::const_iterator contentIdIter =
             mWidgetContentIds.find( aWidget.getIdentifier() );
@@ -797,7 +788,7 @@
     HBufC* publisherName = StdStringToUnicodeLC( GetPublisherNameL( aWidget ) );
     
     aDataMap->InsertL( KPublisherId, TLiwVariant( *publisherName ) );
-    aDataMap->InsertL( KContentType, TLiwVariant( aContentType ) );
+    aDataMap->InsertL( KContentType, TLiwVariant( KAll ) );
     aDataMap->InsertL( KContentId, TLiwVariant( contentId ) );
     
     CleanupStack::PopAndDestroy( publisherName );
@@ -845,25 +836,31 @@
 // 
 // ---------------------------------------------------------------------------
 //
-void HsWidgetPublisherImpl::InsertWidgetItemL ( HsWidgetItem& aWidgetItem,
+void HsWidgetPublisherImpl::InsertWidgetItemsL ( HsWidget& aWidget,
 	CLiwDefaultMap* aDataMap )
 	{
-    TPtrC8 itemName = ((TUint8*)aWidgetItem.getItemName().c_str());
-    if( aWidgetItem.isStringValue() )
-        {
-        TPtrC8 itemValue = ((TUint8*)aWidgetItem.getItemValue().c_str());
-        HBufC* value = HBufC::NewLC( KUnicodeSize * itemValue.Length() );
-        TPtr dest( value->Des() );
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( dest, itemValue );
-        
-        aDataMap->InsertL( itemName, TLiwVariant(*value ));
-        CleanupStack::PopAndDestroy(value);
-        }
-    else
-        {
-        int itemValue = aWidgetItem.getItemValueInt();
-        aDataMap->InsertL( itemName, TLiwVariant( TInt32( itemValue ) ));
-        }
+	int count = aWidget.itemsCount();
+	for (int index = 0; index < count; index++)
+		{
+		HsWidgetItem* const item = aWidget.getWidgetItem( index );
+		
+		TPtrC8 itemName = ((TUint8*)item->getItemName().c_str());
+		if( item->isStringValue() )
+			{
+			TPtrC8 itemValue = ((TUint8*)item->getItemValue().c_str());
+		    HBufC* value = HBufC::NewLC( KUnicodeSize * itemValue.Length() );
+		    TPtr dest( value->Des() );
+		    CnvUtfConverter::ConvertToUnicodeFromUtf8( dest, itemValue );
+		    
+		    aDataMap->InsertL( itemName, TLiwVariant(*value ));
+			CleanupStack::PopAndDestroy(value);
+			}
+		else
+			{
+			int itemValue = item->getItemValueInt();
+			aDataMap->InsertL( itemName, TLiwVariant( TInt32( itemValue ) ));
+			}
+		}
 	}
 
 // ---------------------------------------------------------------------------
@@ -941,9 +938,10 @@
 // 
 // ---------------------------------------------------------------------------
 //
-void HsWidgetPublisherImpl::InsertItemTriggerL( HsWidgetItem& aWidgetItem,
+void HsWidgetPublisherImpl::InsertItemsTriggersL( HsWidget& aWidget,
 	CLiwDefaultMap* aTriggerMap )
 	{
+	int count = aWidget.itemsCount();
 	CLiwDefaultMap* activateAction = CLiwDefaultMap::NewLC();
 	activateAction->InsertL( KPluginId, TLiwVariant( KCASpaAppLauncherPlugin ) );
 	
@@ -954,10 +952,13 @@
 	activate->InsertL( KApaCommand, TLiwVariant( KApaCommandBackground ) );
 	
 	activateAction->InsertL( KData, TLiwVariant( activate ) );
-
-    TPtrC8 itemName = ((TUint8*)aWidgetItem.getItemName().c_str());
-    aTriggerMap->InsertL( itemName, TLiwVariant( activateAction ));
-
+	
+	for (int index = 0; index < count; index++)
+		{
+		HsWidgetItem* const item = aWidget.getWidgetItem( index );
+		TPtrC8 itemName = ((TUint8*)item->getItemName().c_str());
+		aTriggerMap->InsertL( itemName, TLiwVariant( activateAction ));
+		}
 	CleanupStack::PopAndDestroy( activate );
 	CleanupStack::PopAndDestroy( activateAction );
 	}