void TreeProxyModel::setFilter( const QString& pattern ) { emit filteringStarted(); m_filter = pattern; m_albumsFilter.clear(); if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { Tomahawk::ArtistsRequest* cmd = m_model->collection()->requestArtists(); cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( dynamic_cast< QObject* >( cmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); cmd->enqueue(); } }
void TreeProxyModel::newFilterFromPlaylistInterface( const QString &pattern ) { emit filteringStarted(); m_filter = pattern; m_albumsFilter.clear(); if ( m_artistsFilterCmd ) { disconnect( m_artistsFilterCmd, SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { DatabaseCommand_AllArtists* cmd = new DatabaseCommand_AllArtists( m_model->collection() ); cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( cmd, SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) ); } }
void TreeProxyModel::setFilter( const QString& pattern ) { emit filteringStarted(); m_filter = pattern; beginResetModel(); m_albumsFilter.clear(); endResetModel(); if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); delete m_artistsFilterCmd; m_artistsFilterCmd = 0; } if ( m_filter.isEmpty() ) { filterFinished(); } else { Tomahawk::ArtistsRequest* cmd = 0; if ( !m_model->collection().isNull() ) cmd = m_model->collection()->requestArtists(); else cmd = new Tomahawk::DatabaseCommand_AllArtists(); //for SuperCollection, TODO: replace with a proper proxy-ArtistsRequest cmd->setFilter( pattern ); m_artistsFilterCmd = cmd; connect( dynamic_cast< QObject* >( cmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); cmd->enqueue(); } }
void TreeProxyModel::filterFinished() { if ( m_artistsFilterCmd ) { disconnect( dynamic_cast< QObject* >( m_artistsFilterCmd ), SIGNAL( artists( QList<Tomahawk::artist_ptr> ) ), this, SLOT( onFilterArtists( QList<Tomahawk::artist_ptr> ) ) ); delete m_artistsFilterCmd; m_artistsFilterCmd = 0; } setFilterRegExp( m_filter ); emit filterChanged( m_filter ); emit filteringFinished(); }