menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp
changeset 0 f72a12da539e
child 54 1b758917cafc
equal deleted inserted replaced
-1:000000000000 0:f72a12da539e
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  floating item
       
    15 *
       
    16 */
       
    17 
       
    18 #include <e32math.h>
       
    19 #include <eiklbv.h>
       
    20 #include "mmfloatingitem.h"
       
    21 
       
    22 // -----------------------------------------------------------------------------
       
    23 //
       
    24 // -----------------------------------------------------------------------------
       
    25 // 
       
    26 TMmFloatingItem::TMmFloatingItem( TInt aDrawnIndex, TPoint aStartPosition,
       
    27         TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView ) 
       
    28     {
       
    29     iView = aView;
       
    30     iSizeStep = 0;
       
    31     iZoomRatio = 1;
       
    32     iManualDelete = EFalse;
       
    33     
       
    34     if ( iView )
       
    35         {
       
    36         // item position is relative
       
    37         iItemPosition = aStartPosition - iView->ItemPos( 0 );
       
    38         }
       
    39     else
       
    40         {
       
    41         // item position is absolute
       
    42         iItemPosition = aStartPosition;
       
    43         }
       
    44 
       
    45     iDrawnItemIndex = aDrawnIndex;
       
    46     iType = aType;
       
    47     iFrames = aAnimationFrames;
       
    48     iFrameCounter = 0;
       
    49     CalculateSteps(TPoint(0,0));
       
    50     }
       
    51 
       
    52 // -----------------------------------------------------------------------------
       
    53 //
       
    54 // -----------------------------------------------------------------------------
       
    55 // 
       
    56 void TMmFloatingItem::SetPositionStep( TPoint aDiffetenceVector  )
       
    57      {
       
    58      ASSERT( iFrames );
       
    59      iFrameCounter = 0;
       
    60      CalculateSteps( aDiffetenceVector );
       
    61      }
       
    62 // -----------------------------------------------------------------------------
       
    63 //
       
    64 // -----------------------------------------------------------------------------
       
    65 // 
       
    66 void TMmFloatingItem::CalculateSteps(TPoint aVector) 
       
    67     {
       
    68     iPositionStep.Reset();
       
    69 
       
    70     TReal x = aVector.iX;
       
    71     TReal y = aVector.iY;
       
    72     
       
    73     TReal sx = 0.0;
       
    74     TReal sy = 0.0;
       
    75     
       
    76     for( TInt i = 0; i < iFrames; i++ )
       
    77     	{
       
    78     	TReal sin;
       
    79     	Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2.  );
       
    80     	TReal xx = x * (0.5*( sin + 1.0 ) ) - sx;
       
    81     	TReal yy = y * (0.5*( sin + 1.0 ) ) - sy;
       
    82     	
       
    83     	sx += xx;
       
    84     	sy += yy;
       
    85     	
       
    86     	iPositionStep.At(i) = TPoint( xx, yy );
       
    87     	}
       
    88     }
       
    89 
       
    90 // -----------------------------------------------------------------------------
       
    91 //
       
    92 // -----------------------------------------------------------------------------
       
    93 // 
       
    94 void TMmFloatingItem::SetSizeStep( TReal aStartSize, TReal aFinalSize )
       
    95     {
       
    96     ASSERT( iFrames );
       
    97     iFrameCounter = 0;
       
    98     iZoomRatio = aStartSize;
       
    99     iSizeStep = (aFinalSize - aStartSize) / iFrames;
       
   100     }
       
   101 
       
   102 
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 // -----------------------------------------------------------------------------
       
   106 //   
       
   107 TBool TMmFloatingItem::MakeStep() 
       
   108     {
       
   109     TBool ret(EFalse);
       
   110     
       
   111     if(iFrameCounter >= iFrames && iManualDelete == EFalse)
       
   112         {
       
   113         InvalidateFloatingItem();
       
   114         }
       
   115     else if (iFrameCounter < iFrames)
       
   116         {
       
   117         iItemPosition += iPositionStep[iFrameCounter];
       
   118         iZoomRatio += iSizeStep;
       
   119         ret = Abs(iPositionStep[iFrameCounter].iX) > 0 
       
   120 			|| Abs(iPositionStep[iFrameCounter].iY > 0)
       
   121 			|| Abs(iSizeStep) > 0;
       
   122 		iFrameCounter++;
       
   123         }
       
   124     
       
   125     return ret;
       
   126     }
       
   127 
       
   128 // -----------------------------------------------------------------------------
       
   129 //
       
   130 // -----------------------------------------------------------------------------
       
   131 // 
       
   132 void TMmFloatingItem::SetManualDelete(TBool aManual)
       
   133     {
       
   134     iManualDelete = aManual;
       
   135     }
       
   136 
       
   137 // -----------------------------------------------------------------------------
       
   138 //
       
   139 // -----------------------------------------------------------------------------
       
   140 // 
       
   141 TReal TMmFloatingItem::GetCurrentZoomRatio() const
       
   142     {
       
   143     return iZoomRatio;
       
   144     }
       
   145 
       
   146 // -----------------------------------------------------------------------------
       
   147 //
       
   148 // -----------------------------------------------------------------------------
       
   149 // 
       
   150 TMmFloatingItemType TMmFloatingItem::GetFloatingItemType() const
       
   151     {
       
   152     return iType;
       
   153     }
       
   154 
       
   155 TInt TMmFloatingItem::GetDrawnItemIndex() const
       
   156     {
       
   157     return iDrawnItemIndex;
       
   158     }
       
   159 
       
   160 TPoint TMmFloatingItem::GetItemPosition() const
       
   161     {
       
   162     TPoint ret;
       
   163     if ( iView )
       
   164         {
       
   165         // item position is relative
       
   166         ret = iItemPosition + iView->ItemPos( 0 );
       
   167         }
       
   168     else
       
   169         {
       
   170         // item position is absolute
       
   171         ret = iItemPosition;
       
   172         }
       
   173     return ret;
       
   174     }
       
   175 
       
   176 void TMmFloatingItem::InvalidateFloatingItem()
       
   177     {
       
   178     iDrawnItemIndex = KErrNotFound;
       
   179     }
       
   180 
       
   181 TBool TMmFloatingItem::IsFloatingItemValid() const
       
   182     {
       
   183     return GetDrawnItemIndex() != KErrNotFound 
       
   184 		&& iType != EPostDragRefreshItem 
       
   185 		&& iType != EPostHighlightChangeRefreshItem;
       
   186     }
       
   187 
       
   188 TBool TMmFloatingItem::IsManualDelete()
       
   189     {
       
   190     return iManualDelete;
       
   191     }
       
   192 
       
   193 TInt TMmFloatingItem::GetZoomingStatus()
       
   194     {
       
   195     return iSizeStep;
       
   196     }
       
   197 // End of file