]> git.sesse.net Git - kdenlive/blobdiff - src/abstractclipitem.cpp
animate clip deletion (Qt 4.3)
[kdenlive] / src / abstractclipitem.cpp
index c3149852e726bdb6ba867e80e4bf4c0d1e1cca58..7e7e329d18d528858824486bac0d7883974be4c3 100644 (file)
@@ -37,6 +37,9 @@ AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, doub
         m_selectedKeyframe(0),
         m_keyframeFactor(1),
         m_fps(fps)
+#if QT_VERSION >= 0x040600     
+       , m_closeAnimation(NULL)
+#endif
 {
     setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
 #if QT_VERSION >= 0x040600
@@ -44,6 +47,33 @@ AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, doub
 #endif
 }
 
+AbstractClipItem::~AbstractClipItem()
+{
+#if QT_VERSION >= 0x040600
+    if (m_closeAnimation) delete m_closeAnimation;
+#endif  
+}  
+void AbstractClipItem::closeAnimation()
+{
+#if QT_VERSION >= 0x040600
+    if (m_closeAnimation) return;
+    m_closeAnimation = new QPropertyAnimation(this, "rect");
+    connect(m_closeAnimation, SIGNAL(finished()), this, SLOT(deleteLater()));
+    m_closeAnimation->setDuration(200);
+    QRectF r = rect();
+    QRectF r2 = r;
+    r2.setLeft(r.left() + r.width() / 2);
+    r2.setTop(r.top() + r.height() / 2);
+    r2.setWidth(1);
+    r2.setHeight(1);
+    m_closeAnimation->setStartValue(r);
+    m_closeAnimation->setEndValue(r2);
+    m_closeAnimation->setEasingCurve(QEasingCurve::InQuad);
+    m_closeAnimation->start();
+#endif
+}
+
 ItemInfo AbstractClipItem::info() const
 {
     ItemInfo info = m_info;