]> git.sesse.net Git - kdenlive/commitdiff
slowly progressing... ruler scrubbing, start of trackview
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 31 Dec 2007 14:24:04 +0000 (14:24 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 31 Dec 2007 14:24:04 +0000 (14:24 +0000)
svn path=/branches/KDE4/; revision=1785

src/customruler.cpp
src/customruler.h
src/kdenlivedoc.cpp
src/kdenlivedoc.h
src/monitor.cpp
src/trackview.cpp
src/trackview.h

index d05caca3e230e6f02aa43ae8df322569fb8f8aee..db04c00895a6611903c58144da100fc02f98aff3 100644 (file)
@@ -78,6 +78,14 @@ void CustomRuler::mousePressEvent ( QMouseEvent * event )
   kDebug()<<pos;
 }
 
+// virtual
+void CustomRuler::mouseMoveEvent ( QMouseEvent * event )
+{
+  int pos = event->x();
+  slotNewValue( pos );
+  kDebug()<<pos;
+}
+
 void CustomRuler::slotNewValue ( int _value )
 {
   m_cursorPosition = _value / pixelPerMark();
index 1d43282906c6b7a3c04ed63cce530c630c6c17cd..9d50f2663b6ac2cc07ddd7e98d6b13f7c40b626a 100644 (file)
@@ -12,6 +12,7 @@ class CustomRuler : public KRuler
   public:
     CustomRuler(Timecode tc, QWidget *parent=0);
     virtual void mousePressEvent ( QMouseEvent * event );
+    virtual void mouseMoveEvent ( QMouseEvent * event );
     void setPixelPerMark (double rate);
     static const int comboScale[];
   protected:
index fe53e502edc491e3a1ae2904f45335273798dde8..dfa8f6baaff68074857bcf2056cc5ec0d09123c1 100644 (file)
@@ -43,7 +43,6 @@ KdenliveDoc::KdenliveDoc(KUrl url, double fps, int width, int height, QWidget *p
       m_document.setContent(&file, false);
       file.close();
       m_projectName = url.fileName();
       KIO::NetAccess::removeTempFile(tmpFile);
     }
     else
@@ -73,7 +72,12 @@ KdenliveDoc::~KdenliveDoc()
 {
 }
 
-Timecode  KdenliveDoc::timecode()
+QDomDocument KdenliveDoc::toXml()
+{
+  return m_document;
+}
+
+Timecode KdenliveDoc::timecode()
 {
   return m_timecode;
 }
index 29c088612a5eb39d8f51d1178474f993326a445c..f49610edaba0830c18224916064c6d3d036b97c8 100644 (file)
@@ -41,6 +41,7 @@ class KdenliveDoc:public QObject {
     int height();
     void setProducers(QDomElement doc);
     Timecode timecode();
+    QDomDocument toXml();
 
   private:
     KUrl m_url;
index 6a399e6abf64b0b2414bb600b24ded090aa4320c..dacacf3bdba441c223105402aecf70366d7fd0a3 100644 (file)
@@ -76,6 +76,7 @@ void Monitor::slotForward()
 void Monitor::slotRewindOneFrame()
 {
   render->play(0);
+  if (m_position < 1) return;
   m_position--;
   render->seekToFrame(m_position);
   ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
@@ -84,6 +85,7 @@ void Monitor::slotRewindOneFrame()
 void Monitor::slotForwardOneFrame()
 {
   render->play(0);
+  if (m_position >= m_length) return;
   m_position++;
   render->seekToFrame(m_position);
   ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
index 68efca20fe87b4556ed9c7e5f2bc03f32e250140..40d7989701486aa99beb11f84d947784cc467a71 100644 (file)
@@ -4,7 +4,8 @@
 
 #include <KDebug>
 
-
+#include "documenttrack.h"
+#include "headertrack.h"
 #include "trackview.h"
 
 TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
@@ -17,9 +18,37 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
   layout->addWidget(m_ruler);
   view->ruler_frame->setLayout(layout);
 
+  m_tracksLayout = new QVBoxLayout;
+  m_tracksLayout->setContentsMargins (0, 0, 0, 0);
+  m_scrollArea = new QScrollArea;
+
+  m_tracksLayout->addWidget(m_scrollArea);
+  m_scrollArea->setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOn);
+  m_scrollArea->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
+  m_tracksAreaLayout = new QVBoxLayout;
+  m_tracksAreaLayout->setContentsMargins (0, 0, 0, 0);
+  m_tracksAreaLayout->insertStretch (1000);
+  m_scrollArea->setLayout(m_tracksAreaLayout);
+  view->tracks_frame->setLayout(m_tracksLayout);
+
+  m_headersLayout = new QVBoxLayout;
+  m_headersLayout->setContentsMargins (0, 0, 0, 0);
+  view->headers_frame->setLayout(m_headersLayout);
+
+  parseDocument(doc->toXml());
+
   connect(view->horizontalSlider, SIGNAL(valueChanged ( int )), this, SLOT(slotChangeZoom( int )));
 }
 
+void TrackView::parseDocument(QDomDocument doc)
+{
+  QDomNodeList tracks = doc.elementsByTagName("kdenlivetrack");
+  for (int i = 0; i < tracks.count(); i++)
+  {
+    slotAddTrack(i);
+  }
+}
+
 void TrackView::slotChangeZoom(int factor)
 {
   m_ruler->setPixelPerMark(factor);
@@ -30,4 +59,13 @@ KdenliveDoc *TrackView::document()
   return m_doc;
 }
 
+void TrackView::slotAddTrack(int ix)
+{
+  DocumentTrack *track = new DocumentTrack();
+  HeaderTrack *header = new HeaderTrack();
+  m_tracksAreaLayout->addWidget(track, ix, Qt::AlignTop);
+  m_headersLayout->addWidget(header, ix, Qt::AlignTop);
+  //track->show();
+}
+
 #include "trackview.moc"
index 63340c3e38ea72df71790a669d399ac77abf490a..c92b55196f5eae8806c7a5a84019495e56124eef 100644 (file)
@@ -1,7 +1,10 @@
 #ifndef TRACKVIEW_H
 #define TRACKVIEW_H
 
+#include <QScrollArea>
+#include <QVBoxLayout>
 #include <KRuler>
+
 #include "ui_timeline_ui.h"
 #include "customruler.h"
 #include "kdenlivedoc.h"
@@ -20,9 +23,15 @@ class TrackView : public QWidget
     Ui::TimeLine_UI *view;
     CustomRuler *m_ruler;
     KdenliveDoc *m_doc;
+    QVBoxLayout *m_tracksLayout;
+    QVBoxLayout *m_headersLayout;
+    QScrollArea *m_scrollArea;
+    QVBoxLayout *m_tracksAreaLayout;
+    void parseDocument(QDomDocument doc);
 
   private slots:
     void slotChangeZoom(int factor);
+    void slotAddTrack(int ix);
 };
 
 #endif