m_colKeyframeBg = scheme.shade(KColorScheme::MidShade);
}
-void SimpleTimelineWidget::setKeyframes(QList <int> keyframes)
+void SimpleTimelineWidget::setKeyframes(const QList<int> &keyframes)
{
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)
void SimpleTimelineWidget::slotGoToNext()
{
+ if (m_position == m_duration)
+ return;
+
foreach (const int &keyframe, m_keyframes) {
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_position == 0)
+ return;
+
for (int i = m_keyframes.count() - 1; i >= 0; --i) {
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);
}
void SimpleTimelineWidget::wheelEvent(QWheelEvent* event)
{
int change = event->delta() < 0 ? -1 : 1;
- if (m_currentKeyframe > 0) {
+ /*if (m_currentKeyframe > 0) {
m_currentKeyframe = qBound(0, m_currentKeyframe + change, m_duration);
emit keyframeMoved(m_currentKeyframeOriginal, m_currentKeyframe);
- } else {
+ } else { */
m_position = qBound(0, m_position + change, m_duration);
emit positionChanged(m_position);
- }
+// }
+ emit atKeyframe(m_keyframes.contains(m_position));
update();
}