X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcustomruler.cpp;h=a8626d2cd2fa50537d5adbb7ff56f19914d9becc;hb=e12239a1dea3c7a3d316fd3c115f75391bb4d4db;hp=6adb2a2eec0f384be11ef606ad23a0008bde38b2;hpb=2d9acd1c5b5e5a1978d6fa29592f83520bd45fe5;p=kdenlive diff --git a/src/customruler.cpp b/src/customruler.cpp index 6adb2a2e..a8626d2c 100644 --- a/src/customruler.cpp +++ b/src/customruler.cpp @@ -40,7 +40,7 @@ static const int LITTLE_MARK_LENGTH = (MIDDLE_MARK_LENGTH / 2); static const int LITTLE_MARK_X2 = LINE_END; static const int LITTLE_MARK_X1 = (LITTLE_MARK_X2 - LITTLE_MARK_LENGTH); -static const int LABEL_SIZE = 9; +static int LABEL_SIZE; static const int END_LABEL_X = 4; static const int END_LABEL_Y = (END_LABEL_X + LABEL_SIZE - 2); @@ -61,6 +61,8 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) : m_clickedGuide(-1) { setFont(KGlobalSettings::toolBarFont()); + QFontMetricsF fontMetrics(font()); + LABEL_SIZE = fontMetrics.ascent (); m_scale = 3; m_zoneColor = QColor(133, 255, 143); littleMarkDistance = FRAME_SIZE; @@ -81,6 +83,14 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) : setMinimumHeight(20); } +void CustomRuler::updateProjectFps(Timecode t) +{ + m_timecode = t; + mediumMarkDistance = FRAME_SIZE * m_timecode.fps(); + bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60; + update(); +} + void CustomRuler::slotEditGuide() { m_view->slotEditGuide(m_clickedGuide); @@ -153,10 +163,19 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event) } else { int pos = (int)((event->x() + offset())); if (event->y() <= 10) setCursor(Qt::ArrowCursor); - else if (qAbs(pos - m_zoneStart * m_factor) < 4) setCursor(KCursor("left_side", Qt::SizeHorCursor)); - else if (qAbs(pos - m_zoneEnd * m_factor) < 4) setCursor(KCursor("right_side", Qt::SizeHorCursor)); - else if (qAbs(pos - (m_zoneStart + (m_zoneEnd - m_zoneStart) / 2) * m_factor) < 4) setCursor(Qt::SizeHorCursor); - else setCursor(Qt::ArrowCursor); + else if (qAbs(pos - m_zoneStart * m_factor) < 4) { + setCursor(KCursor("left_side", Qt::SizeHorCursor)); + setToolTip(i18n("Zone start: %1", m_timecode.getTimecodeFromFrames(m_zoneStart))); + } else if (qAbs(pos - m_zoneEnd * m_factor) < 4) { + setCursor(KCursor("right_side", Qt::SizeHorCursor)); + setToolTip(i18n("Zone end: %1", m_timecode.getTimecodeFromFrames(m_zoneEnd))); + } else if (qAbs(pos - (m_zoneStart + (m_zoneEnd - m_zoneStart) / 2) * m_factor) < 4) { + setCursor(Qt::SizeHorCursor); + setToolTip(i18n("Zone duration: %1", m_timecode.getTimecodeFromFrames(m_zoneEnd - m_zoneStart))); + } else { + setCursor(Qt::ArrowCursor); + setToolTip(QString()); + } } } @@ -293,7 +312,6 @@ void CustomRuler::paintEvent(QPaintEvent *e) offsetmin = offsetmin * m_textSpacing; for (f = offsetmin; f < offsetmax; f += m_textSpacing) { QString lab = m_timecode.getTimecodeFromFrames((int)(f / m_factor + 0.5)); - p.drawText(f - m_offset + 2, LABEL_SIZE, lab); } @@ -327,8 +345,10 @@ void CustomRuler::paintEvent(QPaintEvent *e) } if (zoneEnd > 0) { + QColor center(Qt::white); + center.setAlpha(150); QRect rec(zoneStart - off + (zoneEnd - zoneStart) / 2 - 4, 9, 8, 9); - p.fillRect(rec, QColor(255, 255, 255, 150)); + p.fillRect(rec, center); p.drawRect(rec); QPolygon pa(4);