connect(m_keyframeWidget, SIGNAL(positionChanged(int)), this, SLOT(slotPositionChanged(int)));
connect(m_keyframeWidget, SIGNAL(keyframeAdded(int)), this, SLOT(slotAddKeyframe(int)));
connect(m_keyframeWidget, SIGNAL(keyframeRemoved(int)), this, SLOT(slotRemoveKeyframe(int)));
+ connect(m_keyframeWidget, SIGNAL(keyframeMoved(int,int)), this, SLOT(slotMoveKeyframe(int,int)));
connect(m_scene, SIGNAL(addKeyframe()), this, SLOT(slotAddKeyframe()));
slotPositionChanged(0, false);
slotPositionChanged(m_keyframeWidget->getPosition(), false);
}
+void RotoWidget::slotMoveKeyframe(int oldPos, int newPos)
+{
+ if (m_data.canConvert(QVariant::Map)) {
+ QMap<QString, QVariant> map = m_data.toMap();
+ map[QString::number(newPos + m_in).rightJustified(qRound(log10((double)m_out)), '0')] = map.take(QString::number(oldPos + m_in).rightJustified(qRound(log10((double)m_out)), '0'));
+ m_data = QVariant(map);
+ }
+
+ slotPositionChanged(m_keyframeWidget->getPosition(), false);
+ emit valueChanged();
+}
+
#include "rotowidget.moc"
void slotAddKeyframe(int pos = -1);
void slotRemoveKeyframe(int pos = -1);
+ void slotMoveKeyframe(int oldPos, int newPos);
};
#endif
connect(m_timeline, SIGNAL(positionChanged(int)), this, SLOT(slotSetPosition(int)));
connect(m_timeline, SIGNAL(keyframeAdded(int)), this, SIGNAL(keyframeAdded(int)));
connect(m_timeline, SIGNAL(keyframeRemoved(int)), this, SIGNAL(keyframeRemoved(int)));
+ connect(m_timeline, SIGNAL(keyframeMoved(int,int)), this, SIGNAL(keyframeMoved(int,int)));
connect(m_buttonAddDelete, SIGNAL(pressed()), m_timeline, SLOT(slotAddRemove()));
connect(m_buttonPrevious, SIGNAL(pressed()), m_timeline, SLOT(slotGoToPrev()));
void positionChanged(int pos);
void keyframeAdded(int pos);
void keyframeRemoved(int pos);
+ void keyframeMoved(int oldPos, int newPos);
private:
SimpleTimelineWidget *m_timeline;
foreach(const int &keyframe, m_keyframes) {
if (qAbs(keyframe - pos) < 5) {
m_currentKeyframeOriginal = keyframe;
+ m_keyframes[m_keyframes.indexOf(keyframe)] = pos;
m_currentKeyframe = pos;
update();
return;
if (event->buttons() & Qt::LeftButton) {
int pos = qBound(0, (int)(event->x() / m_scale), m_duration);
if (m_currentKeyframe >= 0) {
+ // should we maybe sort here?
+ m_keyframes[m_keyframes.indexOf(m_currentKeyframe)] = pos;
m_currentKeyframe = pos;
emit keyframeMoving(m_currentKeyframeOriginal, m_currentKeyframe);
} else {
{
Q_UNUSED(event)
- if (m_currentKeyframe > 0) {
+ if (m_currentKeyframe >= 0) {
+ qSort(m_keyframes);
emit keyframeMoved(m_currentKeyframeOriginal, m_currentKeyframe);
}
}
p.setBrush(m_colKeyframeBg);
}
-
p.setPen(palette().dark().color());
/*