]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Introducing template based title clips
[kdenlive] / src / clipmanager.cpp
index b591d8f00fc92a55578402208d79f2ff83451898..c44367777597311faa5d466cb02ef18f9fd1b6c2 100644 (file)
@@ -144,12 +144,10 @@ void ClipManager::addClip(DocClipBase *clip)
 
 void ClipManager::slotDeleteClip(const QString &clipId)
 {
-    for (int i = 0; i < m_clipList.count(); i++) {
-        if (m_clipList.at(i)->getId() == clipId) {
-            AddClipCommand *command = new AddClipCommand(m_doc, m_clipList.at(i)->toXML(), clipId, false);
-            m_doc->commandStack()->push(command);
-            break;
-        }
+    DocClipBase *clip = getClipById(clipId);
+    if (clip) {
+        AddClipCommand *command = new AddClipCommand(m_doc, clip->toXML(), clipId, false);
+        m_doc->commandStack()->push(command);
     }
 }
 
@@ -157,9 +155,7 @@ void ClipManager::deleteClip(const QString &clipId)
 {
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
-            DocClipBase *clip = m_clipList.takeAt(i);
-            delete clip;
-            clip = NULL;
+            delete m_clipList.takeAt(i);
             break;
         }
     }
@@ -355,6 +351,28 @@ void ClipManager::slotAddTextClipFile(const QString titleName, const QString ima
     m_doc->commandStack()->push(command);
 }
 
+void ClipManager::slotAddTextTemplateClip(QString titleName, const QString imagePath, const KUrl path, const QString group, const QString &groupId)
+{
+    QDomDocument doc;
+    QDomElement prod = doc.createElement("producer");
+    doc.appendChild(prod);
+    prod.setAttribute("resource", imagePath);
+    prod.setAttribute("name", titleName);
+    prod.setAttribute("xmltemplate", path.path());
+    uint id = m_clipIdCounter++;
+    prod.setAttribute("id", QString::number(id));
+    if (!group.isEmpty()) {
+        prod.setAttribute("groupname", group);
+        prod.setAttribute("groupid", groupId);
+    }
+    prod.setAttribute("type", (int) TEXT);
+    prod.setAttribute("transparency", "1");
+    prod.setAttribute("in", "0");
+    prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
+    AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
+    m_doc->commandStack()->push(command);
+}
+
 int ClipManager::getFreeClipId()
 {
     return m_clipIdCounter++;