--- a/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Fri Feb 19 23:07:29 2010 +0200
+++ b/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Fri Mar 12 15:43:54 2010 +0200
@@ -198,7 +198,7 @@
{
// remove widget data when widget removed from screen
CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
- InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
+ InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
// removal may fail if the client has already removed the data
TRAP_IGNORE( RemoveFromCpsL( cpdatamap, KCpData ) );
mWidgetContentIds.erase( aWidget.getIdentifier() );
@@ -411,45 +411,55 @@
// ---------------------------------------------------------------------------
//
void HsWidgetPublisherImpl::PublishWidgetDataL( HsWidget& aWidget )
- {
- 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 );
- }
+ {
+ 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();
- TLiwGenericParam item( KItem, TLiwVariant( cpdatamap ));
- inParam->AppendL( item );
- mServiceInterface->ExecuteCmdL( KAdd,
- *inParam, *outParam);
- TInt ret= ObtainErrorCode( *outParam );
+ 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 );
- CleanupStack::PopAndDestroy( datamap );
- CleanupStack::PopAndDestroy( cpdatamap );
-
- item.Reset();
- type.Reset();
- outParam->Reset();
- inParam->Reset();
- User::LeaveIfError( ret );
- }
+ // 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();
+ }
// ---------------------------------------------------------------------------
//
@@ -562,7 +572,7 @@
CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
TRAPD( err,
- InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
+ InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
RemoveFromCpsL( cpdatamap, KCpData ) );
if ( err != KErrNotFound )
{
@@ -773,7 +783,7 @@
// ---------------------------------------------------------------------------
//
void HsWidgetPublisherImpl::InsertWidgetDataIdentifiersL( HsWidget& aWidget,
- CLiwDefaultMap* aDataMap )
+ CLiwDefaultMap* aDataMap, const TDesC& aContentType )
{
WidgetContentIdMapType::const_iterator contentIdIter =
mWidgetContentIds.find( aWidget.getIdentifier() );
@@ -787,7 +797,7 @@
HBufC* publisherName = StdStringToUnicodeLC( GetPublisherNameL( aWidget ) );
aDataMap->InsertL( KPublisherId, TLiwVariant( *publisherName ) );
- aDataMap->InsertL( KContentType, TLiwVariant( KAll ) );
+ aDataMap->InsertL( KContentType, TLiwVariant( aContentType ) );
aDataMap->InsertL( KContentId, TLiwVariant( contentId ) );
CleanupStack::PopAndDestroy( publisherName );
@@ -835,31 +845,25 @@
//
// ---------------------------------------------------------------------------
//
-void HsWidgetPublisherImpl::InsertWidgetItemsL ( HsWidget& aWidget,
+void HsWidgetPublisherImpl::InsertWidgetItemL ( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aDataMap )
{
- 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 ) ));
- }
- }
+ 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 ) ));
+ }
}
// ---------------------------------------------------------------------------
@@ -937,10 +941,9 @@
//
// ---------------------------------------------------------------------------
//
-void HsWidgetPublisherImpl::InsertItemsTriggersL( HsWidget& aWidget,
+void HsWidgetPublisherImpl::InsertItemTriggerL( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aTriggerMap )
{
- int count = aWidget.itemsCount();
CLiwDefaultMap* activateAction = CLiwDefaultMap::NewLC();
activateAction->InsertL( KPluginId, TLiwVariant( KCASpaAppLauncherPlugin ) );
@@ -951,13 +954,10 @@
activate->InsertL( KApaCommand, TLiwVariant( KApaCommandBackground ) );
activateAction->InsertL( KData, TLiwVariant( activate ) );
-
- 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 ));
- }
+
+ TPtrC8 itemName = ((TUint8*)aWidgetItem.getItemName().c_str());
+ aTriggerMap->InsertL( itemName, TLiwVariant( activateAction ));
+
CleanupStack::PopAndDestroy( activate );
CleanupStack::PopAndDestroy( activateAction );
}