]> 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 983d3077ac8f6905ddbb73eeb35e78af6d95165f..9c191d36e9dddb3b05e5f4ad91705ecec5ffa9d9 100644 (file)
@@ -37,8 +37,41 @@ 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
+    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+#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
@@ -49,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;
@@ -372,7 +410,10 @@ void AbstractClipItem::setItemLocked(bool locked)
         setSelected(false);
         setFlag(QGraphicsItem::ItemIsMovable, false);
         setFlag(QGraphicsItem::ItemIsSelectable, false);
-    } else setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+    } else {
+        setFlag(QGraphicsItem::ItemIsMovable, true);
+        setFlag(QGraphicsItem::ItemIsSelectable, true);
+    }
 }
 
 bool AbstractClipItem::isItemLocked() const