uifw/ganes/src/HgVgMediaWall.cpp
branchRCL_3
changeset 9 aabf2c525e0f
parent 4 8ca85d2f0db7
child 10 9f56a4e1b8ab
equal deleted inserted replaced
4:8ca85d2f0db7 9:aabf2c525e0f
   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),
   316     delete iEmptyText;
   313     delete iEmptyText;
   317     delete iDefaultIcon;
   314     delete iDefaultIcon;
   318     delete iManager;
   315     delete iManager;
   319     delete iKeyScrollingTimer;
   316     delete iKeyScrollingTimer;
   320     delete iAnimationTimer;
   317     delete iAnimationTimer;
       
   318     delete iDelayedInit;
   321     //delete iCompositionSource;
   319     //delete iCompositionSource;
   322     delete iEGL;
   320     delete iEGL;
   323     delete iSpring;
   321     delete iSpring;
   324     delete iSurfaceBitmap;
   322     delete iSurfaceBitmap;
   325     
   323     
   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);
   518             if (!iAnimationTimer->IsActive())
   511             if (!iAnimationTimer->IsActive())
   519                 {
   512                 {
   520                 DrawOpenVG();
   513                 DrawOpenVG();
   521                 }
   514                 }
   522             }
   515             }
   523                     
   516         }
   524         }
       
   525     
       
   526     
       
   527     }
   517     }
   528 
   518 
   529 // -----------------------------------------------------------------------------
   519 // -----------------------------------------------------------------------------
   530 // CHgVgMediaWall::OfferKeyEventL()
   520 // CHgVgMediaWall::OfferKeyEventL()
   531 // -----------------------------------------------------------------------------
   521 // -----------------------------------------------------------------------------
  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