]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
edit and delete markers
[kdenlive] / src / clipmanager.cpp
index b8ec826338299dbcea35db22443ba077bd75171c..7eb4145b93ef2dd6872322700a8ad1fa088df9fc 100644 (file)
@@ -42,8 +42,8 @@ void ClipManager::checkAudioThumbs() {
     }
 }
 
-void ClipManager::setThumbsProgress(KUrl url, int progress) {
-    m_doc->setThumbsProgress(url, progress);
+void ClipManager::setThumbsProgress(const QString &message, int progress) {
+    m_doc->setThumbsProgress(message, progress);
 }
 
 QList <DocClipBase*> ClipManager::documentClipList() {
@@ -52,12 +52,13 @@ QList <DocClipBase*> ClipManager::documentClipList() {
 
 void ClipManager::addClip(DocClipBase *clip) {
     m_clipList.append(clip);
+    int id = clip->getId();
+    if (id >= m_clipIdCounter) m_clipIdCounter = id + 1;
 }
 
 void ClipManager::slotDeleteClip(uint clipId) {
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
-            //m_clipList.removeAt(i);
             AddClipCommand *command = new AddClipCommand(m_doc, m_clipList.at(i)->toXML(), clipId, false);
             m_doc->commandStack()->push(command);
             break;
@@ -79,24 +80,27 @@ DocClipBase *ClipManager::getClipAt(int pos) {
 }
 
 DocClipBase *ClipManager::getClipById(int clipId) {
-    kDebug() << "++++  CLIP MAN, LOOKING FOR CLIP ID: " << clipId;
+    //kDebug() << "++++  CLIP MAN, LOOKING FOR CLIP ID: " << clipId;
     for (int i = 0; i < m_clipList.count(); i++) {
         if (m_clipList.at(i)->getId() == clipId) {
-            kDebug() << "++++  CLIP MAN, FOUND FOR CLIP ID: " << clipId;
+            //kDebug() << "++++  CLIP MAN, FOUND FOR CLIP ID: " << clipId;
             return m_clipList.at(i);
         }
     }
     return NULL;
 }
 
-void ClipManager::slotAddClipFile(const KUrl url, const QString group) {
+void ClipManager::slotAddClipFile(const KUrl url, const QString group, const int groupId) {
     kDebug() << "/////  CLIP MANAGER, ADDING CLIP: " << url;
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     prod.setAttribute("resource", url.path());
     uint id = m_clipIdCounter++;
     prod.setAttribute("id", QString::number(id));
-    if (!group.isEmpty()) prod.setAttribute("group", group);
+    if (!group.isEmpty()) {
+        prod.setAttribute("groupname", group);
+        prod.setAttribute("groupid", groupId);
+    }
     KMimeType::Ptr type = KMimeType::findByUrl(url);
     if (type->name().startsWith("image/")) {
         prod.setAttribute("type", (int) IMAGE);
@@ -107,7 +111,7 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group) {
     m_doc->commandStack()->push(command);
 }
 
-void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group) {
+void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const int groupId) {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
     prod.setAttribute("mlt_service", "colour");
@@ -118,7 +122,57 @@ void ClipManager::slotAddColorClipFile(const QString name, const QString color,
     prod.setAttribute("in", "0");
     prod.setAttribute("out", m_doc->getFramePos(duration));
     prod.setAttribute("name", name);
+    if (!group.isEmpty()) {
+        prod.setAttribute("groupname", group);
+        prod.setAttribute("groupid", groupId);
+    }
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    m_doc->commandStack()->push(command);
+}
+
+void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, QString group, const int groupId) {
+    QDomDocument doc;
+    QDomElement prod = doc.createElement("producer");
+    prod.setAttribute("resource", path);
+    prod.setAttribute("type", (int) SLIDESHOW);
+    uint id = m_clipIdCounter++;
+    prod.setAttribute("id", QString::number(id));
+    prod.setAttribute("in", "0");
+    prod.setAttribute("out", m_doc->getFramePos(duration) * count);
+    prod.setAttribute("ttl", m_doc->getFramePos(duration));
+    prod.setAttribute("name", name);
+    prod.setAttribute("loop", loop);
+    if (!group.isEmpty()) {
+        prod.setAttribute("groupname", group);
+        prod.setAttribute("groupid", groupId);
+    }
+    AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
+    m_doc->commandStack()->push(command);
+}
+
+
+
+void ClipManager::slotAddTextClipFile(const QString path, const QString group, const int groupId) {
+    kDebug() << "/////  CLIP MANAGER, ADDING CLIP: " << path;
+    QDomDocument doc;
+    QDomElement prod = doc.createElement("producer");
+    prod.setAttribute("resource", path + ".png");
+    prod.setAttribute("xml", 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("in", "0");
+    prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()));
     AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
     m_doc->commandStack()->push(command);
 }
 
+int ClipManager::getFreeClipId() {
+    return m_clipIdCounter++;
+}
+
+