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; } }
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 } }
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); }