]> git.sesse.net Git - kdenlive/blobdiff - src/effectslist.cpp
Fix effects xml
[kdenlive] / src / effectslist.cpp
index 58152ad63fb012b9e313257342fa6e0b79d3d336..a6aef7aada4d3a6389a247716293a846253f0fe6 100644 (file)
@@ -45,6 +45,7 @@ QMap <QString, QString> EffectsList::effect(const QString & name) {
     return filter;
 }
 
+
 QDomElement EffectsList::getEffectByName(const QString & name) const {
     QString effectName;
     for (int i = 0; i < this->size(); ++i) {
@@ -55,7 +56,8 @@ QDomElement EffectsList::getEffectByName(const QString & name) const {
             QDomNodeList params = effect.elementsByTagName("parameter");
             for (int i = 0; i < params.count(); i++) {
                 QDomElement e = params.item(i).toElement();
-                e.setAttribute("value", e.attribute("default"));
+                if (!e.hasAttribute("value"))
+                    e.setAttribute("value", e.attribute("default"));
             }
             return effect;
         }
@@ -64,19 +66,34 @@ QDomElement EffectsList::getEffectByName(const QString & name) const {
     return QDomElement();
 }
 
-QDomElement EffectsList::getEffectByTag(const QString & tag) const {
-    QString effectName;
-    for (int i = 0; i < this->size(); ++i) {
-        QDomElement effect =  this->at(i);
-        if (effect.attribute("tag") == tag) {
-            QDomNodeList params = effect.elementsByTagName("parameter");
-            for (int i = 0; i < params.count(); i++) {
-                QDomElement e = params.item(i).toElement();
-                e.setAttribute("value", e.attribute("default"));
+QDomElement EffectsList::getEffectByTag(const QString & tag, const QString & id) const {
+
+    if (!id.isEmpty()) for (int i = 0; i < this->size(); ++i) {
+            QDomElement effect =  this->at(i);
+            kDebug() << "// SRCH EFFECT; " << id << ", LKING: " << effect.attribute("id");
+            if (effect.attribute("id") == id) {
+                QDomNodeList params = effect.elementsByTagName("parameter");
+                for (int i = 0; i < params.count(); i++) {
+                    QDomElement e = params.item(i).toElement();
+                    if (!e.hasAttribute("value"))
+                        e.setAttribute("value", e.attribute("default"));
+                }
+                return effect;
+            }
+        }
+
+    if (!tag.isEmpty()) for (int i = 0; i < this->size(); ++i) {
+            QDomElement effect =  this->at(i);
+            if (effect.attribute("tag") == tag) {
+                QDomNodeList params = effect.elementsByTagName("parameter");
+                for (int i = 0; i < params.count(); i++) {
+                    QDomElement e = params.item(i).toElement();
+                    if (!e.hasAttribute("value"))
+                        e.setAttribute("value", e.attribute("default"));
+                }
+                return effect;
             }
-            return effect;
         }
-    }
 
     return QDomElement();
 }
@@ -101,6 +118,15 @@ QString EffectsList::getInfo(QString effectName) {
     return info;
 }
 
+bool EffectsList::hasKeyFrames(QDomElement effect) {
+    QDomNodeList params = effect.elementsByTagName("parameter");
+    for (int i = 0; i < params.count(); i++) {
+        QDomElement e = params.item(i).toElement();
+        if (e.attribute("type") == "keyframe") return true;
+    }
+    return false;
+}
+
 // static
 void EffectsList::setParameter(QDomElement effect, QString name, QString value) {
     QDomNodeList params = effect.elementsByTagName("parameter");