1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 11:20:22 +02:00

* A playlist's title now updates in the sidebar when it gets changed.

This commit is contained in:
Christian Muehlhaeuser
2011-03-05 02:46:24 +01:00
parent 7aa844f81b
commit f8df6db392
5 changed files with 88 additions and 49 deletions

View File

@@ -29,6 +29,8 @@ DatabaseCommand_RenamePlaylist::exec( DatabaseImpl* lib )
cre.bindValue( ":id", m_playlistguid );
cre.bindValue( ":title", m_playlistTitle );
qDebug() << Q_FUNC_INFO << m_playlistTitle << m_playlistguid;
cre.exec();
}
@@ -46,6 +48,7 @@ DatabaseCommand_RenamePlaylist::postCommitHook()
playlist_ptr playlist = source()->collection()->playlist( m_playlistguid );
Q_ASSERT( !playlist.isNull() );
qDebug() << "Renaming old playlist" << playlist->title() << "to" << m_playlistTitle << m_playlistguid;
playlist->setTitle( m_playlistTitle );
if( source()->isLocal() )

View File

@@ -389,7 +389,7 @@ Playlist::setNewRevision( const QString& rev,
source_ptr
Playlist::author()
Playlist::author() const
{
return m_source;
}

View File

@@ -113,14 +113,14 @@ public:
virtual void loadRevision( const QString& rev = "" );
source_ptr author();
const QString& currentrevision() { return m_currentrevision; }
const QString& title() { return m_title; }
const QString& info() { return m_info; }
const QString& creator() { return m_creator; }
unsigned int lastmodified() { return m_lastmodified; }
const QString& guid() { return m_guid; }
source_ptr author() const;
QString currentrevision() const { return m_currentrevision; }
QString title() const { return m_title; }
QString info() const { return m_info; }
QString creator() const { return m_creator; }
QString guid() const { return m_guid; }
bool shared() const { return m_shared; }
unsigned int lastmodified() const { return m_lastmodified; }
const QList< plentry_ptr >& entries() { return m_entries; }
virtual void addEntry( const Tomahawk::query_ptr& query, const QString& oldrev );
@@ -132,7 +132,7 @@ public:
// maybe friend QObjectHelper and make them private?
explicit Playlist( const source_ptr& author );
void setCurrentrevision( const QString& s ) { m_currentrevision = s; }
void setTitle( const QString& s ) { m_title = s; }
void setTitle( const QString& s ) { m_title = s; emit changed(); }
void setInfo( const QString& s ) { m_info = s; }
void setCreator( const QString& s ) { m_creator = s; }
void setGuid( const QString& s ) { m_guid = s; }
@@ -161,6 +161,9 @@ signals:
/// watch for this to see when newly created playlist is synced to DB (if you care)
void created();
/// renamed etc.
void changed();
void repeatModeChanged( PlaylistInterface::RepeatMode mode );
void shuffleModeChanged( bool enabled );

View File

@@ -88,11 +88,11 @@ SourceTreeItem::onPlaylistsAdded( const QList<playlist_ptr>& playlists )
{
m_playlists.append( p );
qlonglong ptr = reinterpret_cast<qlonglong>( &m_playlists.last() );
qDebug() << "Setting playlist ptr to:" << ptr;
connect( p.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ),
SLOT( onPlaylistLoaded( Tomahawk::PlaylistRevision ) ),
Qt::QueuedConnection);
SLOT( onPlaylistLoaded( Tomahawk::PlaylistRevision ) ), Qt::QueuedConnection );
connect( p.data(), SIGNAL( changed() ),
SLOT( onPlaylistChanged() ), Qt::QueuedConnection );
qDebug() << "Playlist added:" << p->title() << p->creator() << p->info() << ptr;
@@ -133,7 +133,6 @@ void
SourceTreeItem::onPlaylistLoaded( Tomahawk::PlaylistRevision revision )
{
qlonglong ptr = reinterpret_cast<qlonglong>( sender() );
qDebug() << "sender ptr:" << ptr;
QStandardItem* item = m_columns.at( 0 );
int rows = item->rowCount();
@@ -146,7 +145,6 @@ SourceTreeItem::onPlaylistLoaded( Tomahawk::PlaylistRevision revision )
if ( type == SourcesModel::PlaylistSource && ptr == qlonglong( pl->data() ) )
{
qDebug() << "Found normal playlist!";
pi->setEnabled( true );
m_current_revisions.insert( pl->data()->guid(), revision.revisionguid );
}
@@ -154,6 +152,38 @@ SourceTreeItem::onPlaylistLoaded( Tomahawk::PlaylistRevision revision )
}
void
SourceTreeItem::onPlaylistChanged()
{
qlonglong ptr = reinterpret_cast<qlonglong>( sender() );
QStandardItem* item = m_columns.at( 0 );
int rows = item->rowCount();
for ( int i = 0; i < rows; i++ )
{
QStandardItem* pi = item->child( i );
SourcesModel::SourceType type = static_cast<SourcesModel::SourceType>( pi->data( Type ).toInt() );
if ( type == SourcesModel::PlaylistSource )
{
qlonglong piptr = pi->data( PlaylistPointer ).toLongLong();
playlist_ptr* pl = reinterpret_cast<playlist_ptr*>(piptr);
if ( ptr == qlonglong( pl->data() ) )
pi->setText( pl->data()->title() );
}
if ( type == SourcesModel::DynamicPlaylistSource )
{
qlonglong piptr = pi->data( DynamicPlaylistPointer ).toLongLong();
dynplaylist_ptr* pl = reinterpret_cast<dynplaylist_ptr*>(piptr);
if ( ptr == qlonglong( pl->data() ) )
pi->setText( pl->data()->title() );
}
}
}
void
SourceTreeItem::onDynamicPlaylistsAdded( const QList< dynplaylist_ptr >& playlists )
{
@@ -162,10 +192,11 @@ SourceTreeItem::onDynamicPlaylistsAdded( const QList< dynplaylist_ptr >& playlis
{
m_dynplaylists.append( p );
qlonglong ptr = reinterpret_cast<qlonglong>( &m_dynplaylists.last() );
// qDebug() << "Setting dynamic ptr to:" << ptr;
connect( p.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ),
SLOT( onDynamicPlaylistLoaded( Tomahawk::DynamicPlaylistRevision ) ),
Qt::QueuedConnection);
SLOT( onDynamicPlaylistLoaded( Tomahawk::DynamicPlaylistRevision ) ), Qt::QueuedConnection );
connect( p.data(), SIGNAL( changed() ),
SLOT( onPlaylistChanged() ), Qt::QueuedConnection );
// qDebug() << "Dynamic Playlist added:" << p->title() << p->creator() << p->info() << p->currentrevision() << ptr;
@@ -191,7 +222,8 @@ SourceTreeItem::onDynamicPlaylistsDeleted( const QList< dynplaylist_ptr >& playl
qlonglong piptr = pi->data( DynamicPlaylistPointer ).toLongLong();
dynplaylist_ptr* pl = reinterpret_cast<dynplaylist_ptr*>(piptr);
SourcesModel::SourceType type = static_cast<SourcesModel::SourceType>( pi->data( Type ).toInt() );
//qDebug() << "Deleting dynamic playlsit:" << pl->isNull();
//qDebug() << "Deleting dynamic playlist:" << pl->isNull();
if ( type == SourcesModel::DynamicPlaylistSource && ptr == qlonglong( pl->data() ) )
{
m_dynplaylists.removeAll( p );
@@ -215,10 +247,9 @@ SourceTreeItem::onDynamicPlaylistLoaded( DynamicPlaylistRevision revision )
qlonglong piptr = pi->data( DynamicPlaylistPointer ).toLongLong();
playlist_ptr* pl = reinterpret_cast<playlist_ptr*>(piptr);
SourcesModel::SourceType type = static_cast<SourcesModel::SourceType>( pi->data( Type ).toInt() );
// qDebug() << "found dynamic playlist:" << (*pl)->title() << type;
if ( type == SourcesModel::DynamicPlaylistSource && ptr == qlonglong( pl->data() ) )
{
//qDebug() << "Found dynamicplaylist!";
pi->setEnabled( true );
m_current_dynamic_revisions.insert( pl->data()->guid(), revision.revisionguid );
}

View File

@@ -47,10 +47,12 @@ private slots:
void onPlaylistsAdded( const QList<Tomahawk::playlist_ptr>& playlists );
void onPlaylistsDeleted( const QList<Tomahawk::playlist_ptr>& playlists );
void onPlaylistLoaded( Tomahawk::PlaylistRevision revision );
void onPlaylistChanged();
void onDynamicPlaylistsAdded( const QList<Tomahawk::dynplaylist_ptr>& playlists );
void onDynamicPlaylistsDeleted( const QList<Tomahawk::dynplaylist_ptr>& playlists );
void onDynamicPlaylistLoaded( Tomahawk::DynamicPlaylistRevision revision );
private:
void playlistAddedInternal( qlonglong ptr, const Tomahawk::playlist_ptr& pl, bool dynamic );