m_timecode(tc),
m_view(parent),
m_duration(0),
- m_offset(0)
+ m_offset(0),
+ m_clickedGuide(-1)
{
setFont(KGlobalSettings::toolBarFont());
m_scale = 3;
m_contextMenu = new QMenu(this);
QAction *addGuide = m_contextMenu->addAction(KIcon("document-new"), i18n("Add Guide"));
connect(addGuide, SIGNAL(triggered()), m_view, SLOT(slotAddGuide()));
- QAction *editGuide = m_contextMenu->addAction(KIcon("document-properties"), i18n("Edit Guide"));
- connect(editGuide, SIGNAL(triggered()), m_view, SLOT(slotEditGuide()));
- QAction *delGuide = m_contextMenu->addAction(KIcon("edit-delete"), i18n("Delete Guide"));
- connect(delGuide, SIGNAL(triggered()), m_view, SLOT(slotDeleteGuide()));
+ 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()));
setMouseTracking(true);
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);
+}
+
+void CustomRuler::slotDeleteGuide()
+{
+ m_view->slotDeleteGuide(m_clickedGuide);
+}
+
void CustomRuler::setZone(QPoint p)
{
int min = qMin(m_zoneStart, p.x());
// virtual
void CustomRuler::mousePressEvent(QMouseEvent * event)
{
+ int pos = (int)((event->x() + offset()));
if (event->button() == Qt::RightButton) {
+ m_clickedGuide = m_view->hasGuide((int)(pos / m_factor), (int)(5 / m_factor + 1));
+ m_editGuide->setEnabled(m_clickedGuide > 0);
+ m_deleteGuide->setEnabled(m_clickedGuide > 0);
m_contextMenu->exec(event->globalPos());
return;
}
+ setFocus(Qt::MouseFocusReason);
m_view->activateMonitor();
- int pos = (int)((event->x() + offset()));
m_moveCursor = RULER_CURSOR;
if (event->y() > 10) {
if (qAbs(pos - m_zoneStart * m_factor) < 4) m_moveCursor = RULER_START;
} 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());
+ }
}
}
m_scale = 1.0 / (double) scale;
double fend = m_scale * littleMarkDistance;
if (rate > 8) {
- mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 60;
- bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 300;
- }
- else if (rate > 6) {
- mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 10;
- bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 30;
- }
- else if (rate > 3) {
- mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps();
- bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 5;
- }
- else {
- mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps();
- bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 60;
+ mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 60;
+ bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 300;
+ } else if (rate > 6) {
+ mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 10;
+ bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 30;
+ } else if (rate > 3) {
+ mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps();
+ bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 5;
+ } else {
+ mediumMarkDistance = (double) FRAME_SIZE * m_timecode.fps();
+ bigMarkDistance = (double) FRAME_SIZE * m_timecode.fps() * 60;
}
switch ((int) rate) {
case 0:
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);
}
// draw the little marks
fend = m_scale * littleMarkDistance;
if (fend > 5) for (f = offsetmin - m_offset; f < offsetmax - m_offset; f += fend)
- p.drawLine((int)f, LITTLE_MARK_X1, (int)f, LITTLE_MARK_X2);
+ p.drawLine((int)f, LITTLE_MARK_X1, (int)f, LITTLE_MARK_X2);
offsetmin = (e->rect().left() + m_offset) / mediumMarkDistance;
offsetmin = offsetmin * mediumMarkDistance;
// draw medium marks
fend = m_scale * mediumMarkDistance;
if (fend > 5) for (f = offsetmin - m_offset - fend; f < offsetmax - m_offset + fend; f += fend)
- p.drawLine((int)f, MIDDLE_MARK_X1, (int)f, MIDDLE_MARK_X2);
+ p.drawLine((int)f, MIDDLE_MARK_X1, (int)f, MIDDLE_MARK_X2);
offsetmin = (e->rect().left() + m_offset) / bigMarkDistance;
offsetmin = offsetmin * bigMarkDistance;
// draw big marks
fend = m_scale * bigMarkDistance;
if (fend > 5) for (f = offsetmin - m_offset; f < offsetmax - m_offset; f += fend)
- p.drawLine((int)f, BIG_MARK_X1, (int)f, BIG_MARK_X2);
+ p.drawLine((int)f, BIG_MARK_X1, (int)f, BIG_MARK_X2);
// draw zone cursors
int off = offset();
}
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);