X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitor.cpp;h=d0f24fcf284a8444f049f7444fc96e54cad168d2;hb=1a57025e45748243a7a6075f5df0be47f8ffbce2;hp=ccdce950d04d512769f24e3f0c57e74002c80f26;hpb=d55b20cc27a1fe56da437df67c593ed76e849f22;p=kdenlive diff --git a/src/monitor.cpp b/src/monitor.cpp index ccdce950..d0f24fcf 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -52,7 +52,7 @@ Monitor::Monitor(Kdenlive::MONITORID id, MonitorManager *manager, QString profil m_currentClip(NULL), m_overlay(NULL), m_scale(1), - m_length(0), + m_length(2), m_dragStarted(false), m_contextMenu(NULL), m_effectWidget(NULL), @@ -202,7 +202,7 @@ Monitor::Monitor(Kdenlive::MONITORID id, MonitorManager *manager, QString profil m_toolbar->addWidget(spacer); m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this); m_toolbar->addWidget(m_timePos); - connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek())); + connect(m_timePos, SIGNAL(timeCodeEditingFinished()), this, SLOT(slotSeek())); m_toolbar->setMaximumHeight(s * 1.5); layout->addWidget(m_toolbar); } @@ -226,6 +226,7 @@ QWidget *Monitor::container() bool Monitor::createOpenGlWidget(QWidget *parent, const QString profile) { render = new Render(id(), 0, profile, this); + kDebug()<<"+++++++++++++\nCREATED OPENGL WIDG\n++++++++++++++"; m_glWidget = new VideoGLWidget(parent); if (m_glWidget == NULL) { // Creation failed, we are in trouble... @@ -366,8 +367,8 @@ void Monitor::updateMarkers(DocClipBase *source) QAction *go = m_markerMenu->addAction(position); go->setData(pos); } - m_ruler->setMarkers(marks); - } else m_ruler->setMarkers(QList ()); + } + m_ruler->setMarkers(markers); m_markerMenu->setEnabled(!m_markerMenu->isEmpty()); } } @@ -417,24 +418,24 @@ GenTime Monitor::getSnapForPos(bool previous) void Monitor::slotZoneMoved(int start, int end) { m_ruler->setZone(start, end); - checkOverlay(); setClipZone(m_ruler->zone()); + checkOverlay(); } void Monitor::slotSetZoneStart() { m_ruler->setZoneStart(); emit zoneUpdated(m_ruler->zone()); - checkOverlay(); setClipZone(m_ruler->zone()); + checkOverlay(); } void Monitor::slotSetZoneEnd() { m_ruler->setZoneEnd(); emit zoneUpdated(m_ruler->zone()); - checkOverlay(); setClipZone(m_ruler->zone()); + checkOverlay(); } // virtual @@ -469,8 +470,9 @@ void Monitor::mouseReleaseEvent(QMouseEvent * event) if (isActive()) slotPlay(); else slotActivateMonitor(); } //else event->ignore(); //QWidget::mouseReleaseEvent(event); - m_dragStarted = false; } + m_dragStarted = false; + event->accept(); } // virtual @@ -499,9 +501,9 @@ void Monitor::mouseMoveEvent(QMouseEvent *event) drag->setPixmap(pix); drag->setHotSpot(QPoint(0, 50));*/ drag->start(Qt::MoveAction); - - //Qt::DropAction dropAction; - //dropAction = drag->start(Qt::CopyAction | Qt::MoveAction); + /*Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction); + Qt::DropAction dropAction; + dropAction = drag->start(Qt::CopyAction | Qt::MoveAction);*/ //Qt::DropAction dropAction = drag->exec(); @@ -509,6 +511,7 @@ void Monitor::mouseMoveEvent(QMouseEvent *event) //event->accept(); } + /*void Monitor::dragMoveEvent(QDragMoveEvent * event) { event->setDropAction(Qt::IgnoreAction); event->setDropAction(Qt::MoveAction); @@ -620,7 +623,7 @@ void Monitor::checkOverlay() { if (m_overlay == NULL) return; QString overlayText; - int pos = render->seekFramePosition(); + int pos = m_timePos->getValue();//render->seekFramePosition(); QPoint zone = m_ruler->zone(); if (pos == zone.x()) overlayText = i18n("In Point"); @@ -672,8 +675,20 @@ void Monitor::slotRewind(double speed) slotActivateMonitor(); if (speed == 0) { double currentspeed = render->playSpeed(); - if (currentspeed >= 0) render->play(-2); - else render->play(currentspeed * 2); + if (currentspeed >= 0) render->play(-1); + else switch((int) currentspeed) { + case -1: + render->play(-2); + break; + case -2: + render->play(-3); + break; + case -3: + render->play(-5); + break; + default: + render->play(-8); + } } else render->play(speed); //m_playAction->setChecked(true); m_playAction->setIcon(m_pauseIcon); @@ -684,8 +699,20 @@ void Monitor::slotForward(double speed) slotActivateMonitor(); if (speed == 0) { double currentspeed = render->playSpeed(); - if (currentspeed <= 1) render->play(2); - else render->play(currentspeed * 2); + if (currentspeed <= 0) render->play(1); + else switch((int) currentspeed) { + case 1: + render->play(2); + break; + case 2: + render->play(3); + break; + case 3: + render->play(5); + break; + default: + render->play(8); + } } else render->play(speed); //m_playAction->setChecked(true); m_playAction->setIcon(m_pauseIcon); @@ -710,16 +737,16 @@ void Monitor::slotForwardOneFrame(int diff) void Monitor::seekCursor(int pos) { if (m_ruler->slotNewValue(pos)) { - checkOverlay(); m_timePos->setValue(pos); + checkOverlay(); } } void Monitor::rendererStopped(int pos) { if (m_ruler->slotNewValue(pos)) { - checkOverlay(); m_timePos->setValue(pos); + checkOverlay(); } m_playAction->setIcon(m_playIcon); } @@ -742,7 +769,7 @@ void Monitor::stop() void Monitor::start() { if (!isVisible() || !isActive()) return; - if (render) render->doRefresh();// start(); + if (render) render->startConsumer(); } void Monitor::refreshMonitor(bool visible) @@ -779,12 +806,13 @@ void Monitor::slotPlay() { if (render == NULL) return; slotActivateMonitor(); - if (render->playSpeed() == 0.0) { + if (render->isPlaying()) { + m_playAction->setIcon(m_playIcon); + render->switchPlay(false); + } + else { m_playAction->setIcon(m_pauseIcon); render->switchPlay(true); - } else { - m_playAction->setIcon(m_playIcon); - render->switchPlay(false); } m_ruler->refreshRuler(); } @@ -829,6 +857,7 @@ void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, bool forceUpda { if (render == NULL) return; if (clip == NULL && m_currentClip != NULL) { + m_currentClip->lastSeekPosition = render->seekFramePosition(); kDebug()<<"// SETTING NULL CLIP MONITOR"; m_currentClip = NULL; m_length = -1; @@ -837,8 +866,9 @@ void Monitor::slotSetClipProducer(DocClipBase *clip, QPoint zone, bool forceUpda } if (clip != m_currentClip || forceUpdate) { + if (m_currentClip) m_currentClip->lastSeekPosition = render->seekFramePosition(); m_currentClip = clip; - if (m_currentClip) slotActivateMonitor(); + if (position == -1) position = clip->lastSeekPosition; updateMarkers(clip); Mlt::Producer *prod = NULL; if (clip) prod = clip->getCloneProducer(); @@ -1099,6 +1129,7 @@ Overlay::Overlay(QWidget* parent) : setBackgroundRole(QPalette::Base); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); setCursor(Qt::PointingHandCursor); + } // virtual @@ -1123,11 +1154,11 @@ void Overlay::mouseDoubleClickEvent ( QMouseEvent * event ) void Overlay::setOverlayText(const QString &text, bool isZone) { if (text.isEmpty()) { - QPalette p; + /*QPalette p; p.setColor(QPalette::Base, KdenliveSettings::window_background()); setPalette(p); setText(QString()); - repaint(); + repaint();*/ setHidden(true); return; }