bool SourcesModel::removeItem( const source_ptr& source ) { // qDebug() << "Removing source item from SourceTree:" << source->username(); QModelIndex idx; int rows = rowCount(); for ( int row = 0; row < rows; row++ ) { QModelIndex idx = index( row, 0 ); SourceTreeItem* item = indexToTreeItem( idx ); if ( item ) { if ( item->source() == source ) { qDebug() << "Found removed source item:" << item->source()->userName(); invisibleRootItem()->removeRow( row ); onItemOffline( idx ); delete item; return true; } } } return false; }
bool SourcesProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent ) const { if ( !m_filtered ) return true; SourceTreeItem* sti = m_model->indexToTreeItem( sourceModel()->index( sourceRow, 0, sourceParent ) ); if ( sti ) { if ( sti->source().isNull() || sti->source()->isOnline() ) return true; } return false; }
QModelIndex SourcesModel::collectionToIndex( const Tomahawk::collection_ptr& collection ) { for ( int i = 0; i < rowCount(); i++ ) { QModelIndex idx = index( i, 0 ); SourcesModel::SourceType type = SourcesModel::indexType( idx ); if ( type == SourcesModel::CollectionSource ) { SourceTreeItem* sti = SourcesModel::indexToTreeItem( idx ); if ( sti && !sti->source().isNull() && sti->source()->collection().data() == collection.data() ) return idx; } } return QModelIndex(); }
void SourceTreeView::onItemActivated( const QModelIndex& index ) { if ( !index.isValid() ) return; SourcesModel::SourceType type = SourcesModel::indexType( index ); if ( type == SourcesModel::CollectionSource ) { SourceTreeItem* item = SourcesModel::indexToTreeItem( index ); if ( item ) { if ( item->source().isNull() ) { PlaylistManager::instance()->showSuperCollection(); } else { qDebug() << "SourceTreeItem toggled:" << item->source()->userName(); PlaylistManager::instance()->show( item->source()->collection() ); } } } else if ( type == SourcesModel::PlaylistSource ) { playlist_ptr playlist = SourcesModel::indexToPlaylist( index ); if ( !playlist.isNull() ) { qDebug() << "Playlist activated:" << playlist->title(); PlaylistManager::instance()->show( playlist ); } } else if ( type == SourcesModel::DynamicPlaylistSource ) { dynplaylist_ptr playlist = SourcesModel::indexToDynamicPlaylist( index ); if ( !playlist.isNull() ) { qDebug() << "Dynamic Playlist activated:" << playlist->title(); PlaylistManager::instance()->show( playlist ); } } }
void SourcesModel::onSourceChanged() { Source* src = qobject_cast< Source* >( sender() ); for ( int i = 0; i < rowCount(); i++ ) { QModelIndex idx = index( i, 0 ); if ( indexType( idx ) == CollectionSource ) { SourceTreeItem* sti = indexToTreeItem( idx ); if ( sti ) { if ( sti->source().data() == src ) { emit dataChanged( idx, idx ); } } } } }