X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitormanager.cpp;h=b52c4dbd6106a40cacbb7d5cffa5819a48eb5dbf;hb=73e4527d1abd954f088b317e59c8f0cfc1cd2e16;hp=c620ece28ced9d1f7ac9bb58d56903cb24e7f870;hpb=cd85961a9520f2f3c909e889dacd8de539468b89;p=kdenlive diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index c620ece2..b52c4dbd 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -27,20 +27,30 @@ #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() { +Timecode MonitorManager::timecode() +{ return m_timecode; } -void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) { +void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) +{ m_clipMonitor = clipMonitor; m_projectMonitor = projectMonitor; + connect(m_clipMonitor, SIGNAL(blockMonitors()), this, SLOT(slotBlockMonitors())); + connect(m_projectMonitor, SIGNAL(blockMonitors()), this, SLOT(slotBlockMonitors())); } -void MonitorManager::activateMonitor(QString name) { +void MonitorManager::activateMonitor(QString name) +{ + if (m_blocked) return; if (m_activeMonitor == name) return; if (name == "clip") { m_projectMonitor->stop(); @@ -55,7 +65,9 @@ void MonitorManager::activateMonitor(QString name) { m_activeMonitor = name; } -void MonitorManager::switchMonitors() { +void MonitorManager::switchMonitors() +{ + if (m_blocked) return; if (m_clipMonitor->isActive()) { m_clipMonitor->stop(); m_projectMonitor->start(); @@ -70,72 +82,90 @@ void MonitorManager::switchMonitors() { } } -void MonitorManager::stopActiveMonitor() { +void MonitorManager::stopActiveMonitor() +{ + if (m_blocked) return; if (m_clipMonitor->isActive()) m_clipMonitor->pause(); else m_projectMonitor->pause(); } -void MonitorManager::slotPlay() { +void MonitorManager::slotPlay() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotPlay(); else m_projectMonitor->slotPlay(); } -void MonitorManager::slotPlayZone() { +void MonitorManager::slotPlayZone() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotPlayZone(); else m_projectMonitor->slotPlayZone(); } -void MonitorManager::slotLoopZone() { +void MonitorManager::slotLoopZone() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotLoopZone(); else m_projectMonitor->slotLoopZone(); } -void MonitorManager::slotRewind(double speed) { +void MonitorManager::slotRewind(double speed) +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotRewind(speed); else m_projectMonitor->slotRewind(speed); } -void MonitorManager::slotForward(double speed) { +void MonitorManager::slotForward(double speed) +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotForward(speed); else m_projectMonitor->slotForward(speed); } -void MonitorManager::slotRewindOneFrame() { +void MonitorManager::slotRewindOneFrame() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotRewindOneFrame(); else m_projectMonitor->slotRewindOneFrame(); } -void MonitorManager::slotForwardOneFrame() { +void MonitorManager::slotForwardOneFrame() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotForwardOneFrame(); else m_projectMonitor->slotForwardOneFrame(); } -void MonitorManager::slotRewindOneSecond() { +void MonitorManager::slotRewindOneSecond() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotRewindOneFrame(m_timecode.fps()); else m_projectMonitor->slotRewindOneFrame(m_timecode.fps()); } -void MonitorManager::slotForwardOneSecond() { +void MonitorManager::slotForwardOneSecond() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotForwardOneFrame(m_timecode.fps()); else m_projectMonitor->slotForwardOneFrame(m_timecode.fps()); } -void MonitorManager::slotStart() { +void MonitorManager::slotStart() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotStart(); else m_projectMonitor->slotStart(); } -void MonitorManager::slotEnd() { +void MonitorManager::slotEnd() +{ if (m_clipMonitor->isActive()) m_clipMonitor->slotEnd(); else m_projectMonitor->slotEnd(); } -void MonitorManager::resetProfiles(Timecode tc) { +void MonitorManager::resetProfiles(Timecode tc) +{ + if (m_blocked) return; m_timecode = tc; QTimer::singleShot(300, this, SLOT(slotResetProfiles())); } -void MonitorManager::slotResetProfiles() { +void MonitorManager::slotResetProfiles() +{ + if (m_blocked) return; + if (m_projectMonitor == NULL || m_clipMonitor == NULL) return; activateMonitor("clip"); m_clipMonitor->resetProfile(); activateMonitor("project"); @@ -143,4 +173,17 @@ void MonitorManager::slotResetProfiles() { //m_projectMonitor->refreshMonitor(true); } +void MonitorManager::slotBlockMonitors() +{ + m_blocked = true; + if (m_clipMonitor) { + m_clipMonitor->blockSignals(true); + m_clipMonitor->setEnabled(false); + } + if (m_projectMonitor) { + m_projectMonitor->blockSignals(true); + m_projectMonitor->setEnabled(false); + } +} + #include "monitormanager.moc"