wrote mechanisms that allow the tracks to be resized from the trackview

This commit is contained in:
itsmattkc
2019-12-08 15:14:43 +11:00
parent 2207aa3fd5
commit 58bcbca4c5
16 changed files with 375 additions and 59 deletions
+6
View File
@@ -46,6 +46,7 @@ TimelineOutput::TimelineOutput()
connect(list, SIGNAL(BlockRemoved(Block*)), this, SIGNAL(BlockRemoved(Block*)));
connect(list, SIGNAL(TrackAdded(TrackOutput*)), this, SLOT(TrackListAddedTrack(TrackOutput*)));
connect(list, SIGNAL(TrackRemoved(TrackOutput*)), this, SIGNAL(TrackRemoved(TrackOutput*)));
connect(list, SIGNAL(TrackHeightChanged(int, int)), this, SLOT(TrackHeightChangedSlot(int, int)));
}
}
@@ -196,3 +197,8 @@ void TimelineOutput::TrackListAddedTrack(TrackOutput *track)
TrackType type = static_cast<TrackList*>(sender())->TrackType();
emit TrackAdded(track, type);
}
void TimelineOutput::TrackHeightChangedSlot(int index, int height)
{
emit TrackHeightChanged(static_cast<TrackList*>(sender())->type(), index, height);
}
+4
View File
@@ -70,6 +70,8 @@ signals:
void TrackAdded(TrackOutput* track, TrackType type);
void TrackRemoved(TrackOutput* track);
void TrackHeightChanged(TrackType type, int index, int height);
protected:
virtual NodeValueTable Value(const NodeValueDatabase& value) const override;
@@ -93,6 +95,8 @@ private slots:
void TrackListAddedTrack(TrackOutput* track);
void TrackHeightChangedSlot(int index, int height);
};
#endif // TIMELINEOUTPUT_H
+23 -9
View File
@@ -33,6 +33,11 @@ TrackList::TrackList(TimelineOutput* parent, const enum TrackType &type, NodeInp
connect(track_input, SIGNAL(SizeChanged(int)), this, SLOT(TrackListSizeChanged(int)));
}
const TrackType &TrackList::type() const
{
return type_;
}
void TrackList::TrackAddedBlock(Block *block)
{
emit BlockAdded(block, static_cast<TrackOutput*>(sender())->Index());
@@ -55,12 +60,12 @@ void TrackList::TrackListSizeChanged(int size)
}
}
const QVector<TrackOutput *> &TrackList::Tracks()
const QVector<TrackOutput *> &TrackList::Tracks() const
{
return track_cache_;
}
TrackOutput *TrackList::TrackAt(int index)
TrackOutput *TrackList::TrackAt(int index) const
{
if (index < 0 || index >= track_cache_.size()) {
return nullptr;
@@ -69,16 +74,21 @@ TrackOutput *TrackList::TrackAt(int index)
return track_cache_.at(index);
}
const rational &TrackList::TrackLength()
const rational &TrackList::TrackLength() const
{
return total_length_;
}
const enum TrackType &TrackList::TrackType()
const enum TrackType &TrackList::TrackType() const
{
return type_;
}
int TrackList::TrackCount() const
{
return track_cache_.size();
}
TrackOutput* TrackList::AddTrack()
{
TrackOutput* track = new TrackOutput();
@@ -104,9 +114,6 @@ TrackOutput* TrackList::AddTrack()
}*/
// End test code
// Connect this track to the current last track
NodeParam::ConnectEdge(track->output(), assoc_input);
return track;
}
@@ -132,13 +139,14 @@ void TrackList::TrackConnected(NodeEdgePtr edge)
Node* connected_node = edge->output()->parentNode();
if (connected_node->IsTrack()) {
TrackOutput* connected_track = static_cast<TrackOutput*>(connected_node);// Traverse through Tracks caching and connecting them
TrackOutput* connected_track = static_cast<TrackOutput*>(connected_node);
track_cache_.replace(track_index, connected_track);
connect(connected_track, SIGNAL(BlockAdded(Block*)), this, SLOT(TrackAddedBlock(Block*)));
connect(connected_track, SIGNAL(BlockRemoved(Block*)), this, SLOT(TrackRemovedBlock(Block*)));
connect(connected_track, SIGNAL(TrackLengthChanged()), this, SLOT(UpdateTotalLength()));
connect(connected_track, SIGNAL(TrackHeightChanged(int)), this, SLOT(TrackHeightChangedSlot(int)));
connected_track->SetIndex(track_index);
connected_track->set_track_type(type_);
@@ -175,6 +183,7 @@ void TrackList::TrackDisconnected(NodeEdgePtr edge)
disconnect(track, SIGNAL(BlockAdded(Block*)), this, SLOT(TrackAddedBlock(Block*)));
disconnect(track, SIGNAL(BlockRemoved(Block*)), this, SLOT(TrackRemovedBlock(Block*)));
disconnect(track, SIGNAL(TrackLengthChanged()), this, SLOT(UpdateTotalLength()));
disconnect(track, SIGNAL(TrackHeightChanged(int)), this, SLOT(TrackHeightChangedSlot(int)));
emit TrackListChanged();
@@ -182,7 +191,7 @@ void TrackList::TrackDisconnected(NodeEdgePtr edge)
}
}
NodeGraph *TrackList::GetParentGraph()
NodeGraph *TrackList::GetParentGraph() const
{
return static_cast<NodeGraph*>(parent()->parent());
}
@@ -199,3 +208,8 @@ void TrackList::UpdateTotalLength()
emit LengthChanged(total_length_);
}
void TrackList::TrackHeightChangedSlot(int height)
{
emit TrackHeightChanged(static_cast<TrackOutput*>(sender())->Index(), height);
}
+16 -5
View File
@@ -34,17 +34,21 @@ class TrackList : public QObject {
public:
TrackList(TimelineOutput *parent, const enum TrackType& type, NodeInputArray* track_input);
const QVector<TrackOutput*>& Tracks();
const enum TrackType& type() const;
TrackOutput* TrackAt(int index);
const QVector<TrackOutput*>& Tracks() const;
TrackOutput* TrackAt(int index) const;
TrackOutput *AddTrack();
void RemoveTrack();
const rational& TrackLength();
const rational& TrackLength() const;
const enum TrackType& TrackType();
const enum TrackType& TrackType() const;
int TrackCount() const;
signals:
void BlockAdded(Block* block, int index);
@@ -59,8 +63,10 @@ signals:
void LengthChanged(const rational &length);
void TrackHeightChanged(int index, int height);
private:
NodeGraph* GetParentGraph();
NodeGraph* GetParentGraph() const;
/**
* @brief A cache of connected Tracks
@@ -104,6 +110,11 @@ private slots:
*/
void UpdateTotalLength();
/**
* @brief Slot when a track height changes, transforms to the TrackHeightChanged signal which includes a track index
*/
void TrackHeightChangedSlot(int height);
};
#endif // TRACKLIST_H