]> git.sesse.net Git - kdenlive/commitdiff
Show progress while loading project
authorTill Theato <root@ttill.de>
Sun, 10 Oct 2010 10:21:56 +0000 (10:21 +0000)
committerTill Theato <root@ttill.de>
Sun, 10 Oct 2010 10:21:56 +0000 (10:21 +0000)
svn path=/trunk/kdenlive/; revision=4977

src/kdenlivedoc.cpp
src/kdenlivedoc.h
src/mainwindow.cpp

index 36e3188a6c00aeec5ce5d0d15b1dc103f819658f..d0aae8bbb852389f047144302604f987b8b17e3c 100644 (file)
@@ -50,7 +50,7 @@
 
 const double DOCUMENTVERSION = 0.85;
 
-KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, KTextEdit *notes, MainWindow *parent) :
+KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, KTextEdit *notes, MainWindow *parent, KProgressDialog *progressDialog) :
     QObject(parent),
     m_autosave(NULL),
     m_url(url),
@@ -89,6 +89,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                 KMessageBox::error(parent, errorMsg);
             else {
                 parent->slotGotProgressInfo(i18n("Validating"), 0);
+                qApp->processEvents();
                 DocumentValidator validator(m_document);
                 success = validator.isProject();
                 if (!success) {
@@ -103,6 +104,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                     success = validator.validate(DOCUMENTVERSION);
                     if (success) { // Let the validator handle error messages
                         parent->slotGotProgressInfo(i18n("Check missing clips"), 0);
+                        qApp->processEvents();
                         QDomNodeList infoproducers = m_document.elementsByTagName("kdenlive_producer");
                         success = checkDocumentClips(infoproducers);
                         if (success) {
@@ -114,6 +116,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                             QDomElement customeffects = infoXml.firstChildElement("customeffects");
                             if (!customeffects.isNull() && customeffects.hasChildNodes()) {
                                 parent->slotGotProgressInfo(i18n("Importing project effects"), 0);
+                                qApp->processEvents();
                                 if (saveCustomEffects(customeffects.childNodes())) parent->slotReloadEffects();
                             }
 
@@ -155,10 +158,15 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                             QDomNodeList producers = m_document.elementsByTagName("producer");
                             const int max = producers.count();
 
-                            KProgressDialog progressDialog(parent, i18n("Loading project"), i18n("Loading project"));
-                            progressDialog.setAllowCancel(false);
-                            progressDialog.progressBar()->setMaximum(infomax - 1);
-                            progressDialog.show();
+                            if (!progressDialog) {
+                                progressDialog = new KProgressDialog(parent, i18n("Loading project"), i18n("Adding clips"));
+                                progressDialog->setAllowCancel(false);
+                            } else {
+                                progressDialog->setLabelText(i18n("Adding clips"));
+                            }
+                            progressDialog->progressBar()->setMaximum(infomax);
+                            progressDialog->show();
+                            qApp->processEvents();
 
                             for (int i = 0; i < infomax; i++) {
                                 e = infoproducers.item(i).cloneNode().toElement();
@@ -185,7 +193,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup
                                         break;
                                     }
                                 }
-                                progressDialog.progressBar()->setValue(i);
+                                progressDialog->progressBar()->setValue(i);
                             }
 
                             if (success) {
index 08dea8333e94e71b587cfb7a2338355041525023..e0648673cd0e665d31fd727875fe4a5a7afca2b1 100644 (file)
@@ -46,12 +46,13 @@ class MainWindow;
 class TrackInfo;
 
 class KTextEdit;
+class KProgressDialog;
 
 class KdenliveDoc: public QObject
 {
 Q_OBJECT public:
 
-    KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, KTextEdit *notes, MainWindow *parent = 0);
+    KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, const QPoint tracks, Render *render, KTextEdit *notes, MainWindow *parent = 0, KProgressDialog *progressDialog = 0);
     ~KdenliveDoc();
     QDomNodeList producersList();
     double fps() const;
index 2fe45ac5dce0620eb075c6309e911cd8f85e3e22..9d56296f13737b8e0b4b5b78da859563ea06ab9a 100644 (file)
@@ -96,6 +96,7 @@
 #endif /* KDE_IS_VERSION(4,3,80) */
 #include <KToolBar>
 #include <KColorScheme>
+#include <KProgressDialog>
 
 #include <QTextStream>
 #include <QTimer>
@@ -1962,7 +1963,21 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale)
 {
     if (!m_timelineArea->isEnabled()) return;
     m_fileRevert->setEnabled(true);
-    KdenliveDoc *doc = new KdenliveDoc(url, KdenliveSettings::defaultprojectfolder(), m_commandStack, KdenliveSettings::default_profile(), QPoint(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks()), m_projectMonitor->render, m_notesWidget, this);
+
+    KProgressDialog progressDialog(this, i18n("Loading project"), i18n("Loading project"));
+    progressDialog.setAllowCancel(false);
+    progressDialog.progressBar()->setMaximum(4);
+    progressDialog.show();
+    progressDialog.progressBar()->setValue(0);
+    qApp->processEvents();
+
+    KdenliveDoc *doc = new KdenliveDoc(url, KdenliveSettings::defaultprojectfolder(), m_commandStack, KdenliveSettings::default_profile(), QPoint(KdenliveSettings::videotracks(), KdenliveSettings::audiotracks()), m_projectMonitor->render, m_notesWidget, this, &progressDialog);
+
+    progressDialog.progressBar()->setValue(1);
+    progressDialog.progressBar()->setMaximum(4);
+    progressDialog.setLabelText(i18n("Loading project"));
+    qApp->processEvents();
+
     if (stale == NULL) {
         stale = new KAutoSaveFile(url, doc);
         doc->m_autosave = stale;
@@ -1973,8 +1988,16 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale)
         stale->setParent(doc);
     }
     connectDocumentInfo(doc);
+
+    progressDialog.progressBar()->setValue(2);
+    qApp->processEvents();
+
     bool ok;
     TrackView *trackView = new TrackView(doc, &ok, this);
+
+    progressDialog.progressBar()->setValue(3);
+    qApp->processEvents();
+
     m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description()));
     if (!ok) {
         m_timelineArea->setEnabled(false);
@@ -1993,6 +2016,8 @@ void MainWindow::doOpenFile(const KUrl &url, KAutoSaveFile *stale)
     m_projectMonitor->adjustRulerSize(trackView->duration());
     m_projectMonitor->slotZoneMoved(trackView->inPoint(), trackView->outPoint());
     m_clipMonitor->refreshMonitor(true);
+
+    progressDialog.progressBar()->setValue(4);
 }
 
 void MainWindow::recoverFiles(QList<KAutoSaveFile *> staleFiles)