Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
VLMC
Commits
35495fd0
Commit
35495fd0
authored
Jan 15, 2010
by
Ludovic Fauvet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UndoRedo: Fix addclip issues with audio
parent
e461e760
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
33 deletions
+67
-33
src/Gui/timeline/Timeline.cpp
src/Gui/timeline/Timeline.cpp
+4
-4
src/Gui/timeline/Timeline.h
src/Gui/timeline/Timeline.h
+2
-2
src/Gui/timeline/TracksView.cpp
src/Gui/timeline/TracksView.cpp
+57
-25
src/Gui/timeline/TracksView.h
src/Gui/timeline/TracksView.h
+4
-2
No files found.
src/Gui/timeline/Timeline.cpp
View file @
35495fd0
...
...
@@ -153,9 +153,9 @@ void Timeline::setTool( ToolButtons button )
tracksView
()
->
setTool
(
button
);
}
void
Timeline
::
actionAddClip
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
,
MainWorkflow
::
TrackType
)
void
Timeline
::
actionAddClip
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
,
MainWorkflow
::
TrackType
trackType
)
{
tracksView
()
->
addMediaItem
(
clip
,
track
,
start
);
tracksView
()
->
addMediaItem
(
clip
,
track
,
trackType
,
start
);
}
void
Timeline
::
actionMoveClip
(
const
QUuid
&
uuid
,
unsigned
int
track
,
qint64
time
,
MainWorkflow
::
TrackType
)
...
...
@@ -166,7 +166,7 @@ void Timeline::actionMoveClip( const QUuid& uuid, unsigned int track, qint64 tim
tracksRuler
()
->
update
();
}
void
Timeline
::
actionRemoveClip
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
)
void
Timeline
::
actionRemoveClip
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
)
{
tracksView
()
->
removeMediaItem
(
clip
->
getUuid
(),
track
);
tracksView
()
->
removeMediaItem
(
clip
->
getUuid
(),
track
,
trackType
);
}
src/Gui/timeline/Timeline.h
View file @
35495fd0
...
...
@@ -78,7 +78,7 @@ public slots:
* \param start The position in frames.
* \param
*/
void
actionAddClip
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
,
MainWorkflow
::
TrackType
);
void
actionAddClip
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
,
MainWorkflow
::
TrackType
trackType
);
/**
* \brief Move an item in the timeline.
* \param uuid The Universally Unique Identifier of the item.
...
...
@@ -91,7 +91,7 @@ public slots:
* \param uuid The Universally Unique Identifier of the item.
* \param track The current track of the item.
*/
void
actionRemoveClip
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
);
void
actionRemoveClip
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
);
protected:
virtual
void
changeEvent
(
QEvent
*
e
);
...
...
src/Gui/timeline/TracksView.cpp
View file @
35495fd0
...
...
@@ -164,7 +164,7 @@ void TracksView::deleteMedia( const QUuid& uuid )
MainWorkflow
::
TrackType
itemTt
=
item
->
mediaType
();
// Remove the item from the timeline
removeMediaItem
(
itemUuid
,
itemTn
);
removeMediaItem
(
itemUuid
,
itemTn
,
itemTt
);
// Removing the item from the backend.
m_renderer
->
removeClip
(
itemUuid
,
...
...
@@ -174,44 +174,76 @@ void TracksView::deleteMedia( const QUuid& uuid )
}
}
void
TracksView
::
addMediaItem
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
)
void
TracksView
::
addMediaItem
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
,
qint64
start
)
{
Q_ASSERT
(
clip
);
// If there is not enough tracks to insert
// the clip do it now.
if
(
track
>
(
quint32
)
m_num
VideoTrack
)
if
(
track
Type
==
MainWorkflow
::
VideoTrack
)
{
unsigned
int
nbTrackToAdd
=
track
-
m_numVideoTrack
;
for
(
unsigned
int
i
=
0
;
i
<
nbTrackToAdd
;
++
i
)
if
(
track
>
(
quint32
)
m_numVideoTrack
)
{
unsigned
int
nbTrackToAdd
=
track
-
m_numVideoTrack
;
for
(
unsigned
int
i
=
0
;
i
<
nbTrackToAdd
;
++
i
)
addVideoTrack
();
}
// Add the empty upper track
if
(
track
+
1
==
m_numVideoTrack
)
addVideoTrack
();
}
// Add the empty upper track
if
(
track
+
1
==
m_numVideoTrack
)
addVideoTrack
();
else
if
(
trackType
==
MainWorkflow
::
AudioTrack
)
{
if
(
track
>
(
quint32
)
m_numAudioTrack
)
{
unsigned
int
nbTrackToAdd
=
track
-
m_numAudioTrack
;
for
(
unsigned
int
i
=
0
;
i
<
nbTrackToAdd
;
++
i
)
addAudioTrack
();
}
// Add the empty upper track
if
(
track
+
1
==
m_numAudioTrack
)
addAudioTrack
();
}
// Is the clip already existing in the timeline ?
//TODO: please optimize me!
QList
<
QGraphicsItem
*>
sceneItems
=
m_scene
->
items
();
for
(
int
i
=
0
;
i
<
sceneItems
.
size
();
++
i
)
QList
<
QGraphicsItem
*>
trackItems
=
getTrack
(
trackType
,
track
)
->
childItems
();;
for
(
int
i
=
0
;
i
<
trackItems
.
size
();
++
i
)
{
AbstractGraphicsMediaItem
*
item
=
dynamic_cast
<
AbstractGraphicsMediaItem
*>
(
scene
Items
.
at
(
i
)
);
dynamic_cast
<
AbstractGraphicsMediaItem
*>
(
track
Items
.
at
(
i
)
);
if
(
!
item
||
item
->
uuid
()
!=
clip
->
getUuid
()
)
continue
;
// Item already exist: goodbye!
return
;
}
GraphicsMovieItem
*
item
=
new
GraphicsMovieItem
(
clip
);
item
->
m_tracksView
=
this
;
item
->
setHeight
(
tracksHeight
()
);
item
->
setParentItem
(
getTrack
(
MainWorkflow
::
VideoTrack
,
track
)
);
item
->
setStartPos
(
start
);
item
->
oldTrackNumber
=
track
;
item
->
oldPosition
=
start
;
connect
(
item
,
SIGNAL
(
split
(
GraphicsMovieItem
*
,
qint64
)
),
this
,
SLOT
(
split
(
GraphicsMovieItem
*
,
qint64
)
)
);
moveMediaItem
(
item
,
track
,
start
);
if
(
trackType
==
MainWorkflow
::
VideoTrack
)
{
GraphicsMovieItem
*
item
=
new
GraphicsMovieItem
(
clip
);
item
->
m_tracksView
=
this
;
item
->
setHeight
(
tracksHeight
()
);
item
->
setParentItem
(
getTrack
(
trackType
,
track
)
);
item
->
setStartPos
(
start
);
item
->
oldTrackNumber
=
track
;
item
->
oldPosition
=
start
;
moveMediaItem
(
item
,
track
,
start
);
// Split is currently only supported for video
connect
(
item
,
SIGNAL
(
split
(
GraphicsMovieItem
*
,
qint64
)
),
this
,
SLOT
(
split
(
GraphicsMovieItem
*
,
qint64
)
)
);
}
else
if
(
trackType
==
MainWorkflow
::
AudioTrack
)
{
//FIXME If a GraphicsAudioItem is downcasted to an AbstractGraphicsMediaItem
// the item is not drawn in the timeline.
GraphicsAudioItem
*
item
=
new
GraphicsAudioItem
(
clip
);
item
->
m_tracksView
=
this
;
item
->
setHeight
(
tracksHeight
()
);
item
->
setParentItem
(
getTrack
(
trackType
,
track
)
);
item
->
setStartPos
(
start
);
item
->
oldTrackNumber
=
track
;
item
->
oldPosition
=
start
;
moveMediaItem
(
item
,
track
,
start
);
}
updateDuration
();
}
...
...
@@ -245,7 +277,7 @@ void TracksView::dragEnterEvent( QDragEnterEvent* event )
// Group the items together
m_dragVideoItem
->
group
(
m_dragAudioItem
);
//TODO connect the split signal to the
audi
o clip
//TODO connect the split signal to the
vide
o clip
connect
(
m_dragVideoItem
,
SIGNAL
(
split
(
GraphicsMovieItem
*
,
qint64
)
),
this
,
SLOT
(
split
(
GraphicsMovieItem
*
,
qint64
)
)
);
...
...
@@ -416,9 +448,9 @@ void TracksView::moveMediaItem( AbstractGraphicsMediaItem* item, quint32 track,
}
}
void
TracksView
::
removeMediaItem
(
const
QUuid
&
uuid
,
unsigned
int
track
)
void
TracksView
::
removeMediaItem
(
const
QUuid
&
uuid
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
)
{
QList
<
QGraphicsItem
*>
trackItems
=
getTrack
(
MainWorkflow
::
VideoTrack
,
track
)
->
childItems
();;
QList
<
QGraphicsItem
*>
trackItems
=
getTrack
(
trackType
,
track
)
->
childItems
();;
for
(
int
i
=
0
;
i
<
trackItems
.
size
();
++
i
)
{
...
...
src/Gui/timeline/TracksView.h
View file @
35495fd0
...
...
@@ -158,9 +158,10 @@ public slots:
* \brief Insert an item into the timeline.
* \param clip Clip to insert.
* \param track The track's number.
* \param trackType The type of the track (Audio or Video)
* \param start The position in frames.
*/
void
addMediaItem
(
Clip
*
clip
,
unsigned
int
track
,
qint64
start
);
void
addMediaItem
(
Clip
*
clip
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
,
qint64
start
);
/**
* \brief Move an item in the timeline.
* \param uuid The Universally Unique Identifier of the item.
...
...
@@ -172,8 +173,9 @@ public slots:
* \brief Remove an item from the timeline.
* \param uuid The Universally Unique Identifier of the item.
* \param track The current track of the item.
* \param trackType The type of the track (Audio or Video)
*/
void
removeMediaItem
(
const
QUuid
&
uuid
,
unsigned
int
track
);
void
removeMediaItem
(
const
QUuid
&
uuid
,
unsigned
int
track
,
MainWorkflow
::
TrackType
trackType
);
protected:
virtual
void
resizeEvent
(
QResizeEvent
*
event
);
...
...
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