connect(m_trackview, SIGNAL(tracksChanged()), this, SLOT(slotReloadTracks()));
connect(m_trackview, SIGNAL(updateTrackHeaders()), this, SLOT(slotRepaintTracks()));
connect(m_trackview, SIGNAL(showTrackEffects(int, TrackInfo)), this, SIGNAL(showTrackEffects(int, TrackInfo)));
+ connect(m_trackview, SIGNAL(updateTrackEffectState(int)), this, SLOT(slotUpdateTrackEffectState(int)));
+
parseDocument(m_doc->toXml());
if (m_doc->setSceneList() == -1) *ok = false;
p = playlists.item(j).toElement();
if (p.attribute("id") == playlist_name) {
// playlist found, check track effects
- QDomNodeList trackEffects = p.elementsByTagName("filter");
- kDebug() << "<< PLAYLIST: " << playlist_name << ", effects: " << trackEffects.count() << ", TK IX: " << trackIndex;
+ QDomNodeList trackEffects = p.childNodes();
slotAddProjectEffects(trackEffects, p, NULL, trackIndex++);
break;
}
return position;
}
-void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parent, ClipItem *clip, int trackIndex)
+void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parentNode, ClipItem *clip, int trackIndex)
{
for (int ix = 0; ix < effects.count(); ix++) {
bool disableeffect = false;
QDomElement effect = effects.at(ix).toElement();
+ if (effect.tagName() != "filter") continue;
// add effect to clip
QString effecttag;
if (clipeffect.isNull()) {
kDebug() << "/// WARNING, EFFECT: " << effecttag << ": " << effectid << " not found, removing it from project";
m_documentErrors.append(i18n("Effect %1:%2 not found in MLT, it was removed from this project\n", effecttag, effectid));
- parent.removeChild(effects.at(ix));
+ if (parentNode.removeChild(effects.at(ix)).isNull()) kDebug() << "/// PROBLEM REMOVING EFFECT: " << effecttag;
ix--;
} else {
QDomElement currenteffect = clipeffect.cloneNode().toElement();
endvalue = effectparam.text().toDouble() * fact;
}
// add first keyframe
- keyframes.append(QString::number(effectin) + ':' + QString::number(startvalue) + ';' + QString::number(effectout) + ':' + QString::number(endvalue) + ';');
+ if (effectout <= effectin) {
+ // there is only one keyframe
+ keyframes.append(QString::number(effectin) + ':' + QString::number(startvalue) + ';');
+ } else keyframes.append(QString::number(effectin) + ':' + QString::number(startvalue) + ';' + QString::number(effectout) + ':' + QString::number(endvalue) + ';');
QDomNode lastParsedEffect;
ix++;
QDomNode n2 = effects.at(ix);
void TrackView::slotShowTrackEffects(int ix)
{
+ m_trackview->clearSelection();
emit showTrackEffects(m_doc->tracksCount() - ix, m_doc->trackInfoAt(m_doc->tracksCount() - ix - 1));
}
+void TrackView::slotUpdateTrackEffectState(int ix)
+{
+ QList<HeaderTrack *> widgets = findChildren<HeaderTrack *>();
+ if (ix >= widgets.count()) {
+ kDebug() << "ERROR, Trying to access a non existant track: " << ix;
+ return;
+ }
+ widgets.at(m_doc->tracksCount() - ix - 1)->updateEffectLabel(m_doc->trackInfoAt(ix).effectsList.effectNames());
+}
+
#include "trackview.moc"