m_timeLine(0),
m_startThumbRequested(false),
m_endThumbRequested(false),
- m_hover(false),
+ //m_hover(false),
m_speed(speed),
m_framePixelWidth(0)
{
- setZValue(1);
+ setZValue(2);
setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (double)(KdenliveSettings::trackheight() - 2));
setPos(info.startPos.frames(fps), (double)(info.track * KdenliveSettings::trackheight()) + 1);
m_audioThumbReady = clip->audioThumbCreated();
setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
- setAcceptsHoverEvents(true);
+ //setAcceptsHoverEvents(true);
connect(this , SIGNAL(prepareAudioThumb(double, int, int, int)) , this, SLOT(slotPrepareAudioThumb(double, int, int, int)));
if (m_clipType == VIDEO || m_clipType == AV || m_clipType == SLIDESHOW || m_clipType == PLAYLIST) {
// draw transition handles on hover
- if (m_hover && itemWidth * scale > 40) {
+ /*if (m_hover && itemWidth * scale > 40) {
QPointF p1 = painter->matrix().map(QPointF(0, itemHeight / 2)) + QPointF(10, 0);
painter->drawPixmap(p1, projectScene()->m_transitionPixmap);
p1 = painter->matrix().map(QPointF(itemWidth, itemHeight / 2)) - QPointF(22, 0);
painter->drawPixmap(p1, projectScene()->m_transitionPixmap);
- }
+ }*/
// draw effect or transition keyframes
if (itemWidth > 20) drawKeyFrames(painter, exposed);
QRectF rect = sceneBoundingRect();
const double scale = projectScene()->scale().x();
double maximumOffset = 6 / scale;
+ int addtransitionOffset = 10;
+ // Don't allow add transition if track height is very small
+ if (rect.height() < 30) addtransitionOffset = 0;
if (qAbs((int)(pos.x() - (rect.x() + m_startFade))) < maximumOffset && qAbs((int)(pos.y() - rect.y())) < 6) {
if (m_startFade == 0) setToolTip(i18n("Add audio fade"));
else setToolTip(i18n("Audio fade duration: %1s", GenTime(m_startFade, m_fps).seconds()));
return FADEIN;
- } else if (pos.x() - rect.x() < maximumOffset) {
+ } else if (pos.x() - rect.x() < maximumOffset && (rect.bottom() - pos.y() > addtransitionOffset)) {
setToolTip(i18n("Crop from start: %1s", cropStart().seconds()));
return RESIZESTART;
} else if (qAbs((int)(pos.x() - (rect.x() + rect.width() - m_endFade))) < maximumOffset && qAbs((int)(pos.y() - rect.y())) < 6) {
if (m_endFade == 0) setToolTip(i18n("Add audio fade"));
else setToolTip(i18n("Audio fade duration: %1s", GenTime(m_endFade, m_fps).seconds()));
return FADEOUT;
- } else if (qAbs((int)(pos.x() - (rect.x() + rect.width()))) < maximumOffset) {
+ } else if ((rect.right() - pos.x() < maximumOffset) && (rect.bottom() - pos.y() > addtransitionOffset)) {
setToolTip(i18n("Clip duration: %1s", duration().seconds()));
return RESIZEEND;
- } else if (qAbs((int)(pos.x() - (rect.x() + 16 / scale))) < maximumOffset && qAbs((int)(pos.y() - (rect.y() + rect.height() / 2 + 9))) < 6) {
+ } else if ((pos.x() - rect.x() < 16 / scale) && (rect.bottom() - pos.y() <= addtransitionOffset)) {
setToolTip(i18n("Add transition"));
return TRANSITIONSTART;
- } else if (qAbs((int)(pos.x() - (rect.x() + rect.width() - 21 / scale))) < maximumOffset && qAbs((int)(pos.y() - (rect.y() + rect.height() / 2 + 9))) < 6) {
+ } else if ((rect.right() - pos.x() < 16 / scale) && (rect.bottom() - pos.y() <= addtransitionOffset)) {
setToolTip(i18n("Add transition"));
return TRANSITIONEND;
}
QGraphicsRectItem::mouseReleaseEvent(event);
}
+/*
//virtual
-void ClipItem::hoverEnterEvent(QGraphicsSceneHoverEvent */*e*/)
+void ClipItem::hoverEnterEvent(QGraphicsSceneHoverEvent *e)
{
//if (e->pos().x() < 20) m_hover = true;
+ return;
if (isItemLocked()) return;
m_hover = true;
QRectF r = boundingRect();
update(r.x(), r.y() + height, width, height);
update(r.right() - width, r.y() + height, width, height);
}
+*/
void ClipItem::resizeStart(int posx, double /*speed*/)
{
return;
}
opMode = clip->operationMode(mapToScene(event->pos()));
- double size = 5;
+ const double size = 5;
if (opMode == m_moveOpMode) {
QGraphicsView::mouseMoveEvent(event);
return;
if (m_visualTip == NULL) {
QRectF rect = clip->sceneBoundingRect();
QPolygon polygon;
- polygon << QPoint(0, rect.height() / 2 - size * 2);
- polygon << QPoint(size * 2, (int)(rect.height() / 2));
- polygon << QPoint(0, (int)(rect.height() / 2 + size * 2));
- polygon << QPoint(0, (int)(rect.height() / 2 - size * 2));
+ polygon << QPoint(0, - size * 2);
+ polygon << QPoint(size * 2, 0);
+ polygon << QPoint(0, size * 2);
+ polygon << QPoint(0, - size * 2);
m_visualTip = new QGraphicsPolygonItem(polygon);
((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
- m_visualTip->setPos(rect.x(), rect.y());
+ m_visualTip->setPos(rect.x(), rect.y() + rect.height() / 2);
m_visualTip->setFlags(QGraphicsItem::ItemIgnoresTransformations);
m_visualTip->setZValue(100);
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, 1);
- //m_animation->setPosAt(.5, QPointF(rect.x() - rect.x() * scale, 0));
- scale = 1.0;
- m_animation->setScaleAt(1, scale, 1);
- //m_animation->setPosAt(1, QPointF(rect.x() - rect.x() * scale, 0));
+ m_animation->setScaleAt(.5, 2, 1);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
if (m_visualTip == NULL) {
QRectF rect = clip->sceneBoundingRect();
QPolygon polygon;
- polygon << QPoint(0, (int)(rect.height() / 2 - size * 2));
- polygon << QPoint(- size * 2, (int)(rect.height() / 2));
- polygon << QPoint(0, (int)(rect.height() / 2 + size * 2));
- polygon << QPoint(0, (int)(rect.height() / 2 - size * 2));
+ polygon << QPoint(0, - size * 2);
+ polygon << QPoint(- size * 2, 0);
+ polygon << QPoint(0, size * 2);
+ polygon << QPoint(0, - size * 2);
m_visualTip = new QGraphicsPolygonItem(polygon);
((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
m_visualTip->setFlags(QGraphicsItem::ItemIgnoresTransformations);
- m_visualTip->setPos(rect.right(), rect.y());
+ m_visualTip->setPos(rect.right(), rect.y() + rect.height() / 2);
m_visualTip->setZValue(100);
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, 1);
- scale = 1.0;
- m_animation->setScaleAt(1, scale, 1);
+ m_animation->setScaleAt(.5, 2, 1);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, scale);
- scale = 1.0;
- m_animation->setScaleAt(1, scale, scale);
+ m_animation->setScaleAt(.5, 2, 2);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, scale);
- scale = 1.0;
- m_animation->setScaleAt(1, scale, scale);
+ m_animation->setScaleAt(.5, 2, 2);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
setCursor(Qt::PointingHandCursor);
} else if (opMode == TRANSITIONSTART) {
- /*if (m_visualTip == NULL) {
+ if (m_visualTip == NULL) {
QRectF rect = clip->sceneBoundingRect();
- m_visualTip = new QGraphicsEllipseItem(-5, -5 , 10, 10);
- ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
- ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
+ QPolygon polygon;
+ polygon << QPoint(0, - size * 2);
+ polygon << QPoint(size * 2, 0);
+ polygon << QPoint(0, 0);
+ polygon << QPoint(0, - size * 2);
+
+ m_visualTip = new QGraphicsPolygonItem(polygon);
+ ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
+ ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
+ m_visualTip->setPos(rect.x(), rect.bottom());
+ m_visualTip->setFlags(QGraphicsItem::ItemIgnoresTransformations);
m_visualTip->setZValue(100);
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- m_visualTip->setPos(rect.x() + 10, rect.y() + rect.height() / 2 + 12);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, scale);
- scale = 1.0;
- m_animation->setScaleAt(1, scale, scale);
+ m_animation->setScaleAt(.5, 2, 2);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
- }*/
+ }
setCursor(Qt::PointingHandCursor);
} else if (opMode == TRANSITIONEND) {
- /*if (m_visualTip == NULL) {
+ if (m_visualTip == NULL) {
QRectF rect = clip->sceneBoundingRect();
- m_visualTip = new QGraphicsEllipseItem(-5, -5 , 10, 10);
- ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
- ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
+ QPolygon polygon;
+ polygon << QPoint(0, - size * 2);
+ polygon << QPoint(- size * 2, 0);
+ polygon << QPoint(0, 0);
+ polygon << QPoint(0, - size * 2);
+
+ m_visualTip = new QGraphicsPolygonItem(polygon);
+ ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor);
+ ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen);
+ m_visualTip->setPos(rect.right(), rect.bottom());
+ m_visualTip->setFlags(QGraphicsItem::ItemIgnoresTransformations);
m_visualTip->setZValue(100);
m_animation = new QGraphicsItemAnimation;
m_animation->setItem(m_visualTip);
m_animation->setTimeLine(m_animationTimer);
- m_visualTip->setPos(rect.x() + rect.width() - 10 , rect.y() + rect.height() / 2 + 12);
- double scale = 2.0;
- m_animation->setScaleAt(.5, scale, scale);
- scale = 1.0;
- m_animation->setScaleAt(1, scale, scale);
+ m_animation->setScaleAt(.5, 2, 2);
+ m_animation->setScaleAt(1, 1, 1);
scene()->addItem(m_visualTip);
m_animationTimer->start();
- }*/
+ }
setCursor(Qt::PointingHandCursor);
} else if (opMode == KEYFRAME) {
setCursor(Qt::PointingHandCursor);