-Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) : AbstractClipItem(info, QRectF(), fps), m_gradient(QLinearGradient(0, 0, 0, 0)), m_automaticTransition(automaticTransition), m_forceTransitionTrack(false) {
- setZValue(2);
- setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1));
- setPos(info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2));
+#include <kdebug.h>
+#include <KIcon>
+#include <klocale.h>
+
+#include <QBrush>
+#include <QDomElement>
+#include <QPainter>
+#include <QStyleOptionGraphicsItem>
+#if QT_VERSION >= 0x040600
+#include <QPropertyAnimation>
+#endif
+
+Transition::Transition(const ItemInfo &info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) :
+ AbstractClipItem(info, QRectF(), fps),
+ m_forceTransitionTrack(false),
+ m_automaticTransition(automaticTransition),
+ m_secondClip(NULL),
+ m_transitionTrack(transitiontrack)
+{
+ setZValue(3);
+ m_info.cropDuration = info.endPos - info.startPos;
+ setPos(info.startPos.frames(fps), (int)(info.track * KdenliveSettings::trackheight() + itemOffset() + 1));
+
+#if QT_VERSION >= 0x040600
+ if (!(KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects)) {
+ // animation disabled
+ setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight());
+ }
+ else {
+ QPropertyAnimation *startAnimation = new QPropertyAnimation(this, "rect");
+ startAnimation->setDuration(200);
+ const QRectF r(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight() / 2);
+ const QRectF r2(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)itemHeight());
+ startAnimation->setStartValue(r);
+ startAnimation->setEndValue(r2);
+ startAnimation->setEasingCurve(QEasingCurve::OutQuad);
+ startAnimation->start(QAbstractAnimation::DeleteWhenStopped);
+ }
+#else
+ setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal) itemHeight());
+#endif