--- 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<CCaInnerEntry> 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<resultArray.Count(); i++ )
+ {
+ // for any not visible collection
+ MakeCollectionVisibleIfHasVisibleEntryL( resultArray[i] );
+ }
+ }
+ CleanupStack::PopAndDestroy( &resultArray );
+ }
+
+// ---------------------------------------------------------
+//
+// ---------------------------------------------------------
+//
+void CCaWidgetStorageHandler::MakeCollectionVisibleIfHasVisibleEntryL(
+ CCaInnerEntry* aEntry )
+ {
+ RPointerArray<CCaInnerEntry> 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