]> git.sesse.net Git - kdenlive/blobdiff - src/kdenlivedoc.cpp
[PATCH by Ray Lehtiniemi] Do not return references to temporaries.
[kdenlive] / src / kdenlivedoc.cpp
index 4f098d2e61e232f62cd7dddfbb61325cdc9b4fd1..03a1d3bdf73f208aeedd27cc30155db1236cb24f 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
-#include <QCryptographicHash>
-#include <QFile>
+
+#include "kdenlivedoc.h"
+#include "docclipbase.h"
+#include "profilesdialog.h"
+#include "kdenlivesettings.h"
+#include "renderer.h"
+#include "clipmanager.h"
+#include "titlewidget.h"
+#include "mainwindow.h"
 
 #include <KDebug>
 #include <KStandardDirs>
 #include <KIO/CopyJob>
 #include <KApplication>
 
+#include <QCryptographicHash>
+#include <QFile>
 
 #include <mlt++/Mlt.h>
 
-#include "kdenlivedoc.h"
-#include "docclipbase.h"
-#include "profilesdialog.h"
-#include "kdenlivesettings.h"
-#include "renderer.h"
-#include "clipmanager.h"
-#include "titlewidget.h"
-#include "mainwindow.h"
 
 KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, const QString &profileName, const QPoint tracks, Render *render, MainWindow *parent): QObject(parent), m_render(render), m_url(url), m_projectFolder(projectFolder), m_commandStack(new QUndoStack(undoGroup)), m_modified(false), m_documentLoadingProgress(0), m_documentLoadingStep(0.0), m_startPos(0), m_zoom(7), m_autosave(NULL), m_zoneStart(0), m_zoneEnd(100), m_abortLoading(false) {
     m_clipManager = new ClipManager(this);
@@ -354,14 +355,14 @@ void KdenliveDoc::slotAutoSave() {
             kDebug() << "ERROR; CANNOT CREATE AUTOSAVE FILE";
         }
         kDebug() << "// AUTOSAVE FILE: " << m_autosave->fileName();
-        QDomDocument doc;
+        QString doc;
         if (KdenliveSettings::dropbframes()) {
             KdenliveSettings::setDropbframes(false);
             m_clipManager->updatePreviewSettings();
-            doc.setContent(m_render->sceneList());
+            doc = m_render->sceneList();
             KdenliveSettings::setDropbframes(true);
             m_clipManager->updatePreviewSettings();
-        } else doc.setContent(m_render->sceneList());
+        } else doc = m_render->sceneList();
         saveSceneList(m_autosave->fileName(), doc);
     }
 }
@@ -403,7 +404,7 @@ bool KdenliveDoc::convertDocument(double version) {
     if (version == 0.5 || version == 0.7 || version > 0.81) {
         kDebug() << "Unable to open document with version " << version;
         // TODO: convert 0.7 (0.5?) files to the new document format.
-        return FALSE;
+        return false;
     }
 
     if (version == 0.8) {
@@ -427,7 +428,7 @@ bool KdenliveDoc::convertDocument(double version) {
             if (t.attribute("producer") != "black_track") tracksinfo.appendChild(trackinfo);
         }
         infoXml.appendChild(tracksinfo);
-        return TRUE;
+        return true;
     }
 
     QDomNode westley = m_document.elementsByTagName("westley").at(1);
@@ -877,7 +878,7 @@ bool KdenliveDoc::convertDocument(double version) {
                 //kDebug() << "ready to set additional <avfile />'s attributes (id =" << id << ")";
                 kproducer.setAttribute("channels", avfile.attribute("channels"));
                 kproducer.setAttribute("duration", avfile.attribute("duration"));
-                kproducer.setAttribute("frame_size", avfile.attribute("width") + "x" + avfile.attribute("height"));
+                kproducer.setAttribute("frame_size", avfile.attribute("width") + 'x' + avfile.attribute("height"));
                 kproducer.setAttribute("frequency", avfile.attribute("frequency"));
                 if (kproducer.attribute("description").isEmpty() && !avfile.attribute("description").isEmpty())
                     kproducer.setAttribute("description", avfile.attribute("description"));
@@ -899,7 +900,7 @@ bool KdenliveDoc::convertDocument(double version) {
     */
     //kDebug() << "/////////////////  END CONVERTEDĀ DOC:";
 
-    return TRUE;
+    return true;
 }
 
 QString KdenliveDoc::colorToString(const QColor& c) {
@@ -917,10 +918,13 @@ QPoint KdenliveDoc::zone() const {
     return QPoint(m_zoneStart, m_zoneEnd);
 }
 
-bool KdenliveDoc::saveSceneList(const QString &path, QDomDocument sceneList) {
+bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene) {
+    QDomDocument sceneList;
+    sceneList.setContent(scene, true);
     QDomNode wes = sceneList.elementsByTagName("westley").at(0);
-
     QDomElement addedXml = sceneList.createElement("kdenlivedoc");
+    wes.appendChild(addedXml);
+
     QDomElement markers = sceneList.createElement("markers");
     addedXml.setAttribute("version", "0.82");
     addedXml.setAttribute("profile", profilePath());
@@ -973,7 +977,6 @@ bool KdenliveDoc::saveSceneList(const QString &path, QDomDocument sceneList) {
     addedXml.appendChild(markers);
     if (!m_guidesXml.isNull()) addedXml.appendChild(sceneList.importNode(m_guidesXml, true));
 
-    wes.appendChild(addedXml);
     //wes.appendChild(doc.importNode(kdenliveData, true));
 
     QFile file(path);
@@ -982,6 +985,7 @@ bool KdenliveDoc::saveSceneList(const QString &path, QDomDocument sceneList) {
         KMessageBox::error(kapp->activeWindow(), i18n("Cannot write to file %1", path));
         return false;
     }
+
     QTextStream out(&file);
     out << sceneList.toString();
     file.close();
@@ -1035,7 +1039,7 @@ void KdenliveDoc::moveProjectData(KUrl url) {
     }
 }
 
-QString KdenliveDoc::profilePath() const {
+const QString &KdenliveDoc::profilePath() const {
     return m_profile.path;
 }
 
@@ -1244,7 +1248,7 @@ bool KdenliveDoc::isModified() const {
     return m_modified;
 }
 
-QString KdenliveDoc::description() const {
+const QString KdenliveDoc::description() const {
     if (m_url.isEmpty())
         return i18n("Untitled") + " / " + m_profile.description;
     else
@@ -1351,7 +1355,7 @@ void KdenliveDoc::setNewClipResource(const QString &id, const QString &path) {
     for (int i = 0; i < maxprod; i++) {
         QDomNode m = prods.at(i);
         QString prodId = m.toElement().attribute("id");
-        if (prodId == id || prodId.startsWith(id + "_")) {
+        if (prodId == id || prodId.startsWith(id + '_')) {
             QDomNodeList params = m.childNodes();
             for (int j = 0; j < params.count(); j++) {
                 QDomElement e = params.item(j).toElement();
@@ -1455,13 +1459,13 @@ void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, co
 
 
 void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QString &groupId) {
-    kDebug() << "/////////  DOCUM, ADD CLP: " << url;
+    //kDebug() << "/////////  DOCUM, ADD CLP: " << url;
     m_clipManager->slotAddClipFile(url, group, groupId);
     emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
     setModified(true);
 }
 
-const QString&KdenliveDoc::getFreeClipId() {
+const QString KdenliveDoc::getFreeClipId() {
     return QString::number(m_clipManager->getFreeClipId());
 }
 
@@ -1469,16 +1473,6 @@ DocClipBase *KdenliveDoc::getBaseClip(const QString &clipId) {
     return m_clipManager->getClipById(clipId);
 }
 
-void KdenliveDoc::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId) {
-    m_clipManager->slotAddColorClipFile(name, color, duration, group, groupId);
-    setModified(true);
-}
-
-void KdenliveDoc::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, const QString group, const QString &groupId) {
-    m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop, fade, luma_duration, luma_file, softness, group, groupId);
-    setModified(true);
-}
-
 void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId) {
     QString titlesFolder = projectFolder().path() + "/titles/";
     KStandardDirs::makeDir(titlesFolder);