From: Till Theato Date: Sun, 10 Oct 2010 10:21:56 +0000 (+0000) Subject: Show progress while loading project X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=966ecf557c50a256f5991d1bba136a0dc51f850c;p=kdenlive Show progress while loading project svn path=/trunk/kdenlive/; revision=4977 --- diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 36e3188a..d0aae8bb 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -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) { diff --git a/src/kdenlivedoc.h b/src/kdenlivedoc.h index 08dea833..e0648673 100644 --- a/src/kdenlivedoc.h +++ b/src/kdenlivedoc.h @@ -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; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2fe45ac5..9d56296f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -96,6 +96,7 @@ #endif /* KDE_IS_VERSION(4,3,80) */ #include #include +#include #include #include @@ -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 staleFiles)