110 static_cast<CTsGridItemDrawer*>( ItemDrawer() ); |
111 static_cast<CTsGridItemDrawer*>( ItemDrawer() ); |
111 TRect closeIconRect = itemDrawer->GetCloseButtonRect( itemRect ); |
112 TRect closeIconRect = itemDrawer->GetCloseButtonRect( itemRect ); |
112 if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) ) |
113 if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) ) |
113 { |
114 { |
114 // Close icon hit |
115 // Close icon hit |
|
116 TInt hitDataIdx(hitItem); |
|
117 if ( AknLayoutUtils::LayoutMirrored() ) |
|
118 { |
|
119 // Calculate logical item index |
|
120 hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; |
|
121 } |
|
122 iCloseIconHitIdx = hitDataIdx; |
|
123 eventHandled = ETrue; |
|
124 |
115 if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) |
125 if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) |
116 { |
126 { |
117 // pointer down - finish processing but do not forward to grid |
127 // Update current item and redraw grid |
118 eventHandled = ETrue; |
128 SetCurrentItemIndex( hitItem ); |
|
129 DrawNow(); |
|
130 |
|
131 iCloseIconRedrawTimer->Cancel(); |
|
132 iCloseIconRedrawTimer->After(KCloseIconRedrawTime); |
119 } |
133 } |
120 else |
134 else |
121 { |
135 { |
122 // Pointer up |
136 // Pointer up |
123 TInt hitDataIdx(hitItem); |
|
124 if ( AknLayoutUtils::LayoutMirrored() ) |
|
125 { |
|
126 // Calculate logical item index |
|
127 hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; |
|
128 } |
|
129 iCloseIconHitIdx = hitDataIdx; |
|
130 eventHandled = ETrue; |
|
131 // Hide highlight to mark close icon |
|
132 HideHighlight(); |
|
133 // Update current item and redraw grid |
|
134 SetCurrentItemIndex( hitItem ); |
|
135 DrawNow(); |
|
136 if ( iFastSwapGridObserver ) |
137 if ( iFastSwapGridObserver ) |
137 { |
138 { |
138 MTouchFeedback* feedback = MTouchFeedback::Instance(); |
139 MTouchFeedback* feedback = MTouchFeedback::Instance(); |
139 feedback->InstantFeedback(this, |
140 feedback->InstantFeedback(this, |
140 ETouchFeedbackBasicButton, |
141 ETouchFeedbackBasicButton, |
141 ETouchFeedbackVibra, |
142 ETouchFeedbackVibra, |
142 aPointerEvent); |
143 aPointerEvent); |
143 iCloseIconRedrawTimer->Cancel(); |
|
144 iCloseIconRedrawTimer->After(KCloseIconRedrawTime); |
|
145 } |
144 } |
146 if ( GridBehaviour() == EHybrid ) |
145 if ( GridBehaviour() == EHybrid ) |
147 { |
146 { |
148 ShowHighlight(); |
147 ShowHighlight(); |
149 } |
148 } |
150 else |
149 else |
151 { |
150 { |
152 Redraw(); |
151 Redraw(); |
153 } |
152 } |
|
153 iFastSwapGridObserver->HandleCloseEventL( hitDataIdx ); |
|
154 ResetCloseHit(); |
154 } |
155 } |
155 } |
156 } |
156 } |
157 } |
157 } |
158 } |
158 |
159 |
252 // |
256 // |
253 void CTsFastSwapGrid::CreateItemDrawerL() |
257 void CTsFastSwapGrid::CreateItemDrawerL() |
254 { |
258 { |
255 TSLOG_CONTEXT( CTsFastSwapGrid::CreateItemDrawerL, TSLOG_LOCAL ); |
259 TSLOG_CONTEXT( CTsFastSwapGrid::CreateItemDrawerL, TSLOG_LOCAL ); |
256 TSLOG_IN(); |
260 TSLOG_IN(); |
|
261 |
|
262 CFormattedCellGridData* data = CFormattedCellGridData::NewL(); |
|
263 CleanupStack::PushL( data ); |
|
264 CTsGridItemDrawer* itemDrawer = |
|
265 new ( ELeave ) CTsGridItemDrawer( this, data ); |
|
266 iItemDrawer = itemDrawer; |
|
267 CleanupStack::Pop( data ); |
|
268 |
|
269 TSLOG_OUT(); |
|
270 } |
|
271 |
|
272 |
|
273 // ----------------------------------------------------------------------------- |
|
274 // CTsFastSwapGrid::UpdateItemDrawerLayoutDataL |
|
275 // ----------------------------------------------------------------------------- |
|
276 // |
|
277 void CTsFastSwapGrid::UpdateItemDrawerLayoutDataL() |
|
278 { |
|
279 CTsGridItemDrawer* itemDrawer = |
|
280 static_cast<CTsGridItemDrawer*>( ItemDrawer() ); |
257 |
281 |
258 TPixelsAndRotation screenSize; |
282 TPixelsAndRotation screenSize; |
259 iEikonEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(screenSize); |
283 iEikonEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(screenSize); |
260 TRect availableRect = TRect( TPoint(0,0), screenSize.iPixelSize ); |
284 TRect availableRect = TRect( TPoint(0,0), screenSize.iPixelSize ); |
|
285 itemDrawer->SetScreenRect(availableRect); |
|
286 |
261 TAknLayoutRect fastSwapAreaPane; |
287 TAknLayoutRect fastSwapAreaPane; |
262 TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; |
288 TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; |
263 fastSwapAreaPane.LayoutRect( availableRect, |
289 fastSwapAreaPane.LayoutRect( availableRect, |
264 AknLayoutScalable_Apps::tport_appsw_pane( variety ) ); |
290 AknLayoutScalable_Apps::tport_appsw_pane( variety ) ); |
265 const TInt leftOffset = iParent->Rect().iTl.iX; |
291 const TInt leftOffset = iParent->Rect().iTl.iX; |
266 const TInt rightOffset = availableRect.Width() - iParent->Rect().iBr.iX; |
292 const TInt rightOffset = availableRect.Width() - iParent->Rect().iBr.iX; |
267 SetVisibleViewRect(fastSwapAreaPane.Rect()); |
293 SetVisibleViewRect(fastSwapAreaPane.Rect()); |
268 |
|
269 CFormattedCellGridData* data = CFormattedCellGridData::NewL(); |
|
270 CleanupStack::PushL( data ); |
|
271 CTsGridItemDrawer* itemDrawer = |
|
272 new ( ELeave ) CTsGridItemDrawer( this, data, availableRect ); |
|
273 CleanupStack::PushL( itemDrawer ); |
|
274 itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); |
294 itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); |
275 iItemDrawer = itemDrawer; |
295 |
276 CleanupStack::Pop( itemDrawer ); |
|
277 CleanupStack::Pop( data ); |
|
278 LoadCloseIconAndStrokeParams(); |
296 LoadCloseIconAndStrokeParams(); |
279 |
297 } |
280 TSLOG_OUT(); |
298 |
|
299 |
|
300 // ----------------------------------------------------------------------------- |
|
301 // CTsFastSwapGrid::EnableAknEventHandling |
|
302 // ----------------------------------------------------------------------------- |
|
303 // |
|
304 void CTsFastSwapGrid::EnableAknEventHandling( TBool aEnable ) |
|
305 { |
|
306 iAknEventHandlingEnabled = aEnable; |
281 } |
307 } |
282 |
308 |
283 // ----------------------------------------------------------------------------- |
309 // ----------------------------------------------------------------------------- |
284 // CTsFastSwapGrid::TimerCompletedL |
310 // CTsFastSwapGrid::TimerCompletedL |
285 // ----------------------------------------------------------------------------- |
311 // ----------------------------------------------------------------------------- |
286 // |
312 // |
287 void CTsFastSwapGrid::TimerCompletedL( CTsFastSwapTimer* aSource ) |
313 void CTsFastSwapGrid::TimerCompletedL( CTsFastSwapTimer* aSource ) |
288 { |
314 { |
289 if ( aSource == iCloseIconRedrawTimer ) |
315 if ( aSource == iCloseIconRedrawTimer ) |
290 { |
316 { |
291 TInt itemToClose = iCloseIconHitIdx; |
|
292 ResetCloseHit(); |
317 ResetCloseHit(); |
293 iFastSwapGridObserver->HandleCloseEventL( itemToClose ); |
|
294 } |
318 } |
295 } |
319 } |
296 |
320 |
297 // ----------------------------------------------------------------------------- |
321 // ----------------------------------------------------------------------------- |
298 // CTsFastSwapGrid::SetCloseItemsL |
322 // CTsFastSwapGrid::SetCloseItemsL |
567 // CTsGridItemDrawer::CTsGridItemDrawer |
591 // CTsGridItemDrawer::CTsGridItemDrawer |
568 // ----------------------------------------------------------------------------- |
592 // ----------------------------------------------------------------------------- |
569 // |
593 // |
570 CTsGridItemDrawer::CTsGridItemDrawer( |
594 CTsGridItemDrawer::CTsGridItemDrawer( |
571 CTsFastSwapGrid* aGrid, |
595 CTsFastSwapGrid* aGrid, |
572 CFormattedCellListBoxData* aData, |
596 CFormattedCellListBoxData* aData ) |
573 TRect aScreenRect ) |
|
574 : CFormattedCellListBoxItemDrawer( aGrid->Model(), |
597 : CFormattedCellListBoxItemDrawer( aGrid->Model(), |
575 NULL, |
598 NULL, |
576 aData ), |
599 aData ), |
577 iGrid( aGrid ), |
600 iGrid( aGrid ), |
578 iScreenRect( aScreenRect ), |
|
579 iStrokeColor( KRgbBlack ), |
601 iStrokeColor( KRgbBlack ), |
580 iHighlightStrokeColor( KRgbBlack ) |
602 iHighlightStrokeColor( KRgbBlack ) |
581 { |
603 { |
582 } |
604 } |
583 |
605 |
691 // ----------------------------------------------------------------------------- |
713 // ----------------------------------------------------------------------------- |
692 // |
714 // |
693 void CTsGridItemDrawer::SetStrokeOffset( TPoint aStrokeOffset, TSize aStrokeSize ) |
715 void CTsGridItemDrawer::SetStrokeOffset( TPoint aStrokeOffset, TSize aStrokeSize ) |
694 { |
716 { |
695 iStrokeRect = TRect( aStrokeOffset, aStrokeSize ); |
717 iStrokeRect = TRect( aStrokeOffset, aStrokeSize ); |
|
718 } |
|
719 |
|
720 |
|
721 // ----------------------------------------------------------------------------- |
|
722 // CTsGridItemDrawer::SetScreenRect |
|
723 // ----------------------------------------------------------------------------- |
|
724 // |
|
725 void CTsGridItemDrawer::SetScreenRect( TRect aRect ) |
|
726 { |
|
727 iScreenRect = aRect; |
696 } |
728 } |
697 |
729 |
698 |
730 |
699 // ----------------------------------------------------------------------------- |
731 // ----------------------------------------------------------------------------- |
700 // CTsGridItemDrawer::DrawActualItem |
732 // CTsGridItemDrawer::DrawActualItem |