ginebra/animations/slideanimator.cpp
branchGCC_SURGE
changeset 8 2e16851ffecd
parent 2 bf4420e9fa4d
parent 6 1c3b8676e58c
equal deleted inserted replaced
2:bf4420e9fa4d 8:2e16851ffecd
     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 }