connect(m_trackview->verticalScrollBar(), SIGNAL(valueChanged(int)), headers_area->verticalScrollBar(), SLOT(setValue(int)));
connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders()));
connect(m_trackview, SIGNAL(tracksChanged()), this, SLOT(slotReloadTracks()));
+ connect(m_trackview, SIGNAL(updateTrackHeaders()), this, SLOT(slotRepaintTracks()));
parseDocument(m_doc->toXml());
int error = m_doc->setSceneList();
delete m_trackview;
}
+//virtual
+void TrackView::keyPressEvent(QKeyEvent * event)
+{
+ if (event->key() == Qt::Key_Up) {
+ m_trackview->slotTrackUp();
+ event->accept();
+ } else if (event->key() == Qt::Key_Down) {
+ m_trackview->slotTrackDown();
+ event->accept();
+ } else QWidget::keyPressEvent(event);
+}
+
int TrackView::duration() const
{
return m_trackview->duration();
transitionAdd = false;
//kDebug() << "// TRANSITRION " << i << " IS NOT VALID (INTERN ADDED)";
//break;
- } else if (paramName == "a_track") a_track = p.text().toInt();
- else if (paramName == "b_track") b_track = p.text().toInt();
- else if (paramName == "mlt_service") mlt_service = p.text();
+ } else if (paramName == "a_track") {
+ a_track = qMax(0, p.text().toInt());
+ a_track = qMin(m_projectTracks - 1, a_track);
+ if (a_track != p.text().toInt()) {
+ // the transition track was out of bounds
+ m_documentErrors.append(i18n("Transition %1 had an invalid track: %2 > %3", e.attribute("id"), p.text().toInt(), a_track) + '\n');
+ EffectsList::setProperty(e, "a_track", QString::number(a_track));
+ }
+ } else if (paramName == "b_track") {
+ b_track = qMax(0, p.text().toInt());
+ b_track = qMin(m_projectTracks - 1, b_track);
+ if (b_track != p.text().toInt()) {
+ // the transition track was out of bounds
+ m_documentErrors.append(i18n("Transition %1 had an invalid track: %2 > %3", e.attribute("id"), p.text().toInt(), b_track) + '\n');
+ EffectsList::setProperty(e, "b_track", QString::number(b_track));
+ }
+ } else if (paramName == "mlt_service") mlt_service = p.text();
else if (paramName == "kdenlive_id") transitionId = p.text();
else if (paramName == "geometry") mlt_geometry = p.text();
else if (paramName == "automatic" && p.text() == "1") isAutomatic = true;
ct++;
backupFile = baseFile + "_backup" + QString::number(ct) + ".kdenlive";
}
- if (KIO::NetAccess::file_copy(m_doc->url(), KUrl(backupFile), this)) KMessageBox::information(this, i18n("Your project file was upgraded to the latest Kdenlive document version.\n To make sure you don't loose data, a backup copy called: %1 was created.", backupFile));
+ if (KIO::NetAccess::file_copy(m_doc->url(), KUrl(backupFile), this)) KMessageBox::information(this, i18n("Your project file was upgraded to the latest Kdenlive document version.\n To make sure you don't lose data, a backup copy called %1 was created.", backupFile));
else KMessageBox::information(this, i18n("Your project file was upgraded to the latest Kdenlive document version, it was not possible to create a backup copy.", backupFile));
}
//m_trackview->setCursorPos(cursorPos);
m_trackview->viewport()->update();
}
+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());
+ }
+ }
+}
+
void TrackView::slotReloadTracks()
{
slotRebuildTrackHeaders();
headers_container->layout()->addWidget(frame);
TrackInfo info = list.at(max - i - 1);
header = new HeaderTrack(i, info, height, headers_container);
+ header->setSelectedIndex(m_trackview->selectedTrack());
connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int)));
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(deleteTrack(int)), this, SIGNAL(deleteTrack(int)));
connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int)));
connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int)));