X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsmallruler.cpp;h=89d876d8cc7cbdc3305254d9f2448c31e5faf29a;hb=ef4d9224f38ada2619a9578f6a6387af2fdd9e4a;hp=028f38491d6f9366cce51e6d98eaed2b75d5b138;hpb=a6122fb8afdc707075646c963943ccf7544b9692;p=kdenlive diff --git a/src/smallruler.cpp b/src/smallruler.cpp index 028f3849..89d876d8 100644 --- a/src/smallruler.cpp +++ b/src/smallruler.cpp @@ -23,22 +23,27 @@ #include #include +#include #include #include SmallRuler::SmallRuler(MonitorManager *manager, QWidget *parent) : - QWidget(parent), - m_scale(1), - m_maxval(25), - m_manager(manager) + QWidget(parent) + ,m_cursorFramePosition(0) + ,m_scale(1) + ,m_maxval(25) + ,m_manager(manager) + ,m_overCursor(false) { m_zoneStart = 10; m_zoneEnd = 60; - m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color(); + KSharedConfigPtr config = KSharedConfig::openConfig(KdenliveSettings::colortheme()); + m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, config); + setMouseTracking(true); - setMinimumHeight(15); + setMinimumHeight(10); } void SmallRuler::adjustScale(int maximum) @@ -109,11 +114,35 @@ void SmallRuler::mousePressEvent(QMouseEvent * event) } else emit seekRenderer((int) pos); } +void SmallRuler::leaveEvent( QEvent * event ) +{ + Q_UNUSED(event); + if (m_overCursor) { + m_overCursor = false; + update(); + } +} + // virtual void SmallRuler::mouseMoveEvent(QMouseEvent * event) { const int pos = event->x() / m_scale; - if (event->buttons() & Qt::LeftButton) emit seekRenderer((int) pos); + if (event->button() == Qt::NoButton) { + if (qAbs(pos * m_scale - m_cursorPosition) < 6) { + if (!m_overCursor) { + m_overCursor = true; + update(); + } + } + else if (m_overCursor) { + m_overCursor = false; + update(); + } + } + if (event->buttons() & Qt::LeftButton) { + m_overCursor = true; + emit seekRenderer((int) pos); + } else { if (qAbs((pos - m_zoneStart) * m_scale) < 4) { setToolTip(i18n("Zone start: %1", m_manager->timecode().getTimecodeFromFrames(m_zoneStart))); @@ -138,6 +167,11 @@ bool SmallRuler::slotNewValue(int value) return true; } +int SmallRuler::position() const +{ + return m_cursorFramePosition; +} + //virtual void SmallRuler::resizeEvent(QResizeEvent *) { @@ -153,7 +187,9 @@ void SmallRuler::updatePixmap() const int zoneStart = (int)(m_zoneStart * m_scale); const int zoneEnd = (int)(m_zoneEnd * m_scale); - p.fillRect(zoneStart, height() / 2 - 1, zoneEnd - zoneStart, height() / 2, m_zoneColor); + p.setPen(Qt::NoPen); + p.setBrush(m_zoneBrush.brush(this)); + p.drawRect(zoneStart, height() / 2 - 1, zoneEnd - zoneStart, height() / 2); // draw ruler p.setPen(palette().text().color()); @@ -190,10 +226,18 @@ void SmallRuler::paintEvent(QPaintEvent *e) // draw pointer QPolygon pa(3); - pa.setPoints(3, m_cursorPosition - 5, 10, m_cursorPosition + 5, 10, m_cursorPosition/*+0*/, 5); - p.setBrush(palette().text().color()); + pa.setPoints(3, m_cursorPosition - 6, 10, m_cursorPosition + 6, 10, m_cursorPosition/*+0*/, 4); + if (m_overCursor) p.setBrush(palette().highlight()); + else p.setBrush(palette().text().color()); p.setPen(Qt::NoPen); p.drawPolygon(pa); } +void SmallRuler::updatePalette() +{ + KSharedConfigPtr config = KSharedConfig::openConfig(KdenliveSettings::colortheme()); + m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, config); + updatePixmap(); +} + #include "smallruler.moc"