connect(m_time, SIGNAL(editingFinished()), this, SLOT(slotSetPosition()));
connect(m_timeline, SIGNAL(positionChanged(int)), this, SLOT(slotSetPosition(int)));
+ connect(m_timeline, SIGNAL(atKeyframe(bool)), this, SLOT(slotAtKeyframe(bool)));
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)));
m_time->slotUpdateTimeCodeFormat();
}
+void SimpleKeyframeWidget::slotAtKeyframe(bool atKeyframe)
+{
+ if (atKeyframe) {
+ m_buttonAddDelete->setIcon(KIcon("edit-delete"));
+ m_buttonAddDelete->setToolTip(i18n("Delete keyframe"));
+ } else {
+ m_buttonAddDelete->setIcon(KIcon("document-new"));
+ m_buttonAddDelete->setToolTip(i18n("Add keyframe"));
+ }
+}
+
#include "simplekeyframewidget.moc"
m_keyframes = keyframes;
qSort(m_keyframes);
m_currentKeyframe = m_currentKeyframeOriginal = -1;
+ emit atKeyframe(m_keyframes.contains(m_position));
update();
}
void SimpleTimelineWidget::slotSetPosition(int pos)
{
- m_position = pos;
- update();
+ if (pos != m_position) {
+ m_position = pos;
+ emit atKeyframe(m_keyframes.contains(m_position));
+ update();
+ }
}
void SimpleTimelineWidget::slotAddKeyframe(int pos, int select)
update();
emit keyframeAdded(pos);
+ if (pos == m_position)
+ emit atKeyframe(true);
}
void SimpleTimelineWidget::slotAddRemove()
m_currentKeyframe = m_currentKeyframeOriginal = -1;
update();
emit keyframeRemoved(pos);
+ if (pos == m_position)
+ emit atKeyframe(false);
}
void SimpleTimelineWidget::setDuration(int dur)
if (keyframe > m_position) {
slotSetPosition(keyframe);
emit positionChanged(keyframe);
+ emit atKeyframe(true);
return;
}
}
// no keyframe after current position
slotSetPosition(m_duration);
emit positionChanged(m_duration);
+ emit atKeyframe(false);
}
void SimpleTimelineWidget::slotGoToPrev()
if (m_keyframes.at(i) < m_position) {
slotSetPosition(m_keyframes.at(i));
emit positionChanged(m_keyframes.at(i));
+ emit atKeyframe(true);
return;
}
}
// no keyframe before current position
slotSetPosition(0);
emit positionChanged(0);
+ emit atKeyframe(false);
}
void SimpleTimelineWidget::mousePressEvent(QMouseEvent* event)
m_currentKeyframe = m_currentKeyframeOriginal = -1;
m_position = pos;
emit positionChanged(pos);
+ emit atKeyframe(m_keyframes.contains(pos));
update();
}
m_keyframes[m_keyframes.indexOf(m_currentKeyframe)] = pos;
m_currentKeyframe = pos;
emit keyframeMoving(m_currentKeyframeOriginal, m_currentKeyframe);
+ emit atKeyframe(m_keyframes.contains(m_position));
}
} else {
m_position = pos;
emit positionChanged(pos);
+ emit atKeyframe(m_keyframes.contains(pos));
}
update();
return;
if (keyframe == m_currentKeyframe)
m_currentKeyframe = m_currentKeyframeOriginal = -1;
emit keyframeRemoved(keyframe);
+ if (keyframe == m_position)
+ emit atKeyframe(false);
return;
}
}
m_keyframes.append(pos);
qSort(m_keyframes);
emit keyframeAdded(pos);
+ if (pos == m_position)
+ emit atKeyframe(true);
} else {
QWidget::mouseDoubleClickEvent(event);
}
m_position = qBound(0, m_position + change, m_duration);
emit positionChanged(m_position);
}
+ emit atKeyframe(m_keyframes.contains(m_position));
update();
}