]> git.sesse.net Git - kdenlive/commitdiff
Fix title duration, keeping compatibility with Kdenlive 0.92
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 26 Dec 2012 08:10:19 +0000 (09:10 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 26 Dec 2012 08:10:19 +0000 (09:10 +0100)
In kdelivetitle format, currently the "out" property means duration, so we will slowly deprecate the "out" property in favor of the more correct "duration" attribute.

src/clipmanager.cpp
src/titledocument.cpp
src/titledocument.h
src/titlewidget.cpp

index 55a947f879ddc921eeb16d590a1cea1de5b26c0e..8eea860b1c9135bf09fbf2550b6119faba421e9c 100644 (file)
@@ -738,16 +738,22 @@ void ClipManager::slotAddTextTemplateClip(QString titleName, const KUrl &path, c
     prod.setAttribute("transparency", "1");
     prod.setAttribute("in", "0");
 
-    int out = 0;
+    int duration = 0;
     QDomDocument titledoc;
     QFile txtfile(path.path());
     if (txtfile.open(QIODevice::ReadOnly) && titledoc.setContent(&txtfile)) {
         txtfile.close();
-        out = titledoc.documentElement().attribute("out").toInt();
+       if (titledoc.documentElement().hasAttribute("duration")) {
+           duration = titledoc.documentElement().attribute("duration").toInt();
+       }
+        else {
+           // keep some time for backwards compatibility - 26/12/12
+           duration = titledoc.documentElement().attribute("out").toInt();
+       }
     } else txtfile.close();
 
-    if (out == 0) out = m_doc->getFramePos(KdenliveSettings::image_duration());
-    prod.setAttribute("out", out);
+    if (duration == 0) duration = m_doc->getFramePos(KdenliveSettings::title_duration());
+    prod.setAttribute("out", duration - 1);
 
     AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
     m_doc->commandStack()->push(command);
index 6ab7d19e9cf89ff83b494f868a30b40cf1ab1f10..e9404b73ec17e4543d68b2e0cedc00d5f73a9f42 100644 (file)
@@ -284,13 +284,15 @@ QColor TitleDocument::getBackgroundColor()
 }
 
 
-bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int out, bool embed)
+bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int duration, bool embed)
 {
     if (!m_scene)
         return false;
 
     QDomDocument doc = xml(startv, endv, embed);
-    doc.documentElement().setAttribute("out", out);
+    doc.documentElement().setAttribute("duration", duration);
+    // keep some time for backwards compatibility (opening projects with older versions) - 26/12/12
+    doc.documentElement().setAttribute("out", duration);
     KTemporaryFile tmpfile;
     if (!tmpfile.open()) {
         kWarning() << "/////  CANNOT CREATE TMP FILE in: " << tmpfile.fileName();
@@ -308,7 +310,7 @@ bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGr
     return KIO::NetAccess::upload(tmpfile.fileName(), url, 0);
 }
 
-int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *out, const QString& projectpath)
+int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *duration, const QString& projectpath)
 {
     m_projectPath = projectpath;
     QDomNodeList titles = doc.elementsByTagName("kdenlivetitle");
@@ -334,10 +336,12 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra
         }
     }
     //TODO: get default title duration instead of hardcoded one
+    if (doc.documentElement().hasAttribute("duration"))
+        *duration = doc.documentElement().attribute("duration").toInt();
     if (doc.documentElement().hasAttribute("out"))
-        *out = doc.documentElement().attribute("out").toInt();
+        *duration = doc.documentElement().attribute("out").toInt();
     else
-        *out = 125;
+        *duration = 125;
 
     int maxZValue = 0;
     if (titles.size()) {
index a00c8b7dca89b1a08276e921d9c8beed602c18ed..8c30827cf1284489ece79da19004e4bf51310d79 100644 (file)
@@ -34,9 +34,9 @@ class TitleDocument
 public:
     TitleDocument();
     void setScene(QGraphicsScene* scene, int width, int height);
-    bool saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int out, bool embed_images = false);
+    bool saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int duration, bool embed_images = false);
     QDomDocument xml(QGraphicsRectItem* startv, QGraphicsRectItem* endv, bool embed_images = false);
-    int loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *out, const QString& projectpath = "");
+    int loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *duration, const QString& projectpath = QString());
     /** \brief Get the background color (incl. alpha) from the document, if possibly
      * \returns The background color of the document, inclusive alpha. If none found, returns (0,0,0,0) */
     QColor getBackgroundColor();
index bc2e0309a58d0654db84e4d3af425c8fc40db5f7..b769fdf642cc7df3d6bde8db95bf5ba2283f8878 100644 (file)
@@ -1875,7 +1875,7 @@ void TitleWidget::saveTitle(KUrl url)
         delete fs;
     }
     if (!url.isEmpty()) {
-        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()) - 1, embed_image) == false)
+        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()), embed_image) == false)
             KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
     }
 }
@@ -1883,7 +1883,7 @@ void TitleWidget::saveTitle(KUrl url)
 QDomDocument TitleWidget::xml()
 {
     QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
-    doc.documentElement().setAttribute("out", m_tc.getFrameCount(title_duration->text()) - 1);
+    doc.documentElement().setAttribute("duration", m_tc.getFrameCount(title_duration->text()));
     return doc;
 }
 
@@ -1894,10 +1894,10 @@ int TitleWidget::duration() const
 
 void TitleWidget::setXml(QDomDocument doc)
 {
-    int out;
-    m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &out, m_projectTitlePath);
+    int duration;
+    m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &duration, m_projectTitlePath);
     adjustFrameSize();
-    title_duration->setText(m_tc.getTimecode(GenTime(out + 1, m_render->fps())));
+    title_duration->setText(m_tc.getTimecode(GenTime(duration, m_render->fps())));
     /*if (doc.documentElement().hasAttribute("out")) {
     GenTime duration = GenTime(doc.documentElement().attribute("out").toDouble() / 1000.0);
     title_duration->setText(m_tc.getTimecode(duration));