[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/amarok/src/browsers/collectionbrowser
From: Dan Meltzer <hydrogen () notyetimplemented ! com>
Date: 2008-08-18 21:24:06
Message-ID: 1219094646.316489.30182.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 849020 by dmeltzer:
Implement inline editing for artists/albums/genre/year in the collectionbrowser. \
This still isn't perfect, as one needs to refresh the collectionbrowser before the \
changes take effect... will fix shortly
M +97 -7 CollectionTreeItemModelBase.cpp
M +4 -4 SingleCollectionTreeItemModel.cpp
--- trunk/extragear/multimedia/amarok/src/browsers/collectionbrowser/CollectionTreeItemModelBase.cpp \
#849019:849020 @@ -75,12 +75,7 @@
return Qt::ItemIsEnabled;
Qt::ItemFlags flags;
- flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
- if( Meta::TrackPtr track = Meta::TrackPtr::dynamicCast( \
static_cast<CollectionTreeItem*>( index.internalPointer() )->data() ) \
)
- {
- if( track && track->hasCapabilityInterface( Meta::Capability::Editable ) )
- flags |= Qt::ItemIsEditable;
- }
+ flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | \
Qt::ItemIsEditable; return flags;
}
@@ -94,9 +89,11 @@
CollectionTreeItem *item = static_cast<CollectionTreeItem*>( \
index.internalPointer() );
Meta::DataPtr data = item->data();
- // Function is only called if flags returns Qt::ItemIsEditable, where \
hasCapabilityInterface is called. Therfore we don't need to check again +
if( Meta::TrackPtr track = Meta::TrackPtr::dynamicCast( data ) )
{
+ if( !track->hasCapabilityInterface( Meta::Capability::Editable ) )
+ return false;
Meta::EditCapability *ec = track->as<Meta::EditCapability>();
if( ec )
{
@@ -106,6 +103,99 @@
}
delete ec;
}
+ /*else
+ {
+ QModelIndex in = index;
+ while( in.model()->hasChildren( in ) )
+ {
+ int rows = in.model()->rowCount( in );
+ for( int i = 0; i < rows; i++ )
+ {
+ setData( in.child( i, 1 ), value, role );
+ in = in.sibling( in.row() + 1, in.column() );
+ }
+ }
+ }*/
+ else if( Meta::AlbumPtr album = Meta::AlbumPtr::dynamicCast( data ) )
+ {
+ Meta::TrackList tracks = album->tracks();
+ if( tracks.size() > 0 )
+ {
+ foreach( Meta::TrackPtr track, tracks )
+ {
+ Meta::EditCapability *ec = track->as<Meta::EditCapability>();
+ if( ec )
+ ec->setAlbum( value.toString() );
+ delete ec;
+ }
+ emit dataChanged( index, index );
+ return true;
+ }
+ }
+ else if( Meta::ArtistPtr artist = Meta::ArtistPtr::dynamicCast( data ) )
+ {
+ Meta::TrackList tracks = artist->tracks();
+ if( tracks.size() > 0 )
+ {
+ foreach( Meta::TrackPtr track, tracks )
+ {
+ Meta::EditCapability *ec = track->as<Meta::EditCapability>();
+ if( ec )
+ ec->setArtist( value.toString() );
+ delete ec;
+ }
+ emit dataChanged( index, index );
+ return true;
+ }
+ }
+ else if( Meta::GenrePtr genre = Meta::GenrePtr::dynamicCast( data ) )
+ {
+ Meta::TrackList tracks = genre->tracks();
+ if( tracks.size() > 0 )
+ {
+ foreach( Meta::TrackPtr track, tracks )
+ {
+ Meta::EditCapability *ec = track->as<Meta::EditCapability>();
+ if( ec )
+ ec->setGenre( value.toString() );
+ delete ec;
+ }
+ emit dataChanged( index, index );
+ return true;
+ }
+ }
+ else if( Meta::YearPtr year = Meta::YearPtr::dynamicCast( data ) )
+ {
+ Meta::TrackList tracks = year->tracks();
+ if( tracks.size() > 0 )
+ {
+ foreach( Meta::TrackPtr track, tracks )
+ {
+ Meta::EditCapability *ec = track->as<Meta::EditCapability>();
+ if( ec )
+ ec->setYear( value.toString() );
+ delete ec;
+ }
+ emit dataChanged( index, index );
+ return true;
+ }
+ }
+ else if( Meta::ComposerPtr composer = Meta::ComposerPtr::dynamicCast( data ) )
+ {
+ Meta::TrackList tracks = composer->tracks();
+ if( tracks.size() > 0 )
+ {
+ foreach( Meta::TrackPtr track, tracks )
+ {
+ Meta::EditCapability *ec = track->as<Meta::EditCapability>();
+ if( ec )
+ ec->setComposer( value.toString() );
+ delete ec;
+ }
+ emit dataChanged( index, index );
+ return true;
+ }
+ }
return false;
}
--- trunk/extragear/multimedia/amarok/src/browsers/collectionbrowser/SingleCollectionTreeItemModel.cpp \
#849019:849020 @@ -93,16 +93,16 @@
if ( level < m_levelType.count() )
{
- if ( m_levelType[level] == CategoryId::Album ) {
-// const Meta::Album* album = static_cast< const Meta::Album*> ( \
item->data().data() ); + if ( m_levelType[level] == CategoryId::Album \
) + {
Meta::AlbumPtr album = Meta::AlbumPtr::dynamicCast( item->data() \
); if( album)
return album->image( 32, false );
else
return iconForLevel( level );
- } else {
+ }
+ else
return iconForLevel( level );
- }
}
} else if ( role == AlternateCollectionRowRole )
return ( index.row() % 2 == 1 );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic