> On Jan. 17, 2012, 6:40 p.m., Ralf Engels wrote:
> > While working on the multiple-artists feature I came to the following 
> > conclusion:
> > 
> > Amarok should only try to guess album artists (or all artists in case of a 
> > "Ralf featuring Matej") for internal usage and not try to write them back.
> > That would mean that the album artist could still be displayed as being 
> > empty while the track artist is used in the Collection.
> > 
> > Still, the patch is good. Ship it.

Yup, I agree with the conclusion. But still I'm unable to come up with 
something reasonable.

[brainstorm]
Album::prettyAlbumArtist() (the guessed one) and Album::albumArtist() (the true 
one)? Also, I think that Album::hasAlbumArtist() is completely redundant (I 
fear to trust all Amarok code to return non-null albumArtist() if 
hasAlbumArtist() == true) and Album::isCompilation() is virtually 
!Album::hasAlbumArtist(). Perhaps we could remove both and define compilations 
as "Album::prettyAlbumArtist() == null ptr"?
[/brainstorm]

Speaking about the patch I've also received favourable review by email from     
Maximilian Kossick that will result in some docstring clarifications and a few 
more comments. If noone opposes, I'll push this tomorrow or so.


- Matěj


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103715/#review9892
-----------------------------------------------------------


On Jan. 17, 2012, 2:10 p.m., Matěj Laitl wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103715/
> -----------------------------------------------------------
> 
> (Updated Jan. 17, 2012, 2:10 p.m.)
> 
> 
> Review request for Amarok, Bart Cerneels and Ralf Engels.
> 
> 
> Description
> -------
> 
> MetaFile: guess album artist as in SQL collection scanner, compilations
> 
> Call albumArtist = ArtistHelper::bestGuessAlbumArtist( albumArtist,
> artist, genre,  composer ); afer the data are read from file tags.
> 
> This makes album artist field consistent for tracks in Local collection
> and tracks in file browser or drag & dropped to Amarok playlist, but it
> has some downsides:
>  * Amarok will essentially lie about what album artist is assigned to a
>    track, most notably will replace empty album artist by track artist
>    and will replace "Various Artists" by empty artist.
>  * Editing album artist will be strange in corner cases: in particular
>    if user sets album artist to "Various Artists", it will be written
>    to file tags as-is, but displayed as empty album artist. Other case
>    would be when user sets album artist to empty string, but this is
>    currently prevented due to a bug/feature in TagDialog.
> 
> (every occurrence of "Various Artists" also accepts localized version
> of the string)
> 
> Above change is needed for upcoming "MemoryCollection: use also album
> artist as identifying key in album map" change for UmsCollection, but
> if someone opposes, similar change can be made on UmsCollection level.
> 
> Also, implement MetaFile::FileAlbum isCompilation() which is now easy
> as it can return albumArtist.isEmpty()
> 
> DIGEST: unify album artist handling in Amarok
> 
> 
> --------------------------------------------------------------------
> 
> 
> MemoryCollection: use also album artist as identifying key in album map
> 
> This has some far-reaching consequences which I believe are only
> positive, most notably Amarok is able to differentiate between 2 albums
> with same name but different album artists in USB Mass Storage
> collection and in "new" iPod collection. This unifies album artist
> handling across MemoryCollection and SqlCollection, 2 major collection
> storage implementations in Amarok.
> 
> Technically, AlbumMap is changed from:
> typedef QMap<QString, Meta::AlbumPtr> AlbumMap;
> to:
> class AlbumMap : public QMap<Meta::AlbumKey, Meta::AlbumPtr>
> 
> with insert(), remove(), value(), contains() QMap methods hidden and
> reimplemented for convenience and to prevent coding mistakes. (you no
> longer can add album under wrong key)
> 
> This change is tested to work with new iPod collection, UMS collection
> (depends on previous "MetaFile: guess album artist as in SQL collection
> scanner, compilations"), all tests still pass.
> 
> Only area that received just very basic testing are online
> service collections that are also affected by this change.
> 
> DIGEST: Albums with same name but different album artist are now
>         correctly separated in USB Mass Storage, iPod and various
>         online service collections.
> 
> 
> Diffs
> -----
> 
>   ChangeLog ed4e955deeebf6a506e87ca8973645b9eeadc67b 
>   src/core-impl/collections/daap/daapreader/Reader.cpp 
> 9f749c5fe892f0cbcbacd8454d8fc80940f6bb43 
>   src/core-impl/collections/ipodcollection/handler/IpodHandler.h 
> ceccd7cc3028051d9b93201caea180a10af15ed3 
>   src/core-impl/collections/ipodcollection/handler/IpodHandler.cpp 
> 83c5d27839dcb5f18a4233daa5367fb18962c7af 
>   src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.cpp 
> e892952ba0ede760a66e71ffa9e43c123b74a6d7 
>   
> src/core-impl/collections/mediadevicecollection/handler/MediaDeviceHandler.cpp
>  46000b3f1950cc64feef8321bcf698980c2742fe 
>   src/core-impl/collections/playdarcollection/PlaydarCollection.cpp 
> 1e598f0d20ea88bef4c60877eefb71a8b934218d 
>   src/core-impl/collections/support/MemoryCollection.h 
> e2b28dea72393456f5c62ecf06ce7832b49e2e4f 
>   src/core-impl/collections/support/MemoryMatcher.cpp 
> 624d6d4c0eb63745293d083982b936e5c050ff0a 
>   src/core-impl/collections/support/MemoryMeta.h 
> 45eefb7a4c085fa32478799e296579eef117072b 
>   src/core-impl/collections/support/MemoryMeta.cpp PRE-CREATION 
>   src/core-impl/collections/upnpcollection/UpnpCache.h 
> da00fd1b11306ef49e10b703f601147a5762e18e 
>   src/core-impl/collections/upnpcollection/UpnpCache.cpp 
> 58130795298911ab1849fdc64314b8ed128df3d4 
>   src/core-impl/meta/file/File_p.h af2dbf670e23357dca0efc48421c7d0d6f884f32 
>   src/core/meta/support/MetaKeys.h f4ffa0eb9889787b1cebb9ea4781930fbcf3fd01 
>   src/core/meta/support/MetaKeys.cpp 3e8f0fa8587badf044c6a00806230adfe257a6fd 
>   src/services/ampache/AmpacheServiceQueryMaker.cpp 
> 72862b917fb397b02187d14cd97c1c2c5fa4f79d 
>   tests/TestTrackOrganizer.cpp 75faf04b332e9e9c0ff279037ae66053e1011cd4 
>   tests/browsers/TestSingleCollectionTreeItemModel.cpp 
> 99ec36f7eae0560024669e63ca5102829d610748 
>   tests/synchronization/TestMasterSlaveSynchronizationJob.cpp 
> 707e578d042c3b13ecea7069c1d8b496896a3c5c 
>   tests/synchronization/TestOneWaySynchronizationJob.cpp 
> 058611fd8fdde491e6b2eb62c5895e20324613b1 
>   tests/synchronization/TestUnionJob.cpp 
> 591d695d1ea0641951e5aa7188a697f98b988b5c 
> 
> Diff: http://git.reviewboard.kde.org/r/103715/diff/diff
> 
> 
> Testing
> -------
> 
> This change is tested to work with new iPod collection, UMS collection, all 
> tests still pass. Only area that received just very basic testing are online 
> service collections that are also affected by this change.
> 
> 
> Screenshots
> -----------
> 
> amarok-ums-collections-and-album-artists.png
>   http://git.reviewboard.kde.org/r/103715/s/416/
> 
> 
> Thanks,
> 
> Matěj Laitl
> 
>

_______________________________________________
Amarok-devel mailing list
Amarok-devel@kde.org
https://mail.kde.org/mailman/listinfo/amarok-devel

Reply via email to