]> git.sesse.net Git - kdenlive/blobdiff - src/trackview.cpp
insert & move timeline clips
[kdenlive] / src / trackview.cpp
index a6104ddbe709246e3799ea6cadc2ec7409818eb7..2425e236c68efe5525d0c5a74da44916e7db4b70 100644 (file)
@@ -40,11 +40,11 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
   view->setupUi(this);
   m_ruler = new CustomRuler(doc->timecode());
   QVBoxLayout *layout = new QVBoxLayout;
-  layout->addWidget(m_ruler);
   view->ruler_frame->setLayout(layout);
+  layout->addWidget(m_ruler);
 
   m_scene = new QGraphicsScene();
-  m_trackview = new CustomTrackView(m_doc->commandStack(), m_scene, this);
+  m_trackview = new CustomTrackView(doc, m_scene, this);
   m_trackview->scale(1, 1);
   m_trackview->setAlignment(Qt::AlignLeft | Qt::AlignTop);
   //m_scene->addRect(QRectF(0, 0, 100, 100), QPen(), QBrush(Qt::red));
@@ -59,13 +59,13 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
   tracksLayout->addWidget(m_trackview);
 
   parseDocument(doc->toXml());
-
+/*
   TrackPanelClipMoveFunction *m_moveFunction = new TrackPanelClipMoveFunction(this);
   registerFunction("move", m_moveFunction);
-  setEditMode("move");
+  setEditMode("move");*/
 
   connect(view->horizontalSlider, SIGNAL(valueChanged ( int )), this, SLOT(slotChangeZoom( int )));
-  connect(m_ruler, SIGNAL(cursorMoved ( int )), m_trackview, SLOT(setCursorPos( int )));
+  connect(m_ruler, SIGNAL(cursorMoved ( int )), this, SLOT(setCursorPos( int )));
   connect(m_trackview, SIGNAL(cursorMoved ( int )), this, SLOT(slotCursorMoved( int )));
   connect(m_trackview, SIGNAL(zoomIn ()), this, SLOT(slotZoomIn()));
   connect(m_trackview, SIGNAL(zoomOut ()), this, SLOT(slotZoomOut()));
@@ -95,6 +95,7 @@ int TrackView::tracksNumber()
 void TrackView::parseDocument(QDomDocument doc)
 {
   int cursorPos = 0;
+  kDebug()<<"//// DOCUMENT: "<<doc.toString();
   QDomNode props = doc.elementsByTagName("properties").item(0);
   if (!props.isNull()) {
     cursorPos = props.toElement().attribute("timeline_position").toInt();
@@ -120,10 +121,21 @@ void TrackView::parseDocument(QDomDocument doc)
   //m_scrollBox->setGeometry(0, 0, 300 * zoomFactor(), m_scrollArea->height());
 }
 
+void TrackView::setCursorPos(int pos)
+{
+  emit cursorMoved(pos);
+  m_trackview->setCursorPos(pos * m_scale);
+}
+
+void TrackView::moveCursorPos(int pos)
+{
+  m_trackview->setCursorPos(pos * m_scale, false);
+  //m_ruler->slotNewValue(pos * FRAME_SIZE, false);
+}
+
 void TrackView::slotCursorMoved(int pos, bool emitSignal)
 {
-  kDebug()<<"///// CURSOR: "<<pos;
-  m_ruler->slotNewValue(pos * FRAME_SIZE, emitSignal); //(int) m_trackview->mapToScene(QPoint(pos, 0)).x());
+  m_ruler->slotNewValue(pos * FRAME_SIZE / m_scale, emitSignal); //(int) m_trackview->mapToScene(QPoint(pos, 0)).x());
   //m_trackview->setCursorPos(pos);
   //m_trackview->invalidateScene(QRectF(), QGraphicsScene::ForegroundLayer);
 }
@@ -166,11 +178,11 @@ int TrackView::slotAddAudioTrack(int ix, QDomElement xml)
 {
   kDebug()<<"*************  ADD AUDIO TRACK "<<ix;
   m_trackview->addTrack();
-  DocumentTrack *track = new DocumentAudioTrack(xml, this, m_trackview);
+  //DocumentTrack *track = new DocumentAudioTrack(xml, this, m_trackview);
   HeaderTrack *header = new HeaderTrack();
   //m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop);
   m_headersLayout->addWidget(header); //, ix, Qt::AlignTop);
-  documentTracks.insert(ix, track);
+  //documentTracks.insert(ix, track);
   return 0;
   //track->show();
 }
@@ -178,7 +190,7 @@ int TrackView::slotAddAudioTrack(int ix, QDomElement xml)
 int TrackView::slotAddVideoTrack(int ix, QDomElement xml)
 {
   m_trackview->addTrack();
-  DocumentTrack *track = new DocumentVideoTrack(xml, this, m_trackview);
+  //DocumentTrack *track = new DocumentVideoTrack(xml, this, m_trackview);
   HeaderTrack *header = new HeaderTrack();
   int trackTop = 50 * ix;
   int trackBottom = trackTop + 50;
@@ -194,7 +206,7 @@ int TrackView::slotAddVideoTrack(int ix, QDomElement xml)
     int in = elem.attribute("in", 0).toInt();
     int out = elem.attribute("out", 0).toInt() - in;
     //kDebug()<<"++++++++++++++\n\n / / /ADDING CLIP: "<<clip.cropTime<<", out: "<<clip.duration<<", Producer: "<<clip.producer<<"\n\n++++++++++++++++++++";
-    ClipItem *item = new ClipItem(elem, ix, in, QRectF(position * m_scale, trackTop + 1, out * m_scale, 49), out);
+    ClipItem *item = new ClipItem(elem, ix, position, QRectF(position * m_scale, trackTop + 1, out * m_scale, 49), out);
     m_scene->addItem(item);
     position += out;
 
@@ -205,7 +217,7 @@ int TrackView::slotAddVideoTrack(int ix, QDomElement xml)
 
   //m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop);
   m_headersLayout->addWidget(header); //, ix, Qt::AlignTop);
-  documentTracks.insert(ix, track);
+  //documentTracks.insert(ix, track);
   kDebug()<<"*************  ADD VIDEO TRACK "<<ix<<", DURATION: "<<position;
   return position;
   //track->show();