- connect(m_clipMonitor, SIGNAL(blockMonitors()), this, SLOT(slotBlockMonitors()));
- connect(m_projectMonitor, SIGNAL(blockMonitors()), this, SLOT(slotBlockMonitors()));
-}
-
-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);
+
+ connect(m_clipMonitor->render, SIGNAL(activateMonitor(Kdenlive::MonitorId)), this, SLOT(activateMonitor(Kdenlive::MonitorId)));
+ connect(m_projectMonitor->render, SIGNAL(activateMonitor(Kdenlive::MonitorId)), this, SLOT(activateMonitor(Kdenlive::MonitorId)));
+
+ m_monitorsList.append(clipMonitor);
+ m_monitorsList.append(projectMonitor);
+ if (recMonitor)
+ m_monitorsList.append(recMonitor);
+}
+
+void MonitorManager::appendMonitor(AbstractMonitor *monitor)
+{
+ if (!m_monitorsList.contains(monitor)) m_monitorsList.append(monitor);
+}
+
+void MonitorManager::removeMonitor(AbstractMonitor *monitor)
+{
+ m_monitorsList.removeAll(monitor);
+}
+
+AbstractMonitor* MonitorManager::monitor(Kdenlive::MonitorId monitorName)
+{
+ AbstractMonitor *monitor = NULL;
+ for (int i = 0; i < m_monitorsList.size(); ++i) {
+ if (m_monitorsList[i]->id() == monitorName) {
+ monitor = m_monitorsList.at(i);
+ }