m_trackview = new CustomTrackView(doc, m_scene, parent);
m_trackview->scale(1, 1);
m_trackview->setAlignment(Qt::AlignLeft | Qt::AlignTop);
- //m_scene->addRect(QRectF(0, 0, 100, 100), QPen(), QBrush(Qt::red));
m_ruler = new CustomRuler(doc->timecode(), m_trackview);
connect(m_ruler, SIGNAL(zoneMoved(int, int)), this, SIGNAL(zoneMoved(int, int)));
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;
connect(m_trackview, SIGNAL(doTrackLock(int, bool)), this, SLOT(slotChangeTrackLock(int, bool)));
slotChangeZoom(m_doc->zoom().x(), m_doc->zoom().y());
- slotSetZone(m_doc->zone());
+ slotSetZone(m_doc->zone(), false);
}
TrackView::~TrackView()
return m_ruler->outPoint();
}
-void TrackView::slotSetZone(QPoint p)
+void TrackView::slotSetZone(QPoint p, bool updateDocumentProperties)
{
m_ruler->setZone(p);
+ if (updateDocumentProperties) m_doc->setZone(p.x(), p.y());
}
void TrackView::setDuration(int dur)
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;
}
void TrackView::slotRepaintTracks()
{
- QLayoutItem *child;
- for (int i = 0; i < headers_container->layout()->count(); i++) {
- child = headers_container->layout()->itemAt(i);
- if (child->widget() && child->widget()->height() > 5) {
- HeaderTrack *head = static_cast <HeaderTrack *>(child->widget());
- if (head) head->setSelectedIndex(m_trackview->selectedTrack());
- }
+ QList<HeaderTrack *> widgets = findChildren<HeaderTrack *>();
+ for (int i = 0; i < widgets.count(); i++) {
+ if (widgets.at(i)) widgets.at(i)->setSelectedIndex(m_trackview->selectedTrack());
}
}
QFrame *frame = NULL;
for (int i = 0; i < max; i++) {
frame = new QFrame(headers_container);
+ frame->setFrameStyle(QFrame::HLine);
frame->setFixedHeight(1);
- frame->setFrameStyle(QFrame::Plain);
- frame->setFrameShape(QFrame::Box);
- frame->setLineWidth(1);
headers_container->layout()->addWidget(frame);
TrackInfo info = list.at(max - i - 1);
header = new HeaderTrack(i, info, height, headers_container);
headers_container->layout()->addWidget(header);
}
frame = new QFrame(this);
+ frame->setFrameStyle(QFrame::HLine);
frame->setFixedHeight(1);
- frame->setFrameStyle(QFrame::Plain);
- frame->setFrameShape(QFrame::Box);
- frame->setLineWidth(1);
headers_container->layout()->addWidget(frame);
}
void TrackView::adjustTrackHeaders()
{
int height = KdenliveSettings::trackheight() * m_scene->scale().y() - 1;
- QLayoutItem *child;
- for (int i = 0; i < headers_container->layout()->count(); i++) {
- child = headers_container->layout()->itemAt(i);
- if (child->widget() && child->widget()->height() > 5)(static_cast <HeaderTrack *>(child->widget()))->adjustSize(height);
+ QList<HeaderTrack *> widgets = findChildren<HeaderTrack *>();
+ for (int i = 0; i < widgets.count(); i++) {
+ if (widgets.at(i)) widgets.at(i)->adjustSize(height);
}
}
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();
if (e.attribute("type") == "simplekeyframe") {
QStringList kfrs = paramvalue.split(";");
for (int l = 0; l < kfrs.count(); l++) {
- QString fr = kfrs.at(l).section("=", 0, 0);
- double val = kfrs.at(l).section("=", 1, 1).toDouble();
+ QString fr = kfrs.at(l).section('=', 0, 0);
+ double val = kfrs.at(l).section('=', 1, 1).toDouble();
kfrs[l] = fr + ":" + QString::number((int)(val * fact));
}
e.setAttribute("keyframes", kfrs.join(";"));
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 < 0 || 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"