X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitormanager.cpp;h=b8827fac124f51932505a4aaf4d4661ce843f7e3;hb=459decee5e330552ef73b7cb363dbbe38fdc7e87;hp=5c676a66176584ea984b8537ad658aab79529a47;hpb=75644832139542d01f5db11bbfdf5b3105007626;p=kdenlive diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index 5c676a66..b8827fac 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -18,69 +18,159 @@ ***************************************************************************/ +#include "monitormanager.h" +#include "kdenlivesettings.h" + +#include + #include #include -#include "monitormanager.h" -#include -MonitorManager::MonitorManager(QWidget *parent) - : QObject(parent) +MonitorManager::MonitorManager(QWidget *parent) : + QObject(parent), + m_clipMonitor(NULL), + m_projectMonitor(NULL), + m_blocked(false) +{ +} + +Timecode MonitorManager::timecode() +{ + return m_timecode; +} + +void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) { + m_clipMonitor = clipMonitor; + m_projectMonitor = projectMonitor; +} +void MonitorManager::activateMonitor(QString name) +{ + if (m_blocked || m_clipMonitor == NULL) return; + if (m_activeMonitor == name) return; + if (name == "clip") { + m_projectMonitor->stop(); + m_clipMonitor->start(); + emit raiseClipMonitor(true); + } else { + m_clipMonitor->stop(); + m_projectMonitor->start(); + m_projectMonitor->raise(); + emit raiseClipMonitor(false); + } + m_activeMonitor = name; +} +void MonitorManager::slotSwitchMonitors() +{ + if (m_blocked || m_clipMonitor == NULL) return; + if (m_clipMonitor->isActive()) { + m_clipMonitor->stop(); + m_projectMonitor->start(); + m_projectMonitor->raise(); + m_activeMonitor = m_projectMonitor->name(); + emit raiseClipMonitor(false); + } else { + m_projectMonitor->stop(); + m_clipMonitor->start(); + m_activeMonitor = m_clipMonitor->name(); + emit raiseClipMonitor(true); + } } -void MonitorManager::setTimecode(Timecode tc) +void MonitorManager::stopActiveMonitor() { - m_timecode = tc; + if (m_blocked) return; + if (m_clipMonitor->isActive()) m_clipMonitor->pause(); + else m_projectMonitor->pause(); } -Timecode MonitorManager::timecode() +void MonitorManager::slotPlay() { - return m_timecode; + if (m_clipMonitor->isActive()) m_clipMonitor->slotPlay(); + else m_projectMonitor->slotPlay(); } -void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) +void MonitorManager::slotPlayZone() { - m_clipMonitor = clipMonitor; - m_projectMonitor = projectMonitor; - //QTimer::singleShot(1750, this, SLOT(initClipMonitor())); - initClipMonitor(); - //initProjectMonitor(); + if (m_clipMonitor->isActive()) m_clipMonitor->slotPlayZone(); + else m_projectMonitor->slotPlayZone(); } -void MonitorManager::initClipMonitor() +void MonitorManager::slotLoopZone() { - m_clipMonitor->initMonitor(); - emit connectMonitors(); - //initProjectMonitor(); - //QTimer::singleShot(1500, this, SLOT(initProjectMonitor())); + if (m_clipMonitor->isActive()) m_clipMonitor->slotLoopZone(); + else m_projectMonitor->slotLoopZone(); } -void MonitorManager::initProjectMonitor() +void MonitorManager::slotRewind(double speed) { - //m_clipMonitor->stop(); - m_projectMonitor->initMonitor(); - // activateMonitor("project"); - emit connectMonitors(); + if (m_clipMonitor->isActive()) m_clipMonitor->slotRewind(speed); + else m_projectMonitor->slotRewind(speed); } -void MonitorManager::activateMonitor(QString name) +void MonitorManager::slotForward(double speed) { - if (m_activeMonitor == name) return; - if (name == "clip") { - m_projectMonitor->stop(); - m_clipMonitor->start(); - emit raiseClipMonitor(true); - } - else { - m_clipMonitor->stop(); - m_projectMonitor->start(); - m_projectMonitor->raise(); - emit raiseClipMonitor(false); - } - m_activeMonitor = name; + if (m_clipMonitor->isActive()) m_clipMonitor->slotForward(speed); + else m_projectMonitor->slotForward(speed); } +void MonitorManager::slotRewindOneFrame() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotRewindOneFrame(); + else m_projectMonitor->slotRewindOneFrame(); +} + +void MonitorManager::slotForwardOneFrame() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotForwardOneFrame(); + else m_projectMonitor->slotForwardOneFrame(); +} + +void MonitorManager::slotRewindOneSecond() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotRewindOneFrame(m_timecode.fps()); + else m_projectMonitor->slotRewindOneFrame(m_timecode.fps()); +} + +void MonitorManager::slotForwardOneSecond() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotForwardOneFrame(m_timecode.fps()); + else m_projectMonitor->slotForwardOneFrame(m_timecode.fps()); +} + +void MonitorManager::slotStart() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotStart(); + else m_projectMonitor->slotStart(); +} + +void MonitorManager::slotEnd() +{ + if (m_clipMonitor->isActive()) m_clipMonitor->slotEnd(); + else m_projectMonitor->slotEnd(); +} + +void MonitorManager::resetProfiles(Timecode tc) +{ + if (m_blocked) return; + m_timecode = tc; + slotResetProfiles(); + //QTimer::singleShot(300, this, SLOT(slotResetProfiles())); +} + +void MonitorManager::slotResetProfiles() +{ + if (m_blocked) return; + if (m_projectMonitor == NULL || m_clipMonitor == NULL) return; + activateMonitor("clip"); + m_clipMonitor->resetProfile(KdenliveSettings::current_profile()); + activateMonitor("project"); + m_projectMonitor->resetProfile(KdenliveSettings::current_profile()); + //m_projectMonitor->refreshMonitor(true); +} + + #include "monitormanager.moc"