diff -r fb3763350a08 -r 4d54b72983ae menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp --- a/menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp Fri Jan 22 09:35:14 2010 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmcacheforitem.cpp Tue Jan 26 11:48:23 2010 +0200 @@ -21,6 +21,7 @@ #include "hniconholder.h" const TInt KIconHolderListGranularity = 2; +const TInt KIconListGranularity = 2; // ----------------------------------------------------------------------------- // @@ -54,6 +55,7 @@ ClearIconArray(); iIconHolderList.Close(); iItemText.Close(); + delete iIconList; } // ----------------------------------------------------------------------------- @@ -82,19 +84,7 @@ CArrayPtr* CMmCacheForItem::GetIconListL() { __ASSERT_DEBUG( iIsValid, User::Invariant() ); - - const TInt iconCount = iIconHolderList.Count(); - CArrayPtr* iconList = new (ELeave) CArrayPtrFlat( - Max( iconCount, 1 ) ); - CleanupStack::PushL( iconList ); - - for ( TInt i = 0; i < iconCount; ++i ) - { - iconList->AppendL( iIconHolderList[i]->GetGulIcon() ); - } - - CleanupStack::Pop( iconList ); - return iconList; + return iIconList; } // ----------------------------------------------------------------------------- @@ -121,6 +111,7 @@ // void CMmCacheForItem::ClearIconArray() { + iIconList->Reset(); const TInt count = iIconHolderList.Count(); for (TInt i = 0; i < count; ++i ) { @@ -142,7 +133,7 @@ if ( iSubcellsSetupCode != aSubcellsSetupCode || (!!iIsCurrent) != (!!aIsItemCurrent) ) { - iIsValid = EFalse; + SetValidL( EFalse ); } } @@ -160,5 +151,20 @@ // ----------------------------------------------------------------------------- // void CMmCacheForItem::ConstructL() - { + { + iIconList = new ( ELeave ) CArrayPtrFlat( KIconListGranularity ); } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMmCacheForItem::UpdateIconListL() + { + iIconList->Reset(); + const TInt iconCount = iIconHolderList.Count(); + for ( TInt i = 0; i < iconCount; ++i ) + { + iIconList->AppendL( iIconHolderList[i]->GetGulIcon() ); + } + }