1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 13:47:26 +02:00

update the playlistview when a playlist is renamed, fixes TWK-168

This commit is contained in:
Leo Franchi
2011-05-19 17:29:58 -04:00
parent b37127858f
commit e9b991e4c0
5 changed files with 26 additions and 5 deletions

View File

@@ -138,6 +138,7 @@ DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist )
disconnect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ), this, SLOT(onRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ) ); disconnect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ), this, SLOT(onRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ) );
disconnect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) ); disconnect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) );
disconnect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) ); disconnect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) );
disconnect( m_playlist.data(), SIGNAL( changed() ), this, SLOT( onChanged() ) );
} }
@@ -165,6 +166,7 @@ DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist )
connect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( onRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ) ); connect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( onRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ) );
connect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) ); connect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) );
connect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) ); connect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) );
connect( m_playlist.data(), SIGNAL( changed() ), this, SLOT( onChanged() ) );
} }
@@ -418,3 +420,10 @@ DynamicWidget::onDeleted()
emit destroyed( widget() ); emit destroyed( widget() );
deleteLater(); deleteLater();
} }
void
DynamicWidget::onChanged()
{
if( !m_playlist.isNull() )
emit nameChanged( m_playlist->title() );
}

View File

@@ -95,6 +95,7 @@ public slots:
void tracksAdded(); void tracksAdded();
signals: signals:
void nameChanged( const QString& name );
void descriptionChanged( const QString& caption ); void descriptionChanged( const QString& caption );
void destroyed( QWidget* widget ); void destroyed( QWidget* widget );
@@ -109,6 +110,7 @@ private slots:
void layoutFloatingWidgets(); void layoutFloatingWidgets();
void onDeleted(); void onDeleted();
void onChanged();
private: private:
dynplaylist_ptr m_playlist; dynplaylist_ptr m_playlist;

View File

@@ -74,6 +74,7 @@ PlaylistView::setPlaylistModel( PlaylistModel* model )
connect( m_model, SIGNAL( trackCountChanged( unsigned int ) ), SLOT( onTrackCountChanged( unsigned int ) ) ); connect( m_model, SIGNAL( trackCountChanged( unsigned int ) ), SLOT( onTrackCountChanged( unsigned int ) ) );
connect( m_model, SIGNAL( playlistDeleted() ), SLOT( onDeleted() ) ); connect( m_model, SIGNAL( playlistDeleted() ), SLOT( onDeleted() ) );
connect( m_model->playlist().data(), SIGNAL( changed() ), SLOT( onChanged() ) );
} }
@@ -181,3 +182,10 @@ PlaylistView::onDeleted()
emit destroyed( widget() ); emit destroyed( widget() );
deleteLater(); deleteLater();
} }
void
PlaylistView::onChanged()
{
if ( m_model && !m_model->playlist().isNull() )
emit nameChanged( m_model->playlist()->title() );
}

View File

@@ -54,6 +54,7 @@ public:
virtual bool jumpToCurrentTrack(); virtual bool jumpToCurrentTrack();
signals: signals:
void nameChanged( const QString& title );
void destroyed( QWidget* widget ); void destroyed( QWidget* widget );
protected: protected:
@@ -67,6 +68,7 @@ private slots:
void deleteItems(); void deleteItems();
void onDeleted(); void onDeleted();
void onChanged();
private: private:
void setupMenus(); void setupMenus();

View File

@@ -158,10 +158,10 @@ ViewManager::createPageForPlaylist( const playlist_ptr& pl )
PlaylistView* view = new PlaylistView(); PlaylistView* view = new PlaylistView();
PlaylistModel* model = new PlaylistModel(); PlaylistModel* model = new PlaylistModel();
model->loadPlaylist( pl );
view->setPlaylistModel( model ); view->setPlaylistModel( model );
view->setFrameShape( QFrame::NoFrame ); view->setFrameShape( QFrame::NoFrame );
view->setAttribute( Qt::WA_MacShowFocusRect, 0 ); view->setAttribute( Qt::WA_MacShowFocusRect, 0 );
model->loadPlaylist( pl );
pl->resolve(); pl->resolve();
m_playlistViews.insert( pl, view ); m_playlistViews.insert( pl, view );
@@ -626,10 +626,10 @@ ViewManager::setPage( ViewPage* page, bool trackHistory )
// if the signal exists (just to hide the qobject runtime warning...) // if the signal exists (just to hide the qobject runtime warning...)
if( obj->metaObject()->indexOfSignal( "descriptionChanged(QString)" ) > -1 ) if( obj->metaObject()->indexOfSignal( "descriptionChanged(QString)" ) > -1 )
connect( obj, SIGNAL( descriptionChanged( QString ) ), m_infobar, SLOT( setDescription( QString ) ), Qt::UniqueConnection ); connect( obj, SIGNAL( descriptionChanged( QString ) ), m_infobar, SLOT( setDescription( QString ) ), Qt::UniqueConnection );
}
if ( QObject* obj = dynamic_cast< QObject* >( currentPage() ) ) if( obj->metaObject()->indexOfSignal( "nameChanged(QString)" ) > -1 )
{ connect( obj, SIGNAL( nameChanged( QString ) ), m_infobar, SLOT( setCaption( QString ) ), Qt::UniqueConnection );
// if the signal exists (just to hide the qobject runtime warning...)
if( obj->metaObject()->indexOfSignal( "destroyed(QWidget*)" ) > -1 ) if( obj->metaObject()->indexOfSignal( "destroyed(QWidget*)" ) > -1 )
connect( obj, SIGNAL( destroyed( QWidget* ) ), SLOT( onWidgetDestroyed( QWidget* ) ), Qt::UniqueConnection ); connect( obj, SIGNAL( destroyed( QWidget* ) ), SLOT( onWidgetDestroyed( QWidget* ) ), Qt::UniqueConnection );
} }