From: Jean-Baptiste Mardelle Date: Thu, 1 Sep 2011 10:52:08 +0000 (+0000) Subject: Show filter version in filter info box X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a0dbaf732a685363d627dc4ea205be17d16718e9;p=kdenlive Show filter version in filter info box svn path=/trunk/kdenlive/; revision=5851 --- diff --git a/src/effectslist.cpp b/src/effectslist.cpp index f3ac8877..d01b46e4 100644 --- a/src/effectslist.cpp +++ b/src/effectslist.cpp @@ -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("
" + i18n("Author:") + " " + 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("
" + i18n("Author:") + " " + i18n(namenode.toElement().text().toUtf8().data())); return info; } diff --git a/src/effectslist.h b/src/effectslist.h index a12a36f4..290314c3 100644 --- a/src/effectslist.h +++ b/src/effectslist.h @@ -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; diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 36d06081..070c7915 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -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");