-const int CustomRuler::comboScale[] = { 1, 2, 5, 10, 25, 50, 125, 250, 500, 725, 1500, 3000, 6000,
- 12000
- };
-
-CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent)
- : KRuler(parent), m_timecode(tc), m_view(parent) {
- slotNewOffset(0);
- setRulerMetricStyle(KRuler::Pixel);
- setLength(1024);
- setMaximum(1024);
- setPixelPerMark(3);
- setLittleMarkDistance(FRAME_SIZE);
- setMediumMarkDistance(FRAME_SIZE * 25);
- setBigMarkDistance(FRAME_SIZE * 25 * 60);
- m_zoneStart = 50;
- m_zoneEnd = 250;
+const int CustomRuler::comboScale[] = { 1, 2, 5, 10, 25, 50, 125, 250, 500, 750, 1500, 3000, 6000, 12000};
+
+CustomRuler::CustomRuler(const Timecode &tc, CustomTrackView *parent) :
+ QWidget(parent),
+ m_timecode(tc),
+ m_view(parent),
+ m_duration(0),
+ m_offset(0),
+ m_lastSeekPosition(SEEK_INACTIVE),
+ m_clickedGuide(-1),
+ m_rate(-1),
+ m_mouseMove(NO_MOVE),
+ m_cursorColor(palette().text())
+{
+ setFont(KGlobalSettings::toolBarFont());
+ QFontMetricsF fontMetrics(font());
+ // Define size variables
+ LABEL_SIZE = fontMetrics.ascent();
+ setMinimumHeight(LABEL_SIZE * 2);
+ setMaximumHeight(LABEL_SIZE * 2);
+ MAX_HEIGHT = height();
+ BIG_MARK_X = LABEL_SIZE + 1;
+ int mark_length = MAX_HEIGHT - BIG_MARK_X;
+ MIDDLE_MARK_X = BIG_MARK_X + mark_length / 2;
+ LITTLE_MARK_X = BIG_MARK_X + mark_length / 3;
+ updateFrameSize();
+ m_scale = 3;
+ m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
+ m_zoneColor.setAlpha(180);
+ m_zoneStart = 0;
+ m_zoneEnd = 100;
+ m_contextMenu = new QMenu(this);
+ QAction *addGuide = m_contextMenu->addAction(KIcon("document-new"), i18n("Add Guide"));
+ connect(addGuide, SIGNAL(triggered()), m_view, SLOT(slotAddGuide()));
+ m_editGuide = m_contextMenu->addAction(KIcon("document-properties"), i18n("Edit Guide"));
+ connect(m_editGuide, SIGNAL(triggered()), this, SLOT(slotEditGuide()));
+ m_deleteGuide = m_contextMenu->addAction(KIcon("edit-delete"), i18n("Delete Guide"));
+ connect(m_deleteGuide , SIGNAL(triggered()), this, SLOT(slotDeleteGuide()));
+ QAction *delAllGuides = m_contextMenu->addAction(KIcon("edit-delete"), i18n("Delete All Guides"));
+ connect(delAllGuides, SIGNAL(triggered()), m_view, SLOT(slotDeleteAllGuides()));
+ m_goMenu = m_contextMenu->addMenu(i18n("Go To"));
+ connect(m_goMenu, SIGNAL(triggered(QAction*)), this, SLOT(slotGoToGuide(QAction*)));
+ setMouseTracking(true);
+}
+
+void CustomRuler::updatePalette()
+{
+ m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
+ m_zoneColor.setAlpha(180);
+}
+
+void CustomRuler::updateProjectFps(const Timecode &t)
+{
+ m_timecode = t;
+ mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
+ bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
+ update();
+}
+
+void CustomRuler::updateFrameSize()
+{
+ FRAME_SIZE = m_view->getFrameWidth();
+ littleMarkDistance = FRAME_SIZE;
+ mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
+ bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
+ updateProjectFps(m_timecode);
+ if (m_rate > 0) setPixelPerMark(m_rate);
+}
+
+void CustomRuler::slotEditGuide()
+{
+ m_view->slotEditGuide(m_clickedGuide);
+}
+
+void CustomRuler::slotDeleteGuide()
+{
+ m_view->slotDeleteGuide(m_clickedGuide);
+}
+
+void CustomRuler::slotGoToGuide(QAction *act)
+{
+ m_view->seekCursorPos(act->data().toInt());
+ m_view->initCursorPos(act->data().toInt());
+}
+
+void CustomRuler::setZone(const QPoint &p)
+{
+ m_zoneStart = p.x();
+ m_zoneEnd = p.y();
+ update();
+}
+
+void CustomRuler::mouseReleaseEvent(QMouseEvent * /*event*/)
+{
+ if (m_moveCursor == RULER_START || m_moveCursor == RULER_END || m_moveCursor == RULER_MIDDLE) {
+ emit zoneMoved(m_zoneStart, m_zoneEnd);
+ m_view->setDocumentModified();
+ }
+ m_mouseMove = NO_MOVE;
+