TrackView * TrackContainerView::addTrackView( TrackView * _tv ) { m_trackViews.push_back( _tv ); m_scrollLayout->addWidget( _tv ); connect( this, SIGNAL( positionChanged( const MidiTime & ) ), _tv->getTrackContentWidget(), SLOT( changePosition( const MidiTime & ) ) ); realignTracks(); return( _tv ); }
void TrackContainerView::removeTrackView( TrackView * _tv ) { int index = m_trackViews.indexOf( _tv ); if( index != -1 ) { m_trackViews.removeAt( index ); disconnect( _tv ); m_scrollLayout->removeWidget( _tv ); realignTracks(); if( Engine::getSong() ) { Engine::getSong()->setModified(); } } }
void TrackContainerView::moveTrackViewDown( trackView * _tv ) { m_tc->addJournalCheckPoint(); for( int i = 0; i < m_trackViews.size()-1; ++i ) { trackView * t = m_trackViews[i]; if( t == _tv ) { bbTrack::swapBBTracks( t->getTrack(), m_trackViews[i + 1]->getTrack() ); m_scrollLayout->removeWidget( t ); m_scrollLayout->insertWidget( i + 1, t ); qSwap( m_tc->m_tracks[i], m_tc->m_tracks[i+1] ); m_trackViews.swap( i, i + 1 ); realignTracks(); break; } } }
void TrackContainerView::moveTrackView( TrackView * trackView, int indexTo ) { // Can't move out of bounds if ( indexTo >= m_trackViews.size() || indexTo < 0 ) { return; } // Does not need to move to itself int indexFrom = m_trackViews.indexOf( trackView ); if ( indexFrom == indexTo ) { return; } BBTrack::swapBBTracks( trackView->getTrack(), m_trackViews[indexTo]->getTrack() ); m_scrollLayout->removeWidget( trackView ); m_scrollLayout->insertWidget( indexTo, trackView ); Track * track = m_tc->m_tracks[indexFrom]; m_tc->m_tracks.remove( indexFrom ); m_tc->m_tracks.insert( indexTo, track ); m_trackViews.move( indexFrom, indexTo ); realignTracks(); }
void TrackContainerView::resizeEvent( QResizeEvent * _re ) { realignTracks(); QWidget::resizeEvent( _re ); }