1 /* |
|
2 * Copyright (c) 2010 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: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include "slideanimator.h" |
|
19 #include "../chromesnippet.h" |
|
20 #include <QList> |
|
21 |
|
22 SlideAnimator::SlideAnimator(ChromeSnippet* snippet) |
|
23 : VisibilityAnimator(snippet), |
|
24 m_snippet(snippet), |
|
25 m_direction(slideUp) |
|
26 { |
|
27 QPointF pos = snippet->pos(); |
|
28 if(snippet->anchor() == "AnchorBottom"){ |
|
29 m_direction = slideDown; |
|
30 m_visiblePosition = pos.y(); |
|
31 m_invisiblePosition = m_visiblePosition + snippet->geometry().height() + snippet->anchorOffset(); |
|
32 } |
|
33 else if(snippet->anchor() == "AnchorLeft"){ |
|
34 m_direction = slideLeft; |
|
35 m_visiblePosition = pos.x(); |
|
36 m_invisiblePosition = m_visiblePosition - snippet->geometry().width() - snippet->anchorOffset(); |
|
37 } |
|
38 else if (snippet->anchor() == "AnchorRight"){ |
|
39 m_direction = slideRight; |
|
40 m_visiblePosition = pos.x(); |
|
41 m_invisiblePosition = m_visiblePosition + snippet->geometry().width() + snippet->anchorOffset(); |
|
42 } |
|
43 else { |
|
44 m_visiblePosition = pos.y(); |
|
45 m_invisiblePosition = m_visiblePosition - snippet->geometry().height() - snippet->anchorOffset(); |
|
46 } |
|
47 m_moveBy = m_invisiblePosition - m_visiblePosition; |
|
48 } |
|
49 |
|
50 SlideAnimator::~SlideAnimator() |
|
51 { |
|
52 } |
|
53 |
|
54 void SlideAnimator::updateVisibility(qreal step) |
|
55 { |
|
56 qreal p = step*m_moveBy + m_visiblePosition; |
|
57 if((m_direction == slideDown) || (m_direction == slideUp)){ |
|
58 if(step < 0.05){ |
|
59 m_snippet->setPos(m_snippet->pos().x(), m_visiblePosition); |
|
60 } |
|
61 else if(step > 0.95){ |
|
62 m_snippet->setPos(m_snippet->pos().x(), m_invisiblePosition); |
|
63 } |
|
64 else{ |
|
65 m_snippet->setPos(m_snippet->pos().x(), p); |
|
66 } |
|
67 } |
|
68 else { |
|
69 if(step < 0.05){ |
|
70 m_snippet->setPos(m_visiblePosition, m_snippet->pos().y()); |
|
71 } |
|
72 else if(step > 0.95){ |
|
73 m_snippet->setPos(m_invisiblePosition, m_snippet->pos().y()); |
|
74 } |
|
75 else{ |
|
76 m_snippet->setPos(p,m_snippet->pos().y()); |
|
77 } |
|
78 } |
|
79 } |
|