layout->addWidget(m_ruler);
connect(m_audioSlider, SIGNAL(valueChanged(int)), this, SLOT(slotSetVolume(int)));
- connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int)));
connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int)));
connect(render, SIGNAL(rendererStopped(int)), this, SLOT(rendererStopped(int)));
connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int)));
void Monitor::seekCursor(int pos)
{
- //slotActivateMonitor();
if (m_ruler->slotNewValue(pos)) {
checkOverlay();
m_timePos->setValue(pos);
,m_maxval(25)
,m_manager(manager)
,m_render(render)
+ ,m_lastSeekPosition(SEEK_INACTIVE)
{
m_zoneStart = 10;
m_zoneEnd = 60;
updatePixmap();
} else {
- emit seekRenderer((int) pos);
+ m_render->seekToFrame(pos);
+ m_lastSeekPosition = pos;
+ update();
}
}
{
const int pos = event->x() / m_scale;
if (event->buttons() & Qt::LeftButton) {
- emit seekRenderer((int) pos);
+ m_render->seekToFrame(pos);
+ m_lastSeekPosition = pos;
update();
}
else {
bool SmallRuler::slotNewValue(int value)
{
- /*if (value == m_cursorFramePosition) return false;
+ if (m_render->requestedSeekPosition != SEEK_INACTIVE) {
+ m_lastSeekPosition = m_render->requestedSeekPosition;
+ if (value == m_lastSeekPosition) m_lastSeekPosition = SEEK_INACTIVE;
+ }
+ if (value == m_cursorFramePosition) return false;
m_cursorFramePosition = value;
- int oldPos = m_cursorPosition;
+ /*int oldPos = m_cursorPosition;
m_cursorPosition = value * m_scale;
const int offset = 6;
const int x = qMin(oldPos, m_cursorPosition);
{
m_pixmap = QPixmap(width(), height());
m_pixmap.fill(palette().window().color());
+ m_lastSeekPosition = SEEK_INACTIVE;
QPainter p(&m_pixmap);
double f, fend;
p.setClipRect(r);
p.drawPixmap(QPointF(), m_pixmap);
- int cursorPos = m_render->seekFramePosition() * m_scale;
+ int cursorPos = m_cursorFramePosition * m_scale;
// draw pointer
QPolygon pa(3);
pa.setPoints(3, cursorPos - 6, 10, cursorPos + 6, 10, cursorPos/*+0*/, 4);
p.drawPolygon(pa);
// Draw seeking pointer
- if (m_render->requestedSeekPosition != SEEK_INACTIVE) {
- int seekPos = m_render->requestedSeekPosition * m_scale - 1;
- p.fillRect(seekPos, 0, 3, height(), palette().highlight());
+ if (m_lastSeekPosition != SEEK_INACTIVE && m_lastSeekPosition != m_cursorFramePosition) {
+ p.fillRect(m_lastSeekPosition * m_scale - 1, 0, 3, height(), palette().highlight());
}
}