mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-01-19 07:27:59 +01:00
* Auto-select first track in list to prevent default cover showing up in contextual view.
This commit is contained in:
parent
3f1e97bb43
commit
b8ded4fde2
@ -712,7 +712,10 @@ PlayableModel::insertInternal( const QList< T >& items, int row, const QList< To
|
||||
emit endInsertRows();
|
||||
emit itemCountChanged( rowCount( QModelIndex() ) );
|
||||
if ( parent.isValid() )
|
||||
{
|
||||
emit selectRequest( index( 0, 0, parent ) );
|
||||
emit expandRequest( parent );
|
||||
}
|
||||
|
||||
finishLoading();
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ signals:
|
||||
void currentIndexChanged();
|
||||
|
||||
void expandRequest( const QPersistentModelIndex& index );
|
||||
void selectRequest( const QPersistentModelIndex& index );
|
||||
|
||||
public slots:
|
||||
virtual void setCurrentIndex( const QModelIndex& index );
|
||||
|
@ -113,6 +113,7 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel )
|
||||
disconnect( m_model, SIGNAL( indexResolved( QModelIndex ) ), this, SLOT( onIndexResolved( QModelIndex ) ) );
|
||||
disconnect( m_model, SIGNAL( currentIndexChanged() ), this, SIGNAL( currentIndexChanged() ) );
|
||||
disconnect( m_model, SIGNAL( expandRequest( QPersistentModelIndex ) ), this, SLOT( expandRequested( QPersistentModelIndex ) ) );
|
||||
disconnect( m_model, SIGNAL( selectRequest( QPersistentModelIndex ) ), this, SLOT( selectRequested( QPersistentModelIndex ) ) );
|
||||
}
|
||||
|
||||
m_model = sourceModel;
|
||||
@ -126,6 +127,7 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel )
|
||||
connect( m_model, SIGNAL( indexResolved( QModelIndex ) ), SLOT( onIndexResolved( QModelIndex ) ) );
|
||||
connect( m_model, SIGNAL( currentIndexChanged() ), SIGNAL( currentIndexChanged() ) );
|
||||
connect( m_model, SIGNAL( expandRequest( QPersistentModelIndex ) ), SLOT( expandRequested( QPersistentModelIndex ) ) );
|
||||
connect( m_model, SIGNAL( selectRequest( QPersistentModelIndex ) ), SLOT( selectRequested( QPersistentModelIndex ) ) );
|
||||
}
|
||||
|
||||
QSortFilterProxyModel::setSourceModel( m_model );
|
||||
@ -669,3 +671,10 @@ PlayableProxyModel::expandRequested( const QPersistentModelIndex& idx )
|
||||
{
|
||||
emit expandRequest( QPersistentModelIndex( mapFromSource( idx ) ) );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlayableProxyModel::selectRequested( const QPersistentModelIndex& idx )
|
||||
{
|
||||
emit selectRequest( QPersistentModelIndex( mapFromSource( idx ) ) );
|
||||
}
|
||||
|
@ -100,6 +100,7 @@ signals:
|
||||
void itemCountChanged( unsigned int items );
|
||||
|
||||
void expandRequest( const QPersistentModelIndex& index );
|
||||
void selectRequest( const QPersistentModelIndex& index );
|
||||
|
||||
protected:
|
||||
virtual bool filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent ) const;
|
||||
@ -112,6 +113,7 @@ private slots:
|
||||
void onIndexResolved( const QModelIndex& index );
|
||||
|
||||
void expandRequested( const QPersistentModelIndex& index );
|
||||
void selectRequested( const QPersistentModelIndex& index );
|
||||
|
||||
private:
|
||||
virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const;
|
||||
|
@ -331,8 +331,11 @@ PlaylistModel::insertEntries( const QList< Tomahawk::plentry_ptr >& entries, int
|
||||
|
||||
emit endInsertRows();
|
||||
emit itemCountChanged( rowCount( QModelIndex() ) );
|
||||
emit selectRequest( index( 0, 0, parent ) );
|
||||
if ( parent.isValid() )
|
||||
{
|
||||
emit expandRequest( parent );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -164,6 +164,7 @@ TrackView::setProxyModel( PlayableProxyModel* model )
|
||||
disconnect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( verifySize() ) );
|
||||
disconnect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( verifySize() ) );
|
||||
disconnect( m_proxyModel, SIGNAL( expandRequest( QPersistentModelIndex ) ), this, SLOT( expand( QPersistentModelIndex ) ) );
|
||||
disconnect( m_proxyModel, SIGNAL( selectRequest( QPersistentModelIndex ) ), this, SLOT( select( QPersistentModelIndex ) ) );
|
||||
}
|
||||
|
||||
m_proxyModel = model;
|
||||
@ -175,6 +176,7 @@ TrackView::setProxyModel( PlayableProxyModel* model )
|
||||
connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) );
|
||||
connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) );
|
||||
connect( m_proxyModel, SIGNAL( expandRequest( QPersistentModelIndex ) ), SLOT( expand( QPersistentModelIndex ) ) );
|
||||
connect( m_proxyModel, SIGNAL( selectRequest( QPersistentModelIndex ) ), SLOT( select( QPersistentModelIndex ) ) );
|
||||
|
||||
m_delegate = new PlaylistItemDelegate( this, m_proxyModel );
|
||||
QTreeView::setItemDelegate( m_delegate );
|
||||
@ -207,7 +209,8 @@ TrackView::setPlaylistItemDelegate( PlaylistItemDelegate* delegate )
|
||||
void
|
||||
TrackView::setPlayableModel( PlayableModel* model )
|
||||
{
|
||||
if ( m_model ) {
|
||||
if ( m_model )
|
||||
{
|
||||
disconnect( m_model, SIGNAL( loadingStarted() ), m_loadingSpinner, SLOT( fadeIn() ) );
|
||||
disconnect( m_model, SIGNAL( loadingFinished() ), m_loadingSpinner, SLOT( fadeOut() ) );
|
||||
}
|
||||
@ -242,6 +245,7 @@ TrackView::setPlayableModel( PlayableModel* model )
|
||||
if ( m_autoExpanding )
|
||||
{
|
||||
expandAll();
|
||||
selectFirstTrack();
|
||||
}
|
||||
|
||||
onViewChanged();
|
||||
@ -852,3 +856,38 @@ TrackView::expand( const QPersistentModelIndex& idx )
|
||||
{
|
||||
QTreeView::expand( idx );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TrackView::select( const QPersistentModelIndex& idx )
|
||||
{
|
||||
if ( selectedIndexes().count() )
|
||||
return;
|
||||
|
||||
// selectionModel()->select( idx, QItemSelectionModel::SelectCurrent );
|
||||
currentChanged( idx, QModelIndex() );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TrackView::selectFirstTrack()
|
||||
{
|
||||
if ( !m_proxyModel->rowCount() )
|
||||
return;
|
||||
if ( selectedIndexes().count() )
|
||||
return;
|
||||
|
||||
QModelIndex idx = m_proxyModel->index( 0, 0, QModelIndex() );
|
||||
PlayableItem* item = m_model->itemFromIndex( m_proxyModel->mapToSource( idx ) );
|
||||
if ( item->source() )
|
||||
{
|
||||
idx = m_proxyModel->index( 0, 0, idx );
|
||||
item = m_model->itemFromIndex( m_proxyModel->mapToSource( idx ) );
|
||||
}
|
||||
|
||||
if ( item->query() )
|
||||
{
|
||||
// selectionModel()->select( idx, QItemSelectionModel::SelectCurrent );
|
||||
currentChanged( idx, QModelIndex() );
|
||||
}
|
||||
}
|
||||
|
@ -102,6 +102,8 @@ public slots:
|
||||
void onScrollTimeout();
|
||||
|
||||
void expand( const QPersistentModelIndex& idx );
|
||||
void select( const QPersistentModelIndex& idx );
|
||||
void selectFirstTrack();
|
||||
|
||||
signals:
|
||||
void itemActivated( const QModelIndex& index );
|
||||
|
Loading…
x
Reference in New Issue
Block a user