]> git.sesse.net Git - kdenlive/blobdiff - src/trackview.cpp
Ask to change profile if first clip does not match project profile:
[kdenlive] / src / trackview.cpp
index b2d0db4b8da0bcdebbbc96ce18f1090e40962dfb..cb255cd597aa53de893d4c7b248e27b839066820 100644 (file)
@@ -54,7 +54,6 @@ TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
     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)));
@@ -105,6 +104,8 @@ TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
     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;
@@ -116,7 +117,7 @@ TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
     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()
@@ -172,9 +173,10 @@ int TrackView::outPoint() const
     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)
@@ -516,13 +518,9 @@ void TrackView::refresh()
 
 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());
     }
 }
 
@@ -547,10 +545,8 @@ void TrackView::slotRebuildTrackHeaders()
     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);
@@ -568,10 +564,8 @@ void TrackView::slotRebuildTrackHeaders()
         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);
 }
 
@@ -579,10 +573,9 @@ void TrackView::slotRebuildTrackHeaders()
 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);
     }
 }
 
@@ -841,8 +834,8 @@ void TrackView::slotAddProjectEffects(QDomNodeList effects, QDomElement parentNo
                             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(";"));
@@ -992,7 +985,18 @@ void TrackView::updateRuler()
 
 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"