106 KMaxSpringVelocity, KPositionSnap, KMinSpringVelocity); |
106 KMaxSpringVelocity, KPositionSnap, KMinSpringVelocity); |
107 |
107 |
108 iSpring->Reset(0,0); |
108 iSpring->Reset(0,0); |
109 |
109 |
110 iAnimationTimer = CHgVgTimer::NewL(); |
110 iAnimationTimer = CHgVgTimer::NewL(); |
111 |
111 iDelayedInit = CPeriodic::NewL( CActive::EPriorityStandard ); |
112 iKeyScrollingTimer = CPeriodic::NewL( CActive::EPriorityStandard ); |
112 iKeyScrollingTimer = CPeriodic::NewL( CActive::EPriorityStandard ); |
113 |
113 |
114 SetEmptyTextL(KNullDesC); |
114 SetEmptyTextL(KNullDesC); |
115 |
115 |
116 // Create a window for this application view |
116 // Create a window for this application view |
117 CreateWindowL ( ); |
117 CreateWindowL ( ); |
118 |
118 |
119 EnableDragEvents(); |
119 EnableDragEvents(); |
120 |
|
121 ClaimPointerGrab(); |
120 ClaimPointerGrab(); |
|
121 IgnoreEventsUntilNextPointerUp(); |
122 |
122 |
123 InitScreenL( aRect ); |
123 InitScreenL( aRect ); |
124 |
124 |
125 InitItemsL(); |
125 InitItemsL(); |
126 |
126 |
135 AknTouchGestureFw::EAknTouchGestureFwGroupFlick); |
135 AknTouchGestureFw::EAknTouchGestureFwGroupFlick); |
136 |
136 |
137 ActivateL ( ); |
137 ActivateL ( ); |
138 |
138 |
139 SetMopParent( aParent ); |
139 SetMopParent( aParent ); |
140 |
140 SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallUninitialized ); |
141 // skin needs to be updated after parent is set. |
|
142 iSkinRenderer->UpdateSkinL(this, this); |
|
143 |
|
144 } |
141 } |
145 |
142 |
146 // ----------------------------------------------------------------------------- |
143 // ----------------------------------------------------------------------------- |
147 // CHgVgMediaWall::InitScreenL() |
144 // CHgVgMediaWall::InitScreenL() |
148 // ----------------------------------------------------------------------------- |
145 // ----------------------------------------------------------------------------- |
275 iItemsOnScreen(KMaxCoversVisible), |
272 iItemsOnScreen(KMaxCoversVisible), |
276 iDefaultIcon( aDefaultIcon ), |
273 iDefaultIcon( aDefaultIcon ), |
277 iAnimationState(EHgVgMediaWallAnimationStateIdle), |
274 iAnimationState(EHgVgMediaWallAnimationStateIdle), |
278 iScrollBarEnabled(aEnableScrollBar), |
275 iScrollBarEnabled(aEnableScrollBar), |
279 iMediaWallStyle(aStyle), |
276 iMediaWallStyle(aStyle), |
280 iOpeningAnimationType(CHgVgMediaWall::EHgVgOpeningAnimationFlipToFront), |
277 iOpeningAnimationType(CHgVgMediaWall::EHgVgOpeningAnimationNone), |
281 iIsForeground(ETrue), |
278 iIsForeground(ETrue), |
282 iUsingDefaultIcon(ETrue), |
279 iUsingDefaultIcon(ETrue), |
283 iRowCount(1), |
280 iRowCount(1), |
284 iCameraRotationFactor(KCameraRotationFactor), |
281 iCameraRotationFactor(KCameraRotationFactor), |
285 iCameraZoomFactor(KCameraZoomFactor), |
282 iCameraZoomFactor(KCameraZoomFactor), |
355 // |
353 // |
356 void CHgVgMediaWall::Draw ( const TRect& /*aRect*/ ) const |
354 void CHgVgMediaWall::Draw ( const TRect& /*aRect*/ ) const |
357 { |
355 { |
358 //RDebug::Print(_L("CHgVgMediaWall::Draw begin")); |
356 //RDebug::Print(_L("CHgVgMediaWall::Draw begin")); |
359 |
357 |
|
358 if(iFlags & EHgVgMediaWallUninitialized) |
|
359 { |
|
360 MAknsSkinInstance* skin = AknsUtils::SkinInstance(); |
|
361 MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); |
|
362 AknsDrawUtils::DrawBackground( skin, cc, this, SystemGc(), TPoint(0,0), |
|
363 Rect(), KAknsDrawParamDefault ); |
|
364 return; |
|
365 } |
|
366 |
360 CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this); |
367 CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this); |
361 |
368 |
362 if (iIsForeground) |
369 if (iIsForeground) |
363 { |
370 { |
364 if( iFlags & EHgVgMediaWallDrawToWindowGC ) |
371 if( iFlags & EHgVgMediaWallDrawToWindowGC ) |
415 // Called by framework when the view size is changed. |
422 // Called by framework when the view size is changed. |
416 // ----------------------------------------------------------------------------- |
423 // ----------------------------------------------------------------------------- |
417 // |
424 // |
418 void CHgVgMediaWall::SizeChanged ( ) |
425 void CHgVgMediaWall::SizeChanged ( ) |
419 { |
426 { |
420 |
427 iRect = Rect(); |
421 iRect = Rect(); |
428 |
422 TRAPD(error, InitRenderingL(ETrue)); |
429 if(iDelayedInit && !iDelayedInit->IsActive()) |
423 if( error != KErrNone ) |
430 iDelayedInit->Start(0, 1000000, TCallBack(DelayedInit, this)); |
424 { |
431 |
425 // if out of memory |
|
426 if (error == KErrNoMemory) |
|
427 { |
|
428 // free all resources |
|
429 FreeItemsImages(); |
|
430 // try again |
|
431 TRAPD(error, InitRenderingL(ETrue)); |
|
432 // if still fails, need to give up |
|
433 if (error != KErrNone) |
|
434 { |
|
435 User::Panic(_L("USER"), error); |
|
436 } |
|
437 // reload all images we can |
|
438 ReloadItemsImages(); |
|
439 } |
|
440 else |
|
441 { |
|
442 // some other error occured during initialization |
|
443 // TODO: should we try again? |
|
444 User::Panic(_L("USER"), error); |
|
445 } |
|
446 } |
|
447 |
|
448 if(MTouchFeedback::Instance()) |
432 if(MTouchFeedback::Instance()) |
449 { |
433 { |
450 MTouchFeedback::Instance()->SetFeedbackArea(this, |
434 MTouchFeedback::Instance()->SetFeedbackArea(this, |
451 0, |
435 0, |
452 iRect, |
436 iRect, |
453 ETouchFeedbackBasic, |
437 ETouchFeedbackBasic, |
454 ETouchEventStylusDown); |
438 ETouchEventStylusDown); |
455 } |
439 } |
456 |
|
457 } |
440 } |
458 |
441 |
459 // ----------------------------------------------------------------------------- |
442 // ----------------------------------------------------------------------------- |
460 // CHgVgMediaWall::ChangeStyleL() |
443 // CHgVgMediaWall::ChangeStyleL() |
461 // ----------------------------------------------------------------------------- |
444 // ----------------------------------------------------------------------------- |
486 TRAP_IGNORE( InitScrollBarL(ETrue); ) |
469 TRAP_IGNORE( InitScrollBarL(ETrue); ) |
487 |
470 |
488 if( iSelectedIndex >= MaxViewPosition() ) |
471 if( iSelectedIndex >= MaxViewPosition() ) |
489 { |
472 { |
490 iSpring->Reset((TReal)(MaxViewPosition()-1), 0); |
473 iSpring->Reset((TReal)(MaxViewPosition()-1), 0); |
491 HandleViewPositionChanged(); |
474 HandleViewPositionChanged(); |
|
475 iSelectedIndex = MaxViewPosition() - 1; |
492 } |
476 } |
493 |
477 |
494 } |
478 } |
495 |
479 |
496 // ----------------------------------------------------------------------------- |
480 // ----------------------------------------------------------------------------- |
497 // CHgVgMediaWall::HandlePointerEventL() |
481 // CHgVgMediaWall::HandlePointerEventL() |
498 // ----------------------------------------------------------------------------- |
482 // ----------------------------------------------------------------------------- |
499 // |
483 // |
500 void CHgVgMediaWall::HandlePointerEventL( const TPointerEvent& aEvent ) |
484 void CHgVgMediaWall::HandlePointerEventL( const TPointerEvent& aEvent ) |
501 { |
485 { |
502 |
486 // Not faded and initialized and the drawing is set to be done to WinGc |
|
487 if( !( iFlags & EHgVgMediaWallFaded ) |
|
488 && !( iFlags & EHgVgMediaWallUninitialized ) |
|
489 && iFlags & EHgVgMediaWallDrawToWindowGC ) |
|
490 { |
|
491 // Draw with OpenVg to our surface. |
|
492 ClearFlags( EHgVgMediaWallDrawToWindowGC ); |
|
493 DrawNow(); |
|
494 } |
|
495 |
503 if (iAnimationState != EHgVgMediaWallAnimationStateItemOpened) |
496 if (iAnimationState != EHgVgMediaWallAnimationStateItemOpened) |
504 { |
497 { |
505 |
498 |
506 // handle buttons |
499 // handle buttons |
507 iButtonsHit = HandleButtons(aEvent); |
500 iButtonsHit = HandleButtons(aEvent); |
1156 InitDefaultIconL(); |
1146 InitDefaultIconL(); |
1157 } |
1147 } |
1158 if (iSkinRenderer) |
1148 if (iSkinRenderer) |
1159 iSkinRenderer->UpdateSkinL(this, this); |
1149 iSkinRenderer->UpdateSkinL(this, this); |
1160 ) |
1150 ) |
1161 } |
1151 } |
|
1152 |
|
1153 if( aType == KEikMessageFadeAllWindows ) |
|
1154 { |
|
1155 // make sure we are not animating |
|
1156 HandleTransitionAnimationStop(); |
|
1157 |
|
1158 if (iAnimationTimer->IsActive()) |
|
1159 { |
|
1160 if (iAnimationState == EHgVgMediaWallAnimationStateOpening) |
|
1161 iAnimationState = EHgVgMediaWallAnimationStateItemOpened; |
|
1162 else |
|
1163 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
|
1164 |
|
1165 iAnimationTimer->Cancel(); |
|
1166 } |
|
1167 |
|
1168 SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallFaded ); |
|
1169 DrawNow(); |
|
1170 } |
|
1171 |
|
1172 if( aType == KEikMessageUnfadeWindows ) |
|
1173 { |
|
1174 ClearFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallFaded ); |
|
1175 DrawNow(); |
|
1176 } |
|
1177 |
|
1178 if( aType == KEikDynamicLayoutVariantSwitch && !(iFlags & EHgVgMediaWallDrawToWindowGC) ) |
|
1179 { |
|
1180 SetFlags( EHgVgMediaWallDrawToWindowGC ); |
|
1181 DrawNow(); |
|
1182 } |
1162 } |
1183 } |
1163 |
1184 |
1164 |
1185 |
1165 // --------------------------------------------------------------------------- |
1186 // --------------------------------------------------------------------------- |
1166 // CHgVgMediaWall::InitItemsL() |
1187 // CHgVgMediaWall::InitItemsL() |
1211 // make sure we are not animating |
1232 // make sure we are not animating |
1212 HandleTransitionAnimationStop(); |
1233 HandleTransitionAnimationStop(); |
1213 |
1234 |
1214 if (iAnimationTimer->IsActive()) |
1235 if (iAnimationTimer->IsActive()) |
1215 { |
1236 { |
1216 if (iAnimationState == EHgVgMediaWallAnimationStateClosing) |
1237 if (iAnimationState == EHgVgMediaWallAnimationStateOpening) |
1217 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
|
1218 else if (iAnimationState == EHgVgMediaWallAnimationStateOpening) |
|
1219 iAnimationState = EHgVgMediaWallAnimationStateItemOpened; |
1238 iAnimationState = EHgVgMediaWallAnimationStateItemOpened; |
1220 else |
1239 else |
1221 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1240 iAnimationState = EHgVgMediaWallAnimationStateIdle; |
1222 |
1241 |
1223 iAnimationTimer->Cancel(); |
1242 iAnimationTimer->Cancel(); |
1566 delete iSkinRenderer; iSkinRenderer = NULL; |
1585 delete iSkinRenderer; iSkinRenderer = NULL; |
1567 iSkinRenderer = CHgVgSkinRenderer::NewL(iRect); |
1586 iSkinRenderer = CHgVgSkinRenderer::NewL(iRect); |
1568 iSkinRenderer->UpdateSkinL(this, this); |
1587 iSkinRenderer->UpdateSkinL(this, this); |
1569 |
1588 |
1570 delete iEmptyLabel; iEmptyLabel = NULL; |
1589 delete iEmptyLabel; iEmptyLabel = NULL; |
1571 iEmptyLabel = CHgVgLabel::NewL( |
1590 iEmptyLabel = CHgVgLabel::NewL( iRect ); |
1572 /*TRect(TPoint(iRect.Center().iX - 100, iRect.Center().iY - 50), |
|
1573 TSize(200, 100))*/iRect, &ScreenFont( TCoeFont( KMediaWallGridPopupFontSize, TCoeFont::EPlain )), |
|
1574 *iEmptyText); |
|
1575 |
1591 |
1576 switch (iMediaWallStyle) |
1592 switch (iMediaWallStyle) |
1577 { |
1593 { |
1578 case EHgVgMediaWallStyleCoverflowFullScreen: |
1594 case EHgVgMediaWallStyleCoverflowFullScreen: |
1579 { |
1595 { |
2356 iCameraRotationFactor = KMediaWallTBoneCameraRotationFactor; |
2372 iCameraRotationFactor = KMediaWallTBoneCameraRotationFactor; |
2357 iItemsOnScreen = KMediaWallTBoneItemsOnScreen; |
2373 iItemsOnScreen = KMediaWallTBoneItemsOnScreen; |
2358 iSpringVelocityToAnimationFactor = KMediaWallTBoneSpringVelocityToAnimationFactor; |
2374 iSpringVelocityToAnimationFactor = KMediaWallTBoneSpringVelocityToAnimationFactor; |
2359 iItemsToMoveOnFullScreenDrag = KMediaWallTBoneItemsToMoveOnFullScreenDrag; |
2375 iItemsToMoveOnFullScreenDrag = KMediaWallTBoneItemsToMoveOnFullScreenDrag; |
2360 iRowCount = KMediaWallTBoneRowCount; |
2376 iRowCount = KMediaWallTBoneRowCount; |
2361 iOpeningAnimationType = EHgVgOpeningAnimationZoomToFront; |
|
2362 |
2377 |
2363 // get front rectange from layout |
2378 // get front rectange from layout |
2364 TAknLayoutRect frontRect; |
2379 TAknLayoutRect frontRect; |
2365 frontRect.LayoutRect( iRect, AknLayoutScalable_Apps::cf0_flow_pane_g1(1) ); |
2380 frontRect.LayoutRect( iRect, AknLayoutScalable_Apps::cf0_flow_pane_g1(0) ); |
2366 |
2381 |
2367 iRenderer = CHgVgMediaWallRenderer::NewL(KMaxCoversVisible, iRect, frontRect.Rect(), |
2382 iRenderer = CHgVgMediaWallRenderer::NewL(KMaxCoversVisible, iRect, frontRect.Rect(), |
2368 KMediaWallTBoneZOffset); |
2383 KMediaWallTBoneZOffset); |
2369 |
2384 |
2370 iRenderer->SetFlippedRect(TRect(TPoint(iRect.Center().iX - iRect.Height() / 2, |
2385 iRenderer->SetFlippedRect(TRect(TPoint(iRect.Center().iX - iRect.Height() / 2, |
2436 TAknLayoutText t1; |
2451 TAknLayoutText t1; |
2437 |
2452 |
2438 t0.LayoutText(iRect, l0); |
2453 t0.LayoutText(iRect, l0); |
2439 t1.LayoutText(iRect, l1); |
2454 t1.LayoutText(iRect, l1); |
2440 |
2455 |
2441 iAlbumLabel = CHgVgLabel::NewL(t0.TextRect(), |
2456 iAlbumLabel = CHgVgLabel::NewL( t0.TextRect() ); |
2442 &ScreenFont( TCoeFont( KMediaWallTBoneLabelFontSize, TCoeFont::EBold )) ); |
2457 |
2443 |
2458 iArtistLabel = CHgVgLabel::NewL( t1.TextRect() ); |
2444 iArtistLabel = CHgVgLabel::NewL(t1.TextRect(), |
|
2445 &ScreenFont( TCoeFont( KMediaWallTBoneLabelFontSize, TCoeFont::EBold )) ); |
|
2446 |
2459 |
2447 iAlbumLabel->SetLayout(l0, iRect); |
2460 iAlbumLabel->SetLayout(l0, iRect); |
2448 iArtistLabel->SetLayout(l1, iRect); |
2461 iArtistLabel->SetLayout(l1, iRect); |
2449 } |
2462 } |
2450 |
2463 |
2457 |
2470 |
2458 iLetterPopup->SetLayouts(AknLayoutScalable_Apps::cf0_flow_pane_g2(aLayoutVariant), |
2471 iLetterPopup->SetLayouts(AknLayoutScalable_Apps::cf0_flow_pane_g2(aLayoutVariant), |
2459 AknLayoutScalable_Apps::cf0_flow_pane_t1(aLayoutVariant), iRect); |
2472 AknLayoutScalable_Apps::cf0_flow_pane_t1(aLayoutVariant), iRect); |
2460 } |
2473 } |
2461 |
2474 |
|
2475 // ----------------------------------------------------------------------------- |
|
2476 // CHgVgMediaWall::DelayedInit() |
|
2477 // ----------------------------------------------------------------------------- |
|
2478 // |
|
2479 TInt CHgVgMediaWall::DelayedInit( TAny* aSelf) |
|
2480 { |
|
2481 CHgVgMediaWall* self = (CHgVgMediaWall*) aSelf; |
|
2482 if(self) |
|
2483 { |
|
2484 TRAPD( error, self->InitRenderingL(ETrue); ) |
|
2485 if( error == KErrNone ) |
|
2486 { |
|
2487 self->iDelayedInit->Cancel(); |
|
2488 self->ReloadItemsImages(); |
|
2489 self->ClearFlags(EHgVgMediaWallUninitialized); |
|
2490 self->DrawDeferred(); |
|
2491 } |
|
2492 } |
|
2493 return KErrNone; |
|
2494 } |
2462 |
2495 |
2463 |
2496 |
2464 // End of File |
2497 // End of File |