]> git.sesse.net Git - kdenlive/blobdiff - src/abstractclipitem.cpp
Add subclips (dragging a zone from clip monitor to project tree)
[kdenlive] / src / abstractclipitem.cpp
index 5159c04db6d5101f5cba452d5d07bedbfb4cc61a..9c191d36e9dddb3b05e5f4ad91705ecec5ffa9d9 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;
@@ -52,6 +82,11 @@ ItemInfo AbstractClipItem::info() const
     return info;
 }
 
+int AbstractClipItem::defaultZValue() const
+{
+    return 2;
+}
+
 GenTime AbstractClipItem::endPos() const
 {
     return m_info.startPos + m_info.cropDuration;