menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp
changeset 1 5315654608de
parent 0 f72a12da539e
child 4 4d54b72983ae
equal deleted inserted replaced
0:f72a12da539e 1:5315654608de
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:   
    14 * Description:
    15 *  Version     : %version: MM_72 % << Don't touch! Updated by Synergy at check-out.
    15 *  Version     : %version: MM_73 % << Don't touch! Updated by Synergy at check-out.
    16 *  Version     : %version: MM_72 % << Don't touch! Updated by Synergy at check-out.
    16 *  Version     : %version: MM_73 % << Don't touch! Updated by Synergy at check-out.
    17 *
    17 *
    18 */
    18 */
    19 
    19 
    20 
    20 
    21 #include "mmgridcontainer.h"
    21 #include "mmgridcontainer.h"
    37 // -----------------------------------------------------------------------------
    37 // -----------------------------------------------------------------------------
    38 // CMmGridContainer::NewLC()
    38 // CMmGridContainer::NewLC()
    39 // Two-phased constructor.
    39 // Two-phased constructor.
    40 // -----------------------------------------------------------------------------
    40 // -----------------------------------------------------------------------------
    41 //
    41 //
    42 CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect, 
    42 CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect,
    43         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
    43         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
    44     {        
    44     {
    45     CMmGridContainer* self = new( ELeave ) CMmGridContainer();
    45     CMmGridContainer* self = new( ELeave ) CMmGridContainer();
    46     CleanupStack::PushL( self );
    46     CleanupStack::PushL( self );
    47     self->ConstructL( aRect, aObjectProvider, aLibrary );
    47     self->ConstructL( aRect, aObjectProvider, aLibrary );
    48     return self;
    48     return self;
    49     }
    49     }
    51 // -----------------------------------------------------------------------------
    51 // -----------------------------------------------------------------------------
    52 // CMmGridContainer::NewL()
    52 // CMmGridContainer::NewL()
    53 // Two-phased constructor.
    53 // Two-phased constructor.
    54 // -----------------------------------------------------------------------------
    54 // -----------------------------------------------------------------------------
    55 //
    55 //
    56 CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect, 
    56 CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect,
    57         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
    57         MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary )
    58     {        
    58     {
    59     CMmGridContainer* self = NewLC( aRect, aObjectProvider, aLibrary);
    59     CMmGridContainer* self = NewLC( aRect, aObjectProvider, aLibrary);
    60     CleanupStack::Pop( self );
    60     CleanupStack::Pop( self );
    61     return self;
    61     return self;
    62     }
    62     }
    63 
    63 
    69 CMmGridContainer::CMmGridContainer()
    69 CMmGridContainer::CMmGridContainer()
    70     {
    70     {
    71     }
    71     }
    72 
    72 
    73 // -----------------------------------------------------------------------------
    73 // -----------------------------------------------------------------------------
    74 // 
    74 //
    75 // -----------------------------------------------------------------------------
    75 // -----------------------------------------------------------------------------
    76 //
    76 //
    77 CAknGrid* CMmGridContainer::Grid()
    77 CAknGrid* CMmGridContainer::Grid()
    78     { 
    78     {
    79     return iGrid;
    79     return iGrid;
    80     }
    80     }
    81 // -----------------------------------------------------------------------------
    81 // -----------------------------------------------------------------------------
    82 // CMmGridContainer::~CMmGridContainer()
    82 // CMmGridContainer::~CMmGridContainer()
    83 // Destructor
    83 // Destructor
    84 // -----------------------------------------------------------------------------
    84 // -----------------------------------------------------------------------------
    85 //
    85 //
    86 CMmGridContainer::~CMmGridContainer()
    86 CMmGridContainer::~CMmGridContainer()
    87     {  
    87     {
    88     delete iGrid;
    88     delete iGrid;
    89     }
    89     }
    90 
    90 
    91 // -----------------------------------------------------------------------------
    91 // -----------------------------------------------------------------------------
    92 //
    92 //
    93 // -----------------------------------------------------------------------------
    93 // -----------------------------------------------------------------------------
    94 //    
    94 //
    95 THnSuiteWidgetType CMmGridContainer::WidgetType()
    95 THnSuiteWidgetType CMmGridContainer::WidgetType()
    96 	{
    96 	{
    97 	return EGridWidget;
    97 	return EGridWidget;
    98 	}
    98 	}
    99 // -----------------------------------------------------------------------------
    99 // -----------------------------------------------------------------------------
   100 // CMmGridContainer::ConstructL()
   100 // CMmGridContainer::ConstructL()
   101 // 2nd phase constructor
   101 // 2nd phase constructor
   102 // -----------------------------------------------------------------------------
   102 // -----------------------------------------------------------------------------
   103 //    
   103 //
   104 void CMmGridContainer::ConstructL( const TRect& aRect, MObjectProvider* aObjectProvider,
   104 void CMmGridContainer::ConstructL( const TRect& aRect, MObjectProvider* aObjectProvider,
   105         CMmTemplateLibrary* aTemplateLibrary )
   105         CMmTemplateLibrary* aTemplateLibrary )
   106     {
   106     {
   107     CMmWidgetContainer::ConstructL();
   107     CMmWidgetContainer::ConstructL();
   108     
   108 
   109     SetMopParent( aObjectProvider );
   109     SetMopParent( aObjectProvider );
   110     CreateWindowL(); // Creates window.     
   110     CreateWindowL(); // Creates window.
   111     iWidget = CreateGridL(aTemplateLibrary);
   111     iWidget = CreateGridL(aTemplateLibrary);
   112     iWidget->SetListBoxObserver( this );
   112     iWidget->SetListBoxObserver( this );
   113     SetRect( aRect ); // Sets rectangle of frame.
   113     SetRect( aRect ); // Sets rectangle of frame.
   114     ActivateL(); // Activates window. ( Ready to draw )     
   114     ActivateL(); // Activates window. ( Ready to draw )
   115     SetupDrawer();
   115     SetupDrawer();
   116     SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() );	
   116     SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() );
   117     iPostProcessor = CMmPostEvaluationProcessor::NewL( *iDrawer );
   117     iPostProcessor = CMmPostEvaluationProcessor::NewL( *iDrawer );
   118     }
   118     }
   119 
   119 
   120 // -----------------------------------------------------------------------------
   120 // -----------------------------------------------------------------------------
   121 // CMmGridContainer::CreateGridL()
   121 // CMmGridContainer::CreateGridL()
   122 // Constructs listbox from resource, creates scroll bar and sets empty
   122 // Constructs listbox from resource, creates scroll bar and sets empty
   123 // list background text. 
   123 // list background text.
   124 // -----------------------------------------------------------------------------
   124 // -----------------------------------------------------------------------------
   125 //
   125 //
   126 CMmGrid* CMmGridContainer::CreateGridL( CMmTemplateLibrary* aTemplateLibrary )
   126 CMmGrid* CMmGridContainer::CreateGridL( CMmTemplateLibrary* aTemplateLibrary )
   127     {
   127     {
   128     iGrid = CMmGrid::NewL( this,
   128     iGrid = CMmGrid::NewL( this,
   131     iGrid->CreateScrollBarFrameL( ETrue );
   131     iGrid->CreateScrollBarFrameL( ETrue );
   132     iGrid->SetPrimaryScrollingType(
   132     iGrid->SetPrimaryScrollingType(
   133     			CAknGridView::EScrollFollowsItemsAndLoops );
   133     			CAknGridView::EScrollFollowsItemsAndLoops );
   134     iGrid->SetSecondaryScrollingType(
   134     iGrid->SetSecondaryScrollingType(
   135     			CAknGridView::EScrollFollowsGrid );
   135     			CAknGridView::EScrollFollowsGrid );
   136     iGrid->ScrollBarFrame()->SetScrollBarVisibilityL( 
   136     iGrid->ScrollBarFrame()->SetScrollBarVisibilityL(
   137     		CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );
   137     		CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );
   138     iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
   138     iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
   139     return iGrid;
   139     return iGrid;
   140     }
   140     }
   141 
   141 
   142 // -----------------------------------------------------------------------------
   142 // -----------------------------------------------------------------------------
   143 //
   143 //
   144 // -----------------------------------------------------------------------------
   144 // -----------------------------------------------------------------------------
   145 //     
   145 //
   146 void CMmGridContainer::SizeChanged()
   146 void CMmGridContainer::SizeChanged()
   147     {
   147     {
   148     CMmWidgetContainer::SizeChanged();
   148     CMmWidgetContainer::SizeChanged();
   149     if ( iGrid )
   149     if ( iGrid )
   150     	{
   150     	{
   169     	{
   169     	{
   170     	iGrid->SetPrimaryScrollingType(
   170     	iGrid->SetPrimaryScrollingType(
   171     	    			CAknGridView::EScrollFollowsItemsAndLoops );
   171     	    			CAknGridView::EScrollFollowsItemsAndLoops );
   172     	iGrid->SetSecondaryScrollingType(
   172     	iGrid->SetSecondaryScrollingType(
   173     	    			CAknGridView::EScrollFollowsGrid );
   173     	    			CAknGridView::EScrollFollowsGrid );
   174     	    
   174 
   175     	}
   175     	}
   176 	
   176 
   177 	// In EditMode we allow Avkon to redraw scrollbar background
   177 	// In EditMode we allow Avkon to redraw scrollbar background
   178 	// to prevent scrollbar flicking.
   178 	// to prevent scrollbar flicking.
   179 	// When edit mode is disabled, this redrawing causes performance problems 
   179 	// When edit mode is disabled, this redrawing causes performance problems
   180 	// (and disabling it does not produce erroneous side-effects).
   180 	// (and disabling it does not produce erroneous side-effects).
   181 	if( aIsEditMode )
   181 	if( aIsEditMode )
   182 		{
   182 		{
   183 	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, ETrue );
   183 	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, ETrue );
   184 		}
   184 		}
   185 	else
   185 	else
   186 		{
   186 		{
   187 	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
   187 	    iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse );
   188 		}
   188 		}
   189 	
   189 
   190     CMmWidgetContainer::SetEditModeL( aIsEditMode );
   190     CMmWidgetContainer::SetEditModeL( aIsEditMode );
   191     }
   191     }
   192 
   192 
   193 // -----------------------------------------------------------------------------
   193 // -----------------------------------------------------------------------------
   194 //
   194 //
   195 // -----------------------------------------------------------------------------
   195 // -----------------------------------------------------------------------------
   196 //
   196 //
   197 EXPORT_C void CMmGridContainer::SetEmptyTextL(const TDesC& aText)
   197 EXPORT_C void CMmGridContainer::SetEmptyTextL(const TDesC& aText)
   198     {
   198     {
   199     iGrid->SetEmptyGridTextL( aText );  
   199     iGrid->SetEmptyGridTextL( aText );
   200     }
   200     }
   201 
   201 
   202 // -----------------------------------------------------------------------------
   202 // -----------------------------------------------------------------------------
   203 //
   203 //
   204 // -----------------------------------------------------------------------------
   204 // -----------------------------------------------------------------------------
   205 //
   205 //
   206 EXPORT_C void CMmGridContainer::SetDefaultHighlightL(  TBool aRedraw )
   206 EXPORT_C void CMmGridContainer::SetDefaultHighlightL(  TBool aRedraw )
   207     {  
   207     {
   208     CAknGridView* view = (CAknGridView*) iGrid->View();
   208     TInt defaultHighlight( 0 );
   209     
   209     SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw );
   210     if ( view )
   210     }
   211         {
       
   212         TInt defaultHighlight( 0 );
       
   213         TSize layout = TSize( view->NumberOfColsInView(),
       
   214         		view->NumberOfRowsInView() );
       
   215         
       
   216         if ( Layout_Meta_Data::IsLandscapeOrientation() || FlipOpen() )
       
   217             {
       
   218             defaultHighlight = LandscapeOrientationDefaultHighlight( layout );
       
   219             }
       
   220         else
       
   221             {
       
   222             defaultHighlight = PortraitOrientationDefaultHighlight( layout );
       
   223             }
       
   224         
       
   225         SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw );
       
   226         }
       
   227     }
       
   228 
       
   229 // -----------------------------------------------------------------------------
       
   230 //
       
   231 //
       
   232 // -----------------------------------------------------------------------------
       
   233 //
       
   234 TInt CMmGridContainer::LandscapeOrientationDefaultHighlight( TSize aLayout )
       
   235 	{
       
   236 	TInt defaultHighlight( 0 );
       
   237 	
       
   238     if ( aLayout == TSize(MmGrid::K4By3LayoutX, MmGrid::K4By3LayoutY) 
       
   239     		&& iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold )
       
   240         {
       
   241         defaultHighlight = MmGrid::K4By3DefaultHighlight;
       
   242         }
       
   243     else if ( aLayout == TSize(MmGrid::K5By4LayoutX, MmGrid::K5By4LayoutY) 
       
   244     		&& iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold )
       
   245         {
       
   246         defaultHighlight = MmGrid::K5By4DefaultHighlight;
       
   247         }
       
   248     // When flip is opened, the phone layout is not changed immediately,
       
   249     // so the phone might still be in portrait mode for a couple of secs.
       
   250     // However, we have to set the correct default item immediately, and
       
   251     // the correct item is the one for landscape mode, even if the phone
       
   252     // is still in portrait mode. On variant switch 3x4 layout will be
       
   253     // replaced by 4x3 layout, while 4x5 layout will change into 5x4.
       
   254     else if ( aLayout == TSize( MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY )
       
   255             && iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold )
       
   256         {
       
   257         defaultHighlight = MmGrid::K4By3DefaultHighlight;
       
   258         }
       
   259     else if ( aLayout == TSize( MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY )
       
   260             && iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold )
       
   261         {
       
   262         defaultHighlight = MmGrid::K5By4DefaultHighlight;
       
   263         }
       
   264     
       
   265     return defaultHighlight;
       
   266 	}
       
   267 
       
   268 // -----------------------------------------------------------------------------
       
   269 //
       
   270 //
       
   271 // -----------------------------------------------------------------------------
       
   272 //
       
   273 TInt CMmGridContainer::PortraitOrientationDefaultHighlight( TSize aLayout )
       
   274 	{
       
   275 	TInt defaultHighlight( 0 );
       
   276 	
       
   277 	if ( aLayout == TSize(MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY ) 
       
   278 			&& iGrid->Model()->NumberOfItems() >= MmGrid::K4By5Threshold )
       
   279 		{
       
   280 		defaultHighlight = MmGrid::K4By5DefaultHighlight;
       
   281 		}
       
   282 	else if ( aLayout == TSize(MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY) 
       
   283 			&& iGrid->Model()->NumberOfItems() >= MmGrid::K3By4Threshold )
       
   284 		{
       
   285 		defaultHighlight = MmGrid::K3By4DefaultHighlight;
       
   286 		}
       
   287 	
       
   288     return defaultHighlight;
       
   289 	}
       
   290 
   211 
   291 // -----------------------------------------------------------------------------
   212 // -----------------------------------------------------------------------------
   292 //
   213 //
   293 //
   214 //
   294 // -----------------------------------------------------------------------------
   215 // -----------------------------------------------------------------------------
   295 //
   216 //
   296 TInt CMmGridContainer::DefaultHighlightOffset()
   217 TInt CMmGridContainer::DefaultHighlightOffset()
   297 	{
   218 	{
   298 	TInt topVisibleItemIndex = iGrid->View()->TopItemIndex();
   219 	TInt topVisibleItemIndex = iGrid->View()->TopItemIndex();
   299 	TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels();
   220 	TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels();
   300 	
   221 
   301 	if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex ) 
   222 	if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex )
   302 		&& hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 )
   223 		&& hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 )
   303 		{
   224 		{
   304 		topVisibleItemIndex += ColumnsInCurrentView();
   225 		topVisibleItemIndex += ColumnsInCurrentView();
   305 		}
   226 		}
   306 		
   227 
   307 	return topVisibleItemIndex;
   228 	return topVisibleItemIndex;
   308 	}
   229 	}
   309 
   230 
   310 // -----------------------------------------------------------------------------
   231 // -----------------------------------------------------------------------------
   311 //
   232 //
   355 // -----------------------------------------------------------------------------
   276 // -----------------------------------------------------------------------------
   356 //
   277 //
   357 // -----------------------------------------------------------------------------
   278 // -----------------------------------------------------------------------------
   358 //
   279 //
   359 void CMmGridContainer::SetHighlightVisibilityL( TBool aVisible )
   280 void CMmGridContainer::SetHighlightVisibilityL( TBool aVisible )
   360     {    
   281     {
   361     CMmWidgetContainer::SetHighlightVisibilityL( aVisible );
   282     CMmWidgetContainer::SetHighlightVisibilityL( aVisible );
   362     }
   283     }
   363 
   284 
   364 // ---------------------------------------------------------------------------
   285 // ---------------------------------------------------------------------------
   365 // 
   286 //
   366 // ---------------------------------------------------------------------------
   287 // ---------------------------------------------------------------------------
   367 //
   288 //
   368 void CMmGridContainer::HandleItemAdditionL()
   289 void CMmGridContainer::HandleItemAdditionL()
   369 	{
   290 	{
   370 	iGrid->HandleItemAdditionL();
   291 	iGrid->HandleItemAdditionL();
   371 	}
   292 	}
   372 
   293 
   373 
   294 
   374 // ---------------------------------------------------------------------------
   295 // ---------------------------------------------------------------------------
   375 // 
   296 //
   376 // ---------------------------------------------------------------------------
   297 // ---------------------------------------------------------------------------
   377 //
   298 //
   378 void CMmGridContainer::HandleItemRemovalL()
   299 void CMmGridContainer::HandleItemRemovalL()
   379 	{
   300 	{
   380 	
   301 
   381 	GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() );
   302 	GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() );
   382 	ValidateWidgetCurrentItemIndex();
   303 	ValidateWidgetCurrentItemIndex();
   383 	iDrawer->RemoveFloatingItems();
   304 	iDrawer->RemoveFloatingItems();
   384 	if( IsEditMode() )
   305 	if( IsEditMode() )
   385 		{
   306 		{
   386 		iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
   307 		iDrawer->GetAnimator()->SetNextRedrawToWholeScreen();
   387 		}
   308 		}
   388 	
   309 
   389 	CacheWidgetPosition();
   310 	CacheWidgetPosition();
   390 	iGrid->HandleItemRemovalL();
   311 	iGrid->HandleItemRemovalL();
   391 	RestoreWidgetPosition();
   312 	RestoreWidgetPosition();
   392 	CacheWidgetPosition();
   313 	CacheWidgetPosition();
   393 	
   314 
   394 	if ( iCurrentHighlight != iGrid->CurrentItemIndex() )
   315 	if ( iCurrentHighlight != iGrid->CurrentItemIndex() )
   395 		{
   316 		{
   396 		iCurrentHighlight = iGrid->CurrentItemIndex();
   317 		iCurrentHighlight = iGrid->CurrentItemIndex();
   397 		if( !iCurrentHighlight && !iGrid->Model()->NumberOfItems() )
   318 		if( !iCurrentHighlight && !iGrid->Model()->NumberOfItems() )
   398 			{
   319 			{
   407 	static_cast<CMmListBoxItemDrawer*>( iGrid->ItemDrawer() )->TrimCacheSize(
   328 	static_cast<CMmListBoxItemDrawer*>( iGrid->ItemDrawer() )->TrimCacheSize(
   408             GetMmModel()->NumberOfItems() );
   329             GetMmModel()->NumberOfItems() );
   409 	}
   330 	}
   410 
   331 
   411 // ---------------------------------------------------------------------------
   332 // ---------------------------------------------------------------------------
   412 // 
   333 //
   413 // ---------------------------------------------------------------------------
       
   414 //
       
   415 void CMmGridContainer::FlipStateChangedL()
       
   416 	{
       
   417 //	if ( !IsEditMode() )
       
   418 //		{
       
   419 //		if ( FlipOpen() )
       
   420 //			{
       
   421 //			if ( iTimer )
       
   422 //				{
       
   423 //				delete iTimer;
       
   424 //				iTimer = NULL;
       
   425 //				}
       
   426 //			SetHighlightVisibilityL( ETrue );
       
   427 //			if ( iCurrentHighlight == KErrNotFound )
       
   428 //			    {
       
   429 //			    SetDefaultHighlightL( ETrue );
       
   430 //			    }
       
   431 //			}
       
   432 //		else
       
   433 //			{
       
   434 //			if ( AknLayoutUtils::PenEnabled() && !iTimer )
       
   435 //				{
       
   436 //				iTimer = CMmHighlightTimer::NewL( this );
       
   437 //				}
       
   438 //			SetHighlightVisibilityL( EFalse );
       
   439 //			DrawNow();
       
   440 //			}
       
   441 //		}
       
   442 	}
       
   443 
       
   444 // ---------------------------------------------------------------------------
       
   445 // 
       
   446 // ---------------------------------------------------------------------------
   334 // ---------------------------------------------------------------------------
   447 //
   335 //
   448 TInt CMmGridContainer::ColumnsInCurrentView()
   336 TInt CMmGridContainer::ColumnsInCurrentView()
   449 	{
   337 	{
   450 	CAknGridView* view ( (CAknGridView*) iGrid->View() );
   338 	CAknGridView* view ( (CAknGridView*) iGrid->View() );
   451 	return view->NumberOfColsInView();
   339 	return view->NumberOfColsInView();
   452 	}
   340 	}
   453 // ---------------------------------------------------------------------------
   341 // ---------------------------------------------------------------------------
   454 // 
   342 //
   455 // ---------------------------------------------------------------------------
   343 // ---------------------------------------------------------------------------
   456 //
   344 //
   457 TInt CMmGridContainer::RowsInCurrentView()
   345 TInt CMmGridContainer::RowsInCurrentView()
   458     {
   346     {
   459     CAknGridView* view ( (CAknGridView*) iGrid->View() );
   347     CAknGridView* view ( (CAknGridView*) iGrid->View() );
   460     return view->NumberOfRowsInView();
   348     return view->NumberOfRowsInView();
   461     }
   349     }
   462 
   350 
   463 // ---------------------------------------------------------------------------
   351 // ---------------------------------------------------------------------------
   464 // 
   352 //
   465 // ---------------------------------------------------------------------------
   353 // ---------------------------------------------------------------------------
   466 //
   354 //
   467 void CMmGridContainer::DrawView()
   355 void CMmGridContainer::DrawView()
   468     {
   356     {
   469     iGrid->DrawView();
   357     iGrid->DrawView();
   500 //
   388 //
   501 // -----------------------------------------------------------------------------
   389 // -----------------------------------------------------------------------------
   502 //
   390 //
   503 TBool CMmGridContainer::ItemIsVisible( TInt aItemIndex ) const
   391 TBool CMmGridContainer::ItemIsVisible( TInt aItemIndex ) const
   504     {
   392     {
   505     CListBoxView* v = iGrid->View(); 
   393     CListBoxView* v = iGrid->View();
   506     TRect itemRect( v->ItemPos( aItemIndex ), v->ItemSize( aItemIndex ) );
   394     TRect itemRect( v->ItemPos( aItemIndex ), v->ItemSize( aItemIndex ) );
   507     TRect viewRect = v->ViewRect();
   395     TRect viewRect = v->ViewRect();
   508     TBool isVisible = EFalse;
   396     TBool isVisible = EFalse;
   509     if ( itemRect.Intersects( viewRect ) )
   397     if ( itemRect.Intersects( viewRect ) )
   510         {
   398         {