Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
VideoLAN
VLMC
Commits
af2dbf44
Commit
af2dbf44
authored
Mar 22, 2009
by
Ludovic Fauvet
Browse files
Timeline design (inspired from kdenlive)
parent
2159dd79
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/gui/MainWindow.cpp
View file @
af2dbf44
...
...
@@ -50,6 +50,7 @@ void MainWindow::changeEvent( QEvent *e )
void
MainWindow
::
m_initializeDockWidgets
(
void
)
{
Timeline
*
timeline
=
new
Timeline
(
this
);
timeline
->
setSizePolicy
(
QSizePolicy
::
Expanding
,
QSizePolicy
::
Expanding
);
timeline
->
show
();
setCentralWidget
(
timeline
);
...
...
src/gui/Timeline.cpp
View file @
af2dbf44
...
...
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <QHBoxLayout>
#include "Timeline.h"
#include "TracksView.h"
#include "TracksScene.h"
...
...
@@ -28,8 +29,18 @@ Timeline::Timeline( QWidget *parent ) :
QWidget
(
parent
)
{
m_ui
.
setupUi
(
this
);
m_tracksScene
=
new
TracksScene
(
this
);
m_tracksView
=
new
TracksView
(
m_tracksScene
,
m_ui
.
tracksFrame
);
m_tracksView
->
setSizePolicy
(
QSizePolicy
::
Expanding
,
QSizePolicy
::
Expanding
);
m_tracksView
->
scale
(
1
,
1
);
m_tracksView
->
setAlignment
(
Qt
::
AlignLeft
|
Qt
::
AlignTop
);
QHBoxLayout
*
tracksLayout
=
new
QHBoxLayout
();
tracksLayout
->
setContentsMargins
(
0
,
0
,
0
,
0
);
m_ui
.
tracksFrame
->
setLayout
(
tracksLayout
);
tracksLayout
->
addWidget
(
m_tracksView
);
}
void
Timeline
::
changeEvent
(
QEvent
*
e
)
...
...
src/gui/Timeline.h
View file @
af2dbf44
...
...
@@ -33,6 +33,8 @@ class Timeline : public QWidget
Q_DISABLE_COPY
(
Timeline
)
public:
explicit
Timeline
(
QWidget
*
parent
=
0
);
TracksView
*
tracksView
()
{
return
m_tracksView
;
}
TracksScene
*
tracksScene
()
{
return
m_tracksScene
;
}
protected:
virtual
void
changeEvent
(
QEvent
*
e
);
...
...
src/gui/TracksScene.h
View file @
af2dbf44
...
...
@@ -27,6 +27,8 @@
class
TracksScene
:
public
QGraphicsScene
{
Q_OBJECT
public:
TracksScene
(
QObject
*
parent
=
0
);
};
...
...
src/gui/TracksView.cpp
View file @
af2dbf44
...
...
@@ -20,9 +20,59 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <QScrollBar>
#include "TracksView.h"
TracksView
::
TracksView
(
QGraphicsScene
*
scene
,
QWidget
*
parent
)
:
QGraphicsView
(
scene
,
parent
)
:
QGraphicsView
(
scene
,
parent
)
,
m_scene
(
scene
)
{
//TODO should be defined by the settings
m_tracksHeight
=
50
;
//TODO should be dynamic
m_tracksCount
=
5
;
setDuration
(
800
);
setMouseTracking
(
true
);
setAcceptDrops
(
true
);
setContentsMargins
(
0
,
0
,
0
,
0
);
const
int
maxHeight
=
m_tracksHeight
*
m_tracksCount
;
setSceneRect
(
0
,
0
,
sceneRect
().
width
(),
maxHeight
);
}
void
TracksView
::
setDuration
(
int
duration
)
{
int
diff
=
qAbs
(
duration
-
sceneRect
().
width
()
);
if
(
diff
*
matrix
().
m11
()
>
-
50
)
{
if
(
matrix
().
m11
()
<
0.4
)
setSceneRect
(
0
,
0
,
(
duration
+
100
/
matrix
().
m11
()
),
sceneRect
().
height
()
);
else
setSceneRect
(
0
,
0
,
(
duration
+
300
),
sceneRect
().
height
()
);
}
m_projectDuration
=
duration
;
}
void
TracksView
::
resizeEvent
(
QResizeEvent
*
event
)
{
QGraphicsView
::
resizeEvent
(
event
);
}
void
TracksView
::
drawBackground
(
QPainter
*
painter
,
const
QRectF
&
rect
)
{
QColor
base
=
palette
().
button
().
color
();
QRectF
r
=
rect
;
r
.
setWidth
(
r
.
width
()
+
1
);
painter
->
setClipRect
(
r
);
painter
->
drawLine
(
r
.
left
(),
0
,
r
.
right
(),
0
);
uint
tracks
=
m_tracksCount
;
for
(
uint
i
=
0
;
i
<
tracks
;
++
i
)
painter
->
drawLine
(
r
.
left
(),
m_tracksHeight
*
(
i
+
1
),
r
.
right
(),
m_tracksHeight
*
(
i
+
1
)
);
int
lowerLimit
=
m_tracksHeight
*
m_tracksCount
+
1
;
if
(
height
()
>
lowerLimit
)
painter
->
fillRect
(
QRectF
(
r
.
left
(),
lowerLimit
,
r
.
width
(),
height
()
-
lowerLimit
),
QBrush
(
base
)
);
}
src/gui/TracksView.h
View file @
af2dbf44
...
...
@@ -27,8 +27,22 @@
class
TracksView
:
public
QGraphicsView
{
Q_OBJECT
public:
TracksView
(
QGraphicsScene
*
scene
,
QWidget
*
parent
=
0
);
void
setDuration
(
int
duration
);
int
duration
()
{
return
m_projectDuration
;
}
protected:
virtual
void
resizeEvent
(
QResizeEvent
*
event
);
virtual
void
drawBackground
(
QPainter
*
painter
,
const
QRectF
&
rect
);
private:
QGraphicsScene
*
m_scene
;
int
m_tracksHeight
;
int
m_tracksCount
;
int
m_projectDuration
;
};
#endif // TRACKSVIEW_H
src/gui/ui/Timeline.ui
View file @
af2dbf44
...
...
@@ -6,10 +6,16 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
4
29
</width>
<height>
1
67
</height>
<width>
4
00
</width>
<height>
1
50
</height>
</rect>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
400
</width>
<height>
150
</height>
</size>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
</property>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment