]> git.sesse.net Git - kdenlive/commitdiff
Show filter version in filter info box
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 1 Sep 2011 10:52:08 +0000 (10:52 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 1 Sep 2011 10:52:08 +0000 (10:52 +0000)
svn path=/trunk/kdenlive/; revision=5851

src/effectslist.cpp
src/effectslist.h
src/initeffects.cpp

index f3ac8877b8876cf0721374c42df330774d7063d3..d01b46e404ed96beac02488582b982b58f25b2d2 100644 (file)
@@ -38,7 +38,7 @@ QDomElement EffectsList::getEffectByName(const QString & name) const
     QDomNodeList effects = m_baseElement.childNodes();
     for (int i = 0; i < effects.count(); i++) {
         QDomElement effect =  effects.at(i).toElement();
-        QDomNode namenode = effect.elementsByTagName("name").item(0);
+        QDomNode namenode = effect.firstChildElement("name");
         if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data());
         if (name == effectName) {
             QDomNodeList params = effect.elementsByTagName("parameter");
@@ -100,7 +100,7 @@ QStringList EffectsList::effectIdInfo(const int ix) const
 {
     QStringList info;
     QDomElement effect = m_baseElement.childNodes().at(ix).toElement();
-    QDomNode namenode = effect.elementsByTagName("name").item(0);
+    QDomNode namenode = effect.firstChildElement("name");
     info << i18n(namenode.toElement().text().toUtf8().data()) << effect.attribute("tag") << effect.attribute("id");
     return info;
 }
@@ -111,7 +111,7 @@ QStringList EffectsList::effectNames()
     QDomNodeList effects = m_baseElement.childNodes();
     for (int i = 0; i < effects.count(); i++) {
         QDomElement effect =  effects.at(i).toElement();
-        QDomNode namenode = effect.elementsByTagName("name").item(0);
+        QDomNode namenode = effect.firstChildElement("name");
         if (!namenode.isNull()) list.append(i18n(namenode.toElement().text().toUtf8().data()));
     }
     return list;
@@ -120,26 +120,30 @@ QStringList EffectsList::effectNames()
 QString EffectsList::getInfo(const QString & tag, const QString & id) const
 {
     QString info;
-    QDomElement effect = getEffectByTag(tag, id);
-    QDomNode namenode = effect.elementsByTagName("description").item(0);
+    return getEffectInfo(getEffectByTag(tag, id));
+}
+
+QString EffectsList::getInfoFromIndex(const int ix) const
+{
+    QString info;
+    return getEffectInfo(m_baseElement.childNodes().at(ix).toElement());
+}
+
+QString EffectsList::getEffectInfo(const QDomElement effect) const
+{
+    QString info;
+    QDomNode namenode = effect.firstChildElement("description");
     if (!namenode.isNull())
         info = i18n(namenode.firstChild().nodeValue().simplified().toUtf8().data());
 
-    namenode = effect.elementsByTagName("author").item(0);
+    namenode = effect.firstChildElement("author");
     if (!namenode.isNull())
         info.append("<br /><strong>" + i18n("Author:") + " </strong>" + i18n(namenode.toElement().text().toUtf8().data()));
 
-    return info;
-}
+    namenode = effect.firstChildElement("version");
+    if (!namenode.isNull())
+        info.append(QString(" (%1)").arg(namenode.toElement().text()));
 
-QString EffectsList::getInfoFromIndex(const int ix) const
-{
-    QString info;
-    QDomElement effect = m_baseElement.childNodes().at(ix).toElement();
-    QDomNode namenode = effect.elementsByTagName("description").item(0);
-    if (!namenode.isNull()) info = i18n(namenode.toElement().text().toUtf8().data());
-    namenode = effect.elementsByTagName("author").item(0);
-    if (!namenode.isNull()) info.append("<br /><strong>" + i18n("Author:") + " </strong>" + i18n(namenode.toElement().text().toUtf8().data()));
     return info;
 }
 
index a12a36f4d9943f2beaeec76d5d123ed2f4585b12..290314c336b50f957cb8618068247d8deb8f2c11 100644 (file)
@@ -58,6 +58,7 @@ public:
     QStringList effectNames();
     QString getInfo(const QString & tag, const QString & id) const;
     QString getInfoFromIndex(const int ix) const;
+    QString getEffectInfo(const QDomElement effect) const;
     void clone(const EffectsList original);
     void append(QDomElement e);
     bool isEmpty() const;
index 36d060815467db3546a9922f5e4cc1ff71924930..070c791561b0299ade2bf6af19949b3821a59247 100644 (file)
@@ -356,18 +356,6 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, EffectsList *au
                 needsLocaleConversion = true;
             }
         }
-        if (documentElement.hasAttribute("version")) {
-            // a specific version of the filter is required
-            Mlt::Properties *metadata = repository->metadata(filter_type, tag.toUtf8().data());
-            if (metadata && metadata->is_valid()) {
-                double version = metadata->get_double("version");
-                if (locale.toDouble(documentElement.attribute("version")) > version) {
-                    delete metadata;
-                    return;
-                }
-            }
-            delete metadata;
-        }
 
         if (needsLocaleConversion) {
             // we need to convert all numbers to the system's locale (for example 0.5 -> 0,5)
@@ -389,6 +377,25 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, EffectsList *au
             }
         }
 
+        double version = -1;
+        Mlt::Properties *metadata = repository->metadata(filter_type, tag.toUtf8().data());
+        if (metadata && metadata->is_valid()) {
+            version = metadata->get_double("version");
+        }
+        if (metadata) delete metadata;
+        if (documentElement.hasAttribute("version")) {
+            // a specific version of the filter is required
+            if (locale.toDouble(documentElement.attribute("version")) > version) {
+                return;
+            }
+        }
+        if (version > -1) {
+            // Add version info to XML
+            QDomNode versionNode = doc.createElement("version");
+            versionNode.appendChild(doc.createTextNode(QLocale().toString(version)));
+            documentElement.appendChild(versionNode);
+        }
+
         // Parse effect information.
         if ((filtersList.contains(tag) || producersList.contains(tag))) {
             QString type = documentElement.attribute("type", QString());
@@ -495,9 +502,13 @@ QDomDocument initEffects::createDescriptionFromMlt(Mlt::Repository* repository,
             QDomElement author = ret.createElement("author");
             author.appendChild(ret.createTextNode(metadata->get("creator")));
 
+            QDomElement version = ret.createElement("version");
+            version.appendChild(ret.createTextNode(metadata->get("version")));
+
             eff.appendChild(name);
             eff.appendChild(author);
             eff.appendChild(desc);
+            eff.appendChild(version);
 
             Mlt::Properties tags((mlt_properties) metadata->get_data("tags"));
             if (QString(tags.get(0)) == "Audio") eff.setAttribute("type", "audio");