diff -r 000000000000 -r f72a12da539e menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,197 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: floating item +* +*/ + +#include +#include +#include "mmfloatingitem.h" + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TMmFloatingItem::TMmFloatingItem( TInt aDrawnIndex, TPoint aStartPosition, + TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView ) + { + iView = aView; + iSizeStep = 0; + iZoomRatio = 1; + iManualDelete = EFalse; + + if ( iView ) + { + // item position is relative + iItemPosition = aStartPosition - iView->ItemPos( 0 ); + } + else + { + // item position is absolute + iItemPosition = aStartPosition; + } + + iDrawnItemIndex = aDrawnIndex; + iType = aType; + iFrames = aAnimationFrames; + iFrameCounter = 0; + CalculateSteps(TPoint(0,0)); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void TMmFloatingItem::SetPositionStep( TPoint aDiffetenceVector ) + { + ASSERT( iFrames ); + iFrameCounter = 0; + CalculateSteps( aDiffetenceVector ); + } +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void TMmFloatingItem::CalculateSteps(TPoint aVector) + { + iPositionStep.Reset(); + + TReal x = aVector.iX; + TReal y = aVector.iY; + + TReal sx = 0.0; + TReal sy = 0.0; + + for( TInt i = 0; i < iFrames; i++ ) + { + TReal sin; + Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2. ); + TReal xx = x * (0.5*( sin + 1.0 ) ) - sx; + TReal yy = y * (0.5*( sin + 1.0 ) ) - sy; + + sx += xx; + sy += yy; + + iPositionStep.At(i) = TPoint( xx, yy ); + } + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void TMmFloatingItem::SetSizeStep( TReal aStartSize, TReal aFinalSize ) + { + ASSERT( iFrames ); + iFrameCounter = 0; + iZoomRatio = aStartSize; + iSizeStep = (aFinalSize - aStartSize) / iFrames; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TBool TMmFloatingItem::MakeStep() + { + TBool ret(EFalse); + + if(iFrameCounter >= iFrames && iManualDelete == EFalse) + { + InvalidateFloatingItem(); + } + else if (iFrameCounter < iFrames) + { + iItemPosition += iPositionStep[iFrameCounter]; + iZoomRatio += iSizeStep; + ret = Abs(iPositionStep[iFrameCounter].iX) > 0 + || Abs(iPositionStep[iFrameCounter].iY > 0) + || Abs(iSizeStep) > 0; + iFrameCounter++; + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void TMmFloatingItem::SetManualDelete(TBool aManual) + { + iManualDelete = aManual; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TReal TMmFloatingItem::GetCurrentZoomRatio() const + { + return iZoomRatio; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TMmFloatingItemType TMmFloatingItem::GetFloatingItemType() const + { + return iType; + } + +TInt TMmFloatingItem::GetDrawnItemIndex() const + { + return iDrawnItemIndex; + } + +TPoint TMmFloatingItem::GetItemPosition() const + { + TPoint ret; + if ( iView ) + { + // item position is relative + ret = iItemPosition + iView->ItemPos( 0 ); + } + else + { + // item position is absolute + ret = iItemPosition; + } + return ret; + } + +void TMmFloatingItem::InvalidateFloatingItem() + { + iDrawnItemIndex = KErrNotFound; + } + +TBool TMmFloatingItem::IsFloatingItemValid() const + { + return GetDrawnItemIndex() != KErrNotFound + && iType != EPostDragRefreshItem + && iType != EPostHighlightChangeRefreshItem; + } + +TBool TMmFloatingItem::IsManualDelete() + { + return iManualDelete; + } + +TInt TMmFloatingItem::GetZoomingStatus() + { + return iSizeStep; + } +// End of file