X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftrackview.cpp;h=2f0450016a99ac275fa56be8a70fa7acf0eb8224;hb=e0fa1332f109b6455207ea701da386b2fddddf09;hp=2f190746288cf70c5f668adc97c54674dc8c7a03;hpb=f555964fc8fd3452f2aa6d8217d20e2aa4013334;p=kdenlive diff --git a/src/trackview.cpp b/src/trackview.cpp index 2f190746..2f045001 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -39,7 +39,7 @@ #include #include -TrackView::TrackView(KdenliveDoc *doc, QList actions, bool *ok, QWidget *parent) : +TrackView::TrackView(KdenliveDoc *doc, const QList &actions, bool *ok, QWidget *parent) : QWidget(parent), m_scale(1.0), m_projectTracks(0), @@ -56,8 +56,9 @@ TrackView::TrackView(KdenliveDoc *doc, QList actions, bool *ok, QWidg m_trackview->setAlignment(Qt::AlignLeft | Qt::AlignTop); m_ruler = new CustomRuler(doc->timecode(), m_trackview); - connect(m_ruler, SIGNAL(zoneMoved(int, int)), this, SIGNAL(zoneMoved(int, int))); + connect(m_ruler, SIGNAL(zoneMoved(int,int)), this, SIGNAL(zoneMoved(int,int))); connect(m_ruler, SIGNAL(adjustZoom(int)), this, SIGNAL(setZoom(int))); + connect(m_ruler, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int))); QHBoxLayout *layout = new QHBoxLayout; layout->setContentsMargins(m_trackview->frameWidth(), 0, 0, 0); layout->setSpacing(0); @@ -105,20 +106,20 @@ TrackView::TrackView(KdenliveDoc *doc, QList actions, bool *ok, QWidg connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders())); 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(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; else *ok = true; - connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int))); - connect(m_trackview, SIGNAL(updateRuler()), m_ruler, SLOT(update())); + connect(m_trackview, SIGNAL(cursorMoved(int,int)), m_ruler, SLOT(slotCursorMoved(int,int))); + connect(m_trackview, SIGNAL(updateRuler()), m_ruler, SLOT(updateRuler())); connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int))); - connect(m_trackview->horizontalScrollBar(), SIGNAL(rangeChanged(int, int)), this, SLOT(slotUpdateVerticalScroll(int, int))); + connect(m_trackview->horizontalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(slotUpdateVerticalScroll(int,int))); connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int))); - connect(m_trackview, SIGNAL(doTrackLock(int, bool)), this, SLOT(slotChangeTrackLock(int, bool))); + 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(), false); @@ -158,7 +159,7 @@ bool TrackView::checkProjectAudio() const bool hasAudio = false; const QList list = m_doc->tracksList(); int max = list.count(); - for (int i = 0; i < max; i++) { + for (int i = 0; i < max; ++i) { TrackInfo info = list.at(max - i - 1); if (!info.isMute && m_trackview->hasAudio(i)) { hasAudio = true; @@ -178,7 +179,7 @@ int TrackView::outPoint() const return m_ruler->outPoint(); } -void TrackView::slotSetZone(QPoint p, bool updateDocumentProperties) +void TrackView::slotSetZone(const QPoint &p, bool updateDocumentProperties) { m_ruler->setZone(p); if (updateDocumentProperties) m_doc->setZone(p.x(), p.y()); @@ -190,7 +191,7 @@ void TrackView::setDuration(int dur) m_ruler->setDuration(dur); } -void TrackView::parseDocument(QDomDocument doc) +void TrackView::parseDocument(const QDomDocument &doc) { //int cursorPos = 0; m_documentErrors.clear(); @@ -201,7 +202,7 @@ void TrackView::parseDocument(QDomDocument doc) QDomElement tractor = mlt.firstChildElement("tractor"); QDomNodeList tracks = tractor.elementsByTagName("track"); QDomNodeList playlists = doc.elementsByTagName("playlist"); - int duration = 300; + int duration = 1; m_projectTracks = tracks.count(); int trackduration = 0; QDomElement e; @@ -210,7 +211,7 @@ void TrackView::parseDocument(QDomDocument doc) int pos = m_projectTracks - 1; m_invalidProducers.clear(); QDomNodeList producers = doc.elementsByTagName("producer"); - for (int i = 0; i < producers.count(); i++) { + for (int i = 0; i < producers.count(); ++i) { // Check for invalid producers QDomNode n = producers.item(i); e = n.toElement(); @@ -229,7 +230,7 @@ void TrackView::parseDocument(QDomDocument doc) } int trackIndex = 0; - for (int i = 0; i < m_projectTracks; i++) { + for (int i = 0; i < m_projectTracks; ++i) { e = tracks.item(i).toElement(); QString playlist_name = e.attribute("producer"); if (playlist_name != "black_track" && playlist_name != "playlistmain") { @@ -274,7 +275,7 @@ void TrackView::parseDocument(QDomDocument doc) QDomNodeList transitions = tractor.elementsByTagName("transition"); //kDebug() << "//////////// TIMELINE FOUND: " << projectTransitions << " transitions"; - for (int i = 0; i < transitions.count(); i++) { + for (int i = 0; i < transitions.count(); ++i) { e = transitions.item(i).toElement(); QDomNodeList transitionparams = e.childNodes(); bool transitionAdd = true; @@ -360,7 +361,7 @@ void TrackView::parseDocument(QDomDocument doc) QString paramValue = p.text(); QDomNodeList params = base.elementsByTagName("parameter"); - if (paramName != "a_track" && paramName != "b_track") for (int i = 0; i < params.count(); i++) { + if (paramName != "a_track" && paramName != "b_track") for (int i = 0; i < params.count(); ++i) { QDomElement e = params.item(i).toElement(); if (!e.isNull() && e.attribute("tag") == paramName) { if (e.attribute("type") == "double") { @@ -415,9 +416,15 @@ void TrackView::parseDocument(QDomDocument doc) } QDomElement infoXml = mlt.firstChildElement("kdenlivedoc"); + QDomElement propsXml = infoXml.firstChildElement("documentproperties"); + + int currentPos = propsXml.attribute("position").toInt(); + if (currentPos > 0) m_trackview->initCursorPos(currentPos); + + // Add guides QDomNodeList guides = infoXml.elementsByTagName("guide"); - for (int i = 0; i < guides.count(); i++) { + for (int i = 0; i < guides.count(); ++i) { e = guides.item(i).toElement(); const QString comment = e.attribute("comment"); const GenTime pos = GenTime(e.attribute("time").toDouble()); @@ -470,7 +477,7 @@ void TrackView::setCursorPos(int pos) void TrackView::moveCursorPos(int pos) { - m_trackview->setCursorPos(pos, false); + m_trackview->setCursorPos(pos); } void TrackView::slotChangeZoom(int horizontal, int vertical) @@ -496,7 +503,7 @@ int TrackView::fitZoom() const { int zoom = (int)((duration() + 20 / m_scale) * m_trackview->getFrameWidth() / m_trackview->width()); int i; - for (i = 0; i < 13; i++) + for (i = 0; i < 13; ++i) if (m_ruler->comboScale[i] > zoom) break; return i; } @@ -514,7 +521,7 @@ void TrackView::refresh() void TrackView::slotRepaintTracks() { QList widgets = findChildren(); - for (int i = 0; i < widgets.count(); i++) { + for (int i = 0; i < widgets.count(); ++i) { if (widgets.at(i)) widgets.at(i)->setSelectedIndex(m_trackview->selectedTrack()); } } @@ -541,7 +548,7 @@ void TrackView::slotRebuildTrackHeaders() updatePalette(); - for (int i = 0; i < max; i++) { + for (int i = 0; i < max; ++i) { frame = new QFrame(headers_container); frame->setFrameStyle(QFrame::HLine); frame->setFixedHeight(1); @@ -553,9 +560,9 @@ void TrackView::slotRebuildTrackHeaders() connect(header, SIGNAL(switchTrackAudio(int)), m_trackview, SLOT(slotSwitchTrackAudio(int))); connect(header, SIGNAL(switchTrackLock(int)), m_trackview, SLOT(slotSwitchTrackLock(int))); connect(header, SIGNAL(selectTrack(int)), m_trackview, SLOT(slotSelectTrack(int))); - connect(header, SIGNAL(renameTrack(int, QString)), this, SLOT(slotRenameTrack(int, QString))); + connect(header, SIGNAL(renameTrack(int,QString)), this, SLOT(slotRenameTrack(int,QString))); connect(header, SIGNAL(configTrack(int)), this, SIGNAL(configTrack(int))); - connect(header, SIGNAL(addTrackEffect(const QDomElement, int)), m_trackview, SLOT(slotAddTrackEffect(const QDomElement, int))); + connect(header, SIGNAL(addTrackEffect(QDomElement,int)), m_trackview, SLOT(slotAddTrackEffect(QDomElement,int))); connect(header, SIGNAL(showTrackEffects(int)), this, SLOT(slotShowTrackEffects(int))); headers_container->layout()->addWidget(header); } @@ -584,7 +591,7 @@ void TrackView::adjustTrackHeaders() { int height = KdenliveSettings::trackheight() * m_scene->scale().y() - 1; QList widgets = findChildren(); - for (int i = 0; i < widgets.count(); i++) { + for (int i = 0; i < widgets.count(); ++i) { if (widgets.at(i)) widgets.at(i)->adjustSize(height); } } @@ -649,7 +656,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked, QDomNod producerReplacementIds.insert(idString, prodId); // now adjust the mlt producer bool found = false; - for (int i = 0; i < producers.count(); i++) { + for (int i = 0; i < producers.count(); ++i) { QDomElement prod = producers.at(i).toElement(); if (prod.attribute("id") == prodId) { // ok, producer already exists @@ -658,7 +665,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked, QDomNod } } if (!found) { - for (int i = 0; i < producers.count(); i++) { + for (int i = 0; i < producers.count(); ++i) { QDomElement prod = producers.at(i).toElement(); if (prod.attribute("id") == idString) { prod.setAttribute("id", prodId); @@ -670,7 +677,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked, QDomNod } if (!found) { // We didn't find the producer for this track, find producer for another track and duplicate - for (int i = 0; i < producers.count(); i++) { + for (int i = 0; i < producers.count(); ++i) { QDomElement prod = producers.at(i).toElement(); QString mltProdId = prod.attribute("id"); if (mltProdId == prodId || mltProdId.startsWith(prodId + '_')) { @@ -690,7 +697,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked, QDomNod QDomElement producerXml = doc.createElement("producer"); doc.appendChild(producerXml); bool foundMltProd = false; - for (int i = 0; i < producers.count(); i++) { + for (int i = 0; i < producers.count(); ++i) { QDomElement prod = producers.at(i).toElement(); if (prod.attribute("id") == id) { QString service = EffectsList::property(prod, "mlt_service"); @@ -815,7 +822,7 @@ void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parentNo QString endtag; double offset = 0; QDomNodeList params = currenteffect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { + for (int i = 0; i < params.count(); ++i) { QDomElement e = params.item(i).toElement(); if (e.attribute("type") == "keyframe") { starttag = e.attribute("starttag", "start"); @@ -879,7 +886,7 @@ void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parentNo } params = currenteffect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { + for (int i = 0; i < params.count(); ++i) { QDomElement e = params.item(i).toElement(); if (e.attribute("type") == "keyframe") e.setAttribute("keyframes", keyframes); } @@ -938,7 +945,7 @@ void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parentNo ++j; } currenteffect.appendChild(currenteffect.ownerDocument().importNode(subclipeffect, true)); - i++; + ++i; } } @@ -1004,7 +1011,7 @@ QDomElement TrackView::getEffectByTag(const QString &effecttag, const QString &e } -DocClipBase *TrackView::getMissingProducer(const QString id) const +DocClipBase *TrackView::getMissingProducer(const QString &id) const { QDomElement missingXml; QDomDocument doc = m_doc->toXml(); @@ -1013,7 +1020,7 @@ DocClipBase *TrackView::getMissingProducer(const QString id) const QDomNodeList prods = doc.elementsByTagName("producer"); int maxprod = prods.count(); bool slowmotionClip = false; - for (int i = 0; i < maxprod; i++) { + for (int i = 0; i < maxprod; ++i) { QDomNode m = prods.at(i); QString prodId = m.toElement().attribute("id"); if (prodId.startsWith("slowmotion")) { @@ -1031,7 +1038,7 @@ DocClipBase *TrackView::getMissingProducer(const QString id) const if (m_replacementProducerIds.contains(id)) { QString newId = m_replacementProducerIds.value(id); slowmotionClip = false; - for (int i = 0; i < maxprod; i++) { + for (int i = 0; i < maxprod; ++i) { QDomNode m = prods.at(i); QString prodId = m.toElement().attribute("id"); if (prodId.startsWith("slowmotion")) { @@ -1123,7 +1130,7 @@ void TrackView::updateProjectFps() m_trackview->updateProjectFps(); } -void TrackView::slotRenameTrack(int ix, QString name) +void TrackView::slotRenameTrack(int ix, const QString &name) { int tracknumber = m_doc->tracksCount() - ix; QList tracks = m_doc->tracksList(); @@ -1161,7 +1168,7 @@ void TrackView::slotUpdateTrackEffectState(int ix) widgets.at(m_doc->tracksCount() - ix - 1)->updateEffectLabel(m_doc->trackInfoAt(ix).effectsList.effectNames()); } -void TrackView::slotSaveTimelinePreview(const QString path) +void TrackView::slotSaveTimelinePreview(const QString &path) { QImage img(width(), height(), QImage::Format_ARGB32_Premultiplied); img.fill(palette().base().color().rgb());