]> git.sesse.net Git - kdenlive/blob - src/trackview.cpp
40d7989701486aa99beb11f84d947784cc467a71
[kdenlive] / src / trackview.cpp
1
2 #include <QMouseEvent>
3 #include <QStylePainter>
4
5 #include <KDebug>
6
7 #include "documenttrack.h"
8 #include "headertrack.h"
9 #include "trackview.h"
10
11 TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
12     : QWidget(parent), m_doc(doc)
13 {
14   view = new Ui::TimeLine_UI();
15   view->setupUi(this);
16   m_ruler = new CustomRuler(doc->timecode());
17   QVBoxLayout *layout = new QVBoxLayout;
18   layout->addWidget(m_ruler);
19   view->ruler_frame->setLayout(layout);
20
21   m_tracksLayout = new QVBoxLayout;
22   m_tracksLayout->setContentsMargins (0, 0, 0, 0);
23   m_scrollArea = new QScrollArea;
24
25   m_tracksLayout->addWidget(m_scrollArea);
26   m_scrollArea->setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOn);
27   m_scrollArea->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
28   m_tracksAreaLayout = new QVBoxLayout;
29   m_tracksAreaLayout->setContentsMargins (0, 0, 0, 0);
30   m_tracksAreaLayout->insertStretch (1000);
31   m_scrollArea->setLayout(m_tracksAreaLayout);
32   view->tracks_frame->setLayout(m_tracksLayout);
33
34   m_headersLayout = new QVBoxLayout;
35   m_headersLayout->setContentsMargins (0, 0, 0, 0);
36   view->headers_frame->setLayout(m_headersLayout);
37
38   parseDocument(doc->toXml());
39
40   connect(view->horizontalSlider, SIGNAL(valueChanged ( int )), this, SLOT(slotChangeZoom( int )));
41 }
42
43 void TrackView::parseDocument(QDomDocument doc)
44 {
45   QDomNodeList tracks = doc.elementsByTagName("kdenlivetrack");
46   for (int i = 0; i < tracks.count(); i++)
47   {
48     slotAddTrack(i);
49   }
50 }
51
52 void TrackView::slotChangeZoom(int factor)
53 {
54   m_ruler->setPixelPerMark(factor);
55 }
56
57 KdenliveDoc *TrackView::document()
58 {
59   return m_doc;
60 }
61
62 void TrackView::slotAddTrack(int ix)
63 {
64   DocumentTrack *track = new DocumentTrack();
65   HeaderTrack *header = new HeaderTrack();
66   m_tracksAreaLayout->addWidget(track, ix, Qt::AlignTop);
67   m_headersLayout->addWidget(header, ix, Qt::AlignTop);
68   //track->show();
69 }
70
71 #include "trackview.moc"