Example #1
0
void PulseAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
    if (!targetWidget()) {
        return;
    }

    if (oldState == Stopped && newState == Running) {
        if (!m_under.data() || m_under.data()->target() != targetWidget() || m_under.data()->size() != targetWidget()->size()) {
            setCopy();
        }

        if (m_under.data()->isIconBigger()) {
            m_under.data()->setScale(0);
            m_endScale = 1.0;

        } else {
            m_scale = 0;
            m_endScale = 1.5;
        }

        if (m_under.data()->isVisible() == false) {
            m_under.data()->setVisible(true);
        }

        m_under.data()->setOpacity(direction() == Forward ? 1 : 0);
        m_under.data()->setScale(direction() == Forward ? m_scale : m_endScale);
    } else if (newState == Stopped) {
        resetPulser();
    }
}
void MWidgetSlideAnimation::setTargetWidget(MWidgetController *widget)
{
    Q_D(MWidgetSlideAnimation);
    MAbstractWidgetAnimation::setTargetWidget(widget);

    d->played = false;
    d->positionAnimation->setTargetObject(targetWidget());
}
void MWidgetSlideAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
    Q_D(MWidgetSlideAnimation);

    if (!d->targetWidget)
        return;

    if (oldState == QAbstractAnimation::Stopped &&
        newState == QAbstractAnimation::Running)
    {
        d->originalPos = targetWidget()->pos();

        QPointF offscreenPos;

        if (style().objectName().isNull())
            style().setObjectName("In");

        if (style()->origin() == "top") {
            offscreenPos = QPointF(d->originalPos.x(), -targetWidget()->size().height());
        } else if (style()->origin() == "right") {
            offscreenPos = QPointF(targetWidget()->sceneManager()->visibleSceneSize().width(), d->originalPos.y());
        } else if (style()->origin() == "bottom") {
            offscreenPos = QPointF(d->originalPos.x(), targetWidget()->sceneManager()->visibleSceneSize().height());
        } else if (style()->origin() == "left") {
            offscreenPos = QPointF(-targetWidget()->boundingRect().width(), d->originalPos.y());
        }

        if (d->direction == In) {
            // because animation doesn't immediately set properties to start values
            // we must explicitly set targetWidget position here to prevent widget
            // poping out in finalPosition before animation starts
            d->targetWidget->setPos(offscreenPos);
            d->positionAnimation->setStartValue(offscreenPos);
            d->positionAnimation->setEndValue(d->originalPos);
        } else {
            d->positionAnimation->setStartValue(d->originalPos);
            d->positionAnimation->setEndValue(offscreenPos);
        }

        d->delay->setDuration(style()->delay());
        d->positionAnimation->setEasingCurve(style()->easingCurve());
        d->positionAnimation->setDuration(style()->duration());
        d->played = true;
    }
}
Example #4
0
void JavascriptAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
    //kDebug() << ".................. state: " << newState;
    if (oldState == Stopped && newState == Running) {
        if (!m_method.isFunction()) {
            //Define the class and create an instance
            m_instance = AnimationScriptEngine::animation(m_name).construct();
            kDebug() << "trying for" << m_name << m_instance.isFunction();

            //Get the method of the object
            m_method = m_instance.property(QString("updateCurrentTime"));
            if (!m_method.isFunction()) {
                qDebug() << "**************** ERROR! Name: " << m_name << " ************";
                m_instance = m_method = QScriptValue();
            } else {
                prepInstance();

                //TODO: this really should be done in the bindings provided
                //Center the widget for transformation
                qreal x = targetWidget()->geometry().height()/2;
                qreal y = targetWidget()->geometry().width()/2;
                targetWidget()->setTransformOriginPoint(x, y);
            }
        }

        if (m_method.isFunction()) {
            m_instance.setProperty("duration", duration(), QScriptValue::ReadOnly);
            m_instance.setProperty("target", m_instance.engine()->newQObject(targetWidget()), QScriptValue::ReadOnly);
        }
#ifdef PLASMA_JSANIM_FPS
        m_fps = 0;
    } else if (oldState == Running && newState == Stopped) {
        kDebug() << ".........." << m_name << " fps: " << m_fps * 1000/duration();
#endif
    }
}
Example #5
0
void PulseAnimation::setCopy()
{
    QGraphicsWidget *target = targetWidget();

    if (!target) {
        m_under.clear();
        return;
    }

    if (!m_under.data()) {
        m_under = new WidgetSnapShot;
    }

    m_under.data()->setTarget(target);

    m_zvalue = target->zValue() - 1;
    m_scale = target->scale();

    m_under.data()->setOpacity(m_opacity);
    m_under.data()->setScale(m_scale);
    m_under.data()->setZValue(m_zvalue);
}
void MWidgetSlideAnimation::restoreTargetWidgetState()
{
    Q_D(MWidgetSlideAnimation);
    if (d->played)
        targetWidget()->setPos(d->originalPos);
}