]> git.sesse.net Git - kdenlive/blobdiff - src/customruler.cpp
Fix painting of timeline ruler (no fixed font value)
[kdenlive] / src / customruler.cpp
index 6adb2a2eec0f384be11ef606ad23a0008bde38b2..a8626d2cd2fa50537d5adbb7ff56f19914d9becc 100644 (file)
@@ -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);