3 #include <QStylePainter>
8 #include "definitions.h"
9 #include "documentvideotrack.h"
10 #include "documentaudiotrack.h"
11 #include "headertrack.h"
12 #include "trackview.h"
14 TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
15 : QWidget(parent), m_doc(doc), m_scale(1.0)
17 view = new Ui::TimeLine_UI();
19 m_ruler = new CustomRuler(doc->timecode());
20 QVBoxLayout *layout = new QVBoxLayout;
21 layout->addWidget(m_ruler);
22 view->ruler_frame->setLayout(layout);
24 m_tracksLayout = new QVBoxLayout;
25 m_tracksLayout->setContentsMargins (0, 0, 0, 0);
26 m_scrollArea = new QScrollArea;
28 m_tracksLayout->addWidget(m_scrollArea);
29 m_scrollArea->setHorizontalScrollBarPolicy ( Qt::ScrollBarAlwaysOn);
30 m_scrollArea->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
31 m_scrollArea->setWidgetResizable( true );
33 m_scrollBox = new QFrame(m_scrollArea);
34 //m_scrollBox ->setFlat(false);
35 m_scrollBox ->setFocusPolicy(Qt::WheelFocus);
36 m_scrollBox->setSizePolicy( QSizePolicy::Preferred,QSizePolicy::Fixed );
38 m_tracksAreaLayout = new QVBoxLayout(m_scrollBox);
39 m_tracksAreaLayout->setContentsMargins (0, 0, 0, 0);
40 m_tracksAreaLayout->setSpacing(0);
41 //MyScroll->setGeometry(...);
42 m_scrollArea->setWidget(m_scrollBox);
44 view->tracks_frame->setLayout(m_tracksLayout);
46 m_headersLayout = new QVBoxLayout;
47 m_headersLayout->setContentsMargins (0, 0, 0, 0);
48 view->headers_frame->setLayout(m_headersLayout);
50 parseDocument(doc->toXml());
52 connect(view->horizontalSlider, SIGNAL(valueChanged ( int )), this, SLOT(slotChangeZoom( int )));
55 void TrackView::parseDocument(QDomDocument doc)
57 QDomNodeList tracks = doc.elementsByTagName("playlist");
58 m_projectDuration = 300;
60 for (int i = 0; i < tracks.count(); i++)
62 if (tracks.item(i).toElement().attribute("hide", QString::null) == "video") {
63 // this is an audio track
64 duration = slotAddAudioTrack(i, tracks.item(i).toElement());
66 else duration = slotAddVideoTrack(i, tracks.item(i).toElement());
67 if (duration > m_projectDuration) m_projectDuration = duration;
69 m_tracksAreaLayout->insertStretch (1000);
70 //m_scrollBox->setGeometry(0, 0, 300 * zoomFactor(), m_scrollArea->height());
73 void TrackView::slotChangeZoom(int factor)
75 m_ruler->setPixelPerMark(factor);
76 m_scale = m_ruler->pixelPerMark();
77 for (int i = 0; i < documentTracks.count(); i++) {
78 kDebug()<<"------REPAINTING OBJECT";
79 documentTracks.at(i)->update();
80 //documentTracks.at(i)->setFixedWidth(300 * zoomFactor());
82 m_scrollBox->setFixedWidth(( m_projectDuration + 300) * zoomFactor());
83 /*m_scrollArea->horizontalScrollBar()->setMaximum(300 * zoomFactor());
84 m_scrollArea->horizontalScrollBar()->setPageStep(FRAME_SIZE * zoomFactor());*/
87 const double TrackView::zoomFactor() const
89 return m_scale * FRAME_SIZE;
92 KdenliveDoc *TrackView::document()
97 int TrackView::slotAddAudioTrack(int ix, QDomElement xml)
99 DocumentTrack *track = new DocumentAudioTrack(xml, this, m_scrollBox);
100 HeaderTrack *header = new HeaderTrack();
101 m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop);
102 m_headersLayout->addWidget(header); //, ix, Qt::AlignTop);
103 documentTracks.insert(ix, track);
104 return track->duration();
108 int TrackView::slotAddVideoTrack(int ix, QDomElement xml)
110 DocumentTrack *track = new DocumentVideoTrack(xml, this, m_scrollBox);
111 HeaderTrack *header = new HeaderTrack();
112 m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop);
113 m_headersLayout->addWidget(header); //, ix, Qt::AlignTop);
114 documentTracks.insert(ix, track);
115 return track->duration();
119 #include "trackview.moc"