]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Correctly update monitor when changing a title clip duration
[kdenlive] / src / clipmanager.cpp
index 32602a7d12745da9ff839668e2d8e4034efcd662..5a7109699f50893d5661bd0d0309baaf9e433789 100644 (file)
@@ -148,13 +148,18 @@ void ClipManager::addClip(DocClipBase *clip)
     if (!gid.isEmpty() && gid.toInt() >= m_folderIdCounter) m_folderIdCounter = gid.toInt() + 1;
 }
 
-void ClipManager::slotDeleteClip(const QString &clipId)
+void ClipManager::slotDeleteClips(QStringList ids)
 {
-    DocClipBase *clip = getClipById(clipId);
-    if (clip) {
-        AddClipCommand *command = new AddClipCommand(m_doc, clip->toXML(), clipId, false);
-        m_doc->commandStack()->push(command);
+    QUndoCommand *delClips = new QUndoCommand();
+    delClips->setText(i18np("Delete clip", "Delete clips", ids.size()));
+
+    for (int i = 0; i < ids.size(); i++) {
+        DocClipBase *clip = getClipById(ids.at(i));
+        if (clip) {
+            new AddClipCommand(m_doc, clip->toXML(), ids.at(i), false, delClips);
+        }
     }
+    m_doc->commandStack()->push(delClips);
 }
 
 void ClipManager::deleteClip(const QString &clipId)
@@ -282,6 +287,7 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co
                     prod.setAttribute("in", 0);
                     int out = txtdoc.documentElement().attribute("out").toInt();
                     if (out > 0) prod.setAttribute("out", out);
+                    else prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
                 } else txtfile.close();
             }
             new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true, addClips);
@@ -322,6 +328,7 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const QSt
             prod.setAttribute("in", 0);
             int out = (int) outPos.frames(m_doc->fps());
             if (out > 0) prod.setAttribute("out", out);
+            else prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
         } else txtfile.close();
     }
     AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
@@ -514,3 +521,9 @@ void ClipManager::slotClipModified(const QString &path)
     }
 }
 
+int ClipManager::clipsCount() const
+{
+    return m_clipList.count();
+}
+
+