]> git.sesse.net Git - kdenlive/blobdiff - src/kdenlivedoc.cpp
Add subclips (dragging a zone from clip monitor to project tree)
[kdenlive] / src / kdenlivedoc.cpp
index ad0ab37c8416eb718b86b62afe6dea94decbf022..4df0fcf2d2d23e8a0b93f7f115d334b320ea3704 100644 (file)
@@ -45,7 +45,7 @@
 
 #include <mlt++/Mlt.h>
 
-const double DOCUMENTVERSION = 0.84;
+const double DOCUMENTVERSION = 0.85;
 
 KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, MainWindow *parent) :
         QObject(parent),
@@ -55,8 +55,6 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
         m_commandStack(new QUndoStack(undoGroup)),
         m_modified(false),
         m_projectFolder(projectFolder),
-        m_documentLoadingStep(0.0),
-        m_documentLoadingProgress(0),
         m_abortLoading(false)
 {
     m_clipManager = new ClipManager(this);
@@ -85,11 +83,13 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
             if (!success) // It is corrupted
                 KMessageBox::error(parent, errorMsg);
             else {
+                parent->slotGotProgressInfo(i18n("Validating"), 0);
                 DocumentValidator validator(m_document);
                 success = validator.isProject();
-                if (!success) // It is not a project file
-                    parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file.", m_url.path()), 100);
-                else {
+                if (!success) {
+                    // It is not a project file
+                    parent->slotGotProgressInfo(i18n("File %1 is not a Kdenlive project file", m_url.path()), 0);
+                } else {
                     /*
                      * Validate the file against the current version (upgrade
                      * and recover it if needed). It is NOT a passive operation
@@ -97,6 +97,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                     // TODO: backup the document or alert the user?
                     success = validator.validate(DOCUMENTVERSION);
                     if (success) { // Let the validator handle error messages
+                        parent->slotGotProgressInfo(i18n("Loading"), 0);
                         QDomElement mlt = m_document.firstChildElement("mlt");
                         QDomElement infoXml = mlt.firstChildElement("kdenlivedoc");
 
@@ -130,29 +131,19 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                         }
                         QDomNodeList producers = m_document.elementsByTagName("producer");
                         QDomNodeList infoproducers = m_document.elementsByTagName("kdenlive_producer");
+                        parent->slotGotProgressInfo(i18n("Check missing clips"), 0);
                         if (checkDocumentClips(infoproducers) == false) m_abortLoading = true;
                         const int max = producers.count();
                         const int infomax = infoproducers.count();
 
-                        QDomNodeList folders = m_document.elementsByTagName("folder");
+                        QDomNodeList                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    folders = m_document.elementsByTagName("folder");
                         for (int i = 0; i < folders.count(); i++) {
                             e = folders.item(i).cloneNode().toElement();
                             m_clipManager->addFolder(e.attribute("id"), e.attribute("name"));
                         }
 
-                        if (max > 0) {
-                            m_documentLoadingStep = 100.0 / (max + infomax + m_document.elementsByTagName("entry").count());
-                            parent->slotGotProgressInfo(i18n("Loading project clips"), (int) m_documentLoadingProgress);
-                        }
-
-
                         for (int i = 0; i < infomax && !m_abortLoading; i++) {
                             e = infoproducers.item(i).cloneNode().toElement();
-                            if (m_documentLoadingStep > 0) {
-                                m_documentLoadingProgress += m_documentLoadingStep;
-                                parent->slotGotProgressInfo(QString(), (int) m_documentLoadingProgress);
-                                //qApp->processEvents();
-                            }
                             QString prodId = e.attribute("id");
                             if (!e.isNull() && prodId != "black" && !prodId.startsWith("slowmotion") && !m_abortLoading) {
                                 e.setTagName("producer");
@@ -249,7 +240,7 @@ KdenliveDoc::~KdenliveDoc()
 
 int KdenliveDoc::setSceneList()
 {
-    m_render->resetProfile();
+    m_render->resetProfile(KdenliveSettings::current_profile());
     if (m_render->setSceneList(m_document.toString(), m_documentProperties.value("position").toInt()) == -1) {
         // INVALID MLT Consumer, something is wrong
         return -1;
@@ -257,7 +248,6 @@ int KdenliveDoc::setSceneList()
     m_documentProperties.remove("position");
     // m_document xml is now useless, clear it
     m_document.clear();
-    checkProjectClips();
     return 0;
 }
 
@@ -721,12 +711,6 @@ void KdenliveDoc::setThumbsProgress(const QString &message, int progress)
     emit progressInfo(message, progress);
 }
 
-void KdenliveDoc::loadingProgressed()
-{
-    m_documentLoadingProgress += m_documentLoadingStep;
-    emit progressInfo(QString(), (int) m_documentLoadingProgress);
-}
-
 QUndoStack *KdenliveDoc::commandStack()
 {
     return m_commandStack;
@@ -937,7 +921,6 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem)
     }
 }
 
-
 void KdenliveDoc::setNewClipResource(const QString &id, const QString &path)
 {
     QDomNodeList prods = m_document.elementsByTagName("producer");
@@ -1030,12 +1013,12 @@ void KdenliveDoc::addClipInfo(QDomElement elem, QDomElement orig, QString clipId
     }
 }
 
-void KdenliveDoc::deleteProjectClip(QList <QString> ids)
+void KdenliveDoc::deleteProjectClip(QStringList ids)
 {
     for (int i = 0; i < ids.size(); ++i) {
         emit deleteTimelineClip(ids.at(i));
-        m_clipManager->slotDeleteClip(ids.at(i));
     }
+    m_clipManager->slotDeleteClips(ids);
     setModified(true);
 }
 
@@ -1047,7 +1030,7 @@ void KdenliveDoc::deleteClip(const QString &clipId)
 void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId)
 {
     m_clipManager->slotAddClipList(urls, group, groupId);
-    emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
+    //emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
     setModified(true);
 }