diff -r b8fae6b8a148 -r d05a55b217df taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp Wed Mar 31 21:17:19 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp Wed Apr 14 15:47:59 2010 +0300 @@ -42,7 +42,8 @@ : CAknGrid(), iCloseIconHitIdx( KErrNotFound ), iBehaviour( ETouchOnly ), - iHighlightVisible( EFalse ) + iHighlightVisible( EFalse ), + iAknEventHandlingEnabled(ETrue) { } @@ -112,27 +113,27 @@ if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) ) { // Close icon hit + TInt hitDataIdx(hitItem); + if ( AknLayoutUtils::LayoutMirrored() ) + { + // Calculate logical item index + hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; + } + iCloseIconHitIdx = hitDataIdx; + eventHandled = ETrue; + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { - // pointer down - finish processing but do not forward to grid - eventHandled = ETrue; + // Update current item and redraw grid + SetCurrentItemIndex( hitItem ); + DrawNow(); + + iCloseIconRedrawTimer->Cancel(); + iCloseIconRedrawTimer->After(KCloseIconRedrawTime); } else { // Pointer up - TInt hitDataIdx(hitItem); - if ( AknLayoutUtils::LayoutMirrored() ) - { - // Calculate logical item index - hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; - } - iCloseIconHitIdx = hitDataIdx; - eventHandled = ETrue; - // Hide highlight to mark close icon - HideHighlight(); - // Update current item and redraw grid - SetCurrentItemIndex( hitItem ); - DrawNow(); if ( iFastSwapGridObserver ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); @@ -140,8 +141,6 @@ ETouchFeedbackBasicButton, ETouchFeedbackVibra, aPointerEvent); - iCloseIconRedrawTimer->Cancel(); - iCloseIconRedrawTimer->After(KCloseIconRedrawTime); } if ( GridBehaviour() == EHybrid ) { @@ -151,6 +150,8 @@ { Redraw(); } + iFastSwapGridObserver->HandleCloseEventL( hitDataIdx ); + ResetCloseHit(); } } } @@ -168,7 +169,10 @@ { itemDrawer->SetRedrawBackground( EFalse ); } - CAknGrid::HandlePointerEventL( aPointerEvent ); + if ( iAknEventHandlingEnabled ) + { + CAknGrid::HandlePointerEventL( aPointerEvent ); + } Redraw(); } @@ -255,9 +259,31 @@ TSLOG_CONTEXT( CTsFastSwapGrid::CreateItemDrawerL, TSLOG_LOCAL ); TSLOG_IN(); + CFormattedCellGridData* data = CFormattedCellGridData::NewL(); + CleanupStack::PushL( data ); + CTsGridItemDrawer* itemDrawer = + new ( ELeave ) CTsGridItemDrawer( this, data ); + iItemDrawer = itemDrawer; + CleanupStack::Pop( data ); + + TSLOG_OUT(); + } + + +// ----------------------------------------------------------------------------- +// CTsFastSwapGrid::UpdateItemDrawerLayoutDataL +// ----------------------------------------------------------------------------- +// +void CTsFastSwapGrid::UpdateItemDrawerLayoutDataL() + { + CTsGridItemDrawer* itemDrawer = + static_cast( ItemDrawer() ); + TPixelsAndRotation screenSize; iEikonEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(screenSize); TRect availableRect = TRect( TPoint(0,0), screenSize.iPixelSize ); + itemDrawer->SetScreenRect(availableRect); + TAknLayoutRect fastSwapAreaPane; TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; fastSwapAreaPane.LayoutRect( availableRect, @@ -265,19 +291,19 @@ const TInt leftOffset = iParent->Rect().iTl.iX; const TInt rightOffset = availableRect.Width() - iParent->Rect().iBr.iX; SetVisibleViewRect(fastSwapAreaPane.Rect()); + itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); - CFormattedCellGridData* data = CFormattedCellGridData::NewL(); - CleanupStack::PushL( data ); - CTsGridItemDrawer* itemDrawer = - new ( ELeave ) CTsGridItemDrawer( this, data, availableRect ); - CleanupStack::PushL( itemDrawer ); - itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); - iItemDrawer = itemDrawer; - CleanupStack::Pop( itemDrawer ); - CleanupStack::Pop( data ); LoadCloseIconAndStrokeParams(); - - TSLOG_OUT(); + } + + +// ----------------------------------------------------------------------------- +// CTsFastSwapGrid::EnableAknEventHandling +// ----------------------------------------------------------------------------- +// +void CTsFastSwapGrid::EnableAknEventHandling( TBool aEnable ) + { + iAknEventHandlingEnabled = aEnable; } // ----------------------------------------------------------------------------- @@ -288,9 +314,7 @@ { if ( aSource == iCloseIconRedrawTimer ) { - TInt itemToClose = iCloseIconHitIdx; ResetCloseHit(); - iFastSwapGridObserver->HandleCloseEventL( itemToClose ); } } @@ -569,13 +593,11 @@ // CTsGridItemDrawer::CTsGridItemDrawer( CTsFastSwapGrid* aGrid, - CFormattedCellListBoxData* aData, - TRect aScreenRect ) + CFormattedCellListBoxData* aData ) : CFormattedCellListBoxItemDrawer( aGrid->Model(), NULL, aData ), iGrid( aGrid ), - iScreenRect( aScreenRect ), iStrokeColor( KRgbBlack ), iHighlightStrokeColor( KRgbBlack ) { @@ -697,6 +719,16 @@ // ----------------------------------------------------------------------------- +// CTsGridItemDrawer::SetScreenRect +// ----------------------------------------------------------------------------- +// +void CTsGridItemDrawer::SetScreenRect( TRect aRect ) + { + iScreenRect = aRect; + } + + +// ----------------------------------------------------------------------------- // CTsGridItemDrawer::DrawActualItem // ----------------------------------------------------------------------------- //