diff -r d1dadafc5584 -r 26079c1bb561 contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp --- a/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp Mon Sep 27 11:31:59 2010 +0300 +++ b/contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp Wed Oct 06 16:00:22 2010 +0300 @@ -103,6 +103,7 @@ FetchWidgetsL(); AddWidgetsL( iParser->WidgetsScanL( iWidgetDBCache ) ); RemoveWidgetsL(); + MakeNotEmptyCollectionsVisibleL(); } // ---------------------------------------------------------------------------- @@ -368,7 +369,6 @@ // // ---------------------------------------------------------------------------- // - void CCaWidgetStorageHandler::SetLocalizationsL( const CCaWidgetDescription* aWidget, TInt aEntryId ) { @@ -415,7 +415,6 @@ // // ---------------------------------------------------------------------------- // - void CCaWidgetStorageHandler::UpdateCompIdAndRemovableFlagL( const TDesC& aManifestFilePathName, CCaInnerEntry& aEntry ) const { @@ -462,4 +461,61 @@ CleanupStack::PopAndDestroy( &componentIds ); } +// --------------------------------------------------------- +// +// --------------------------------------------------------- +// +void CCaWidgetStorageHandler::MakeNotEmptyCollectionsVisibleL() + { + RPointerArray resultArray; + CleanupResetAndDestroyPushL( resultArray ); + CCaInnerQuery* hiddenCollectionsQuery = CCaInnerQuery::NewLC(); + CDesC16ArrayFlat* entryType = new ( ELeave ) CDesC16ArrayFlat( + KGranularityOne ); + CleanupStack::PushL( entryType ); + entryType->AppendL( KCaTypeCollection ); + hiddenCollectionsQuery->SetEntryTypeNames( entryType ); + hiddenCollectionsQuery->SetFlagsOff( EVisible ); + iStorage->GetEntriesL( hiddenCollectionsQuery, resultArray ); + CleanupStack::Pop( entryType ); + CleanupStack::PopAndDestroy( hiddenCollectionsQuery ); + if( resultArray.Count()>0 ) + { + for( TInt i=0; i resultEntriesArray; + CleanupResetAndDestroyPushL( resultEntriesArray ); + CCaInnerQuery* visibleEntriesQuery = CCaInnerQuery::NewLC(); + visibleEntriesQuery->SetParentId( aEntry->GetId() ); + visibleEntriesQuery->SetFlagsOn( EVisible ); + visibleEntriesQuery->SetFlagsOff( EMissing ); + iStorage->GetEntriesL( visibleEntriesQuery, resultEntriesArray ); + if( resultEntriesArray.Count()>0 ) + { + // set collection visible if hidden + if( !( aEntry->GetFlags() & EVisible ) ) + { + aEntry->SetFlags( aEntry->GetFlags() | EVisible ); + // update here this collection + iStorage->AddL( aEntry ); + } + } + CleanupStack::PopAndDestroy( visibleEntriesQuery ); + CleanupStack::PopAndDestroy( &resultEntriesArray ); + } + // End of File