AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps) :
QObject(),
QGraphicsRectItem(rect),
- m_info(info),
+ m_info(info),
m_editedKeyframe(-1),
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
return info;
}
+int AbstractClipItem::defaultZValue() const
+{
+ return 2;
+}
+
GenTime AbstractClipItem::endPos() const
{
return m_info.startPos + m_info.cropDuration;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
}
-void AbstractClipItem::resizeStart(int posx, double speed)
+void AbstractClipItem::resizeStart(int posx)
{
GenTime durationDiff = GenTime(posx, m_fps) - m_info.startPos;
if (durationDiff == GenTime()) return;
}
//kDebug()<<"// DURATION DIFF: "<<durationDiff.frames(25)<<", POS: "<<pos().x();
m_info.startPos += durationDiff;
- GenTime originalDiff = GenTime((int) (durationDiff.frames(m_fps) * speed + 0.5), m_fps);
-
+
if (type() == AVWIDGET) {
- m_info.cropStart += durationDiff;
- m_info.originalcropStart += originalDiff;
+ m_info.cropStart += durationDiff;
}
- m_info.cropDuration = m_info.cropDuration - originalDiff;
-
+ m_info.cropDuration = m_info.cropDuration - durationDiff;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
moveBy(durationDiff.frames(m_fps), 0);
//setPos(m_startPos.frames(m_fps), pos().y());
if ((int) scenePos().x() != posx) {
//kDebug()<<"////// WARNING, DIFF IN XPOS: "<<pos().x()<<" == "<<m_startPos.frames(m_fps);
GenTime diff = GenTime((int) pos().x() - posx, m_fps);
- GenTime originalDiff = GenTime((int) (diff.frames(m_fps) * speed + 0.5), m_fps);
+
if (type() == AVWIDGET) {
- m_info.cropStart += diff;
- m_info.originalcropStart += originalDiff;
- }
- m_info.cropDuration = m_info.cropDuration - originalDiff;
+ m_info.cropStart += diff;
+ }
+ m_info.cropDuration = m_info.cropDuration - diff;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
//kDebug()<<"// NEW START: "<<m_startPos.frames(25)<<", NW DUR: "<<m_cropDuration.frames(25);
}
}*/
}
-void AbstractClipItem::resizeEnd(int posx, double speed)
+void AbstractClipItem::resizeEnd(int posx)
{
GenTime durationDiff = GenTime(posx, m_fps) - endPos();
if (durationDiff == GenTime()) return;
- //kDebug() << "// DUR DIFF1:" << durationDiff.frames(25) << ", ADJUSTED: " << durationDiff.frames(25) * speed << ", SPED:" << speed;
if (cropDuration() + durationDiff <= GenTime()) {
durationDiff = GenTime() - (cropDuration() - GenTime(3, m_fps));
}
- //kDebug() << "// DUR DIFF2:" << durationDiff.frames(25) << ", ADJUSTED: " << durationDiff.frames(25) * speed << ", SPED:" << speed;
- m_info.cropDuration += GenTime((int) (durationDiff.frames(m_fps) * speed + 0.5), m_fps);
+
+ m_info.cropDuration += durationDiff;
+
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
if (durationDiff > GenTime()) {
QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect);
kDebug() << "///////// CURRENT: " << startPos().frames(25) << "x" << endPos().frames(25) << ", RECT: " << rect() << "-" << pos();
kDebug() << "///////// COLLISION: " << ((AbstractClipItem *)item)->startPos().frames(25) << "x" << ((AbstractClipItem *)item)->endPos().frames(25) << ", RECT: " << ((AbstractClipItem *)item)->rect() << "-" << item->pos();*/
GenTime diff = ((AbstractClipItem *)item)->startPos() - GenTime(1, m_fps) - startPos();
- m_info.cropDuration = GenTime((int) (diff.frames(m_fps) * speed + 0.5), m_fps);
+ m_info.cropDuration = diff;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
break;
}
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