Hi! Here is a simple patch for amaroK that allows users to sort their playlists by multiple columns. This feature was requested in this thread on the forums: http://forums.gentoo.org/viewtopic-t-460797-highlight-.html I got the patch from this KDE bug report: http://bugs.kde.org/show_bug.cgi?id=111157 I used the patch submit by Stefan Siegel, not the patch(es) submitted by Bonne Eggleston. I modified Stafan's patch to work with the 1.4 code base. It works with amarok-1.4.0-r1, amarok-1.4.0-r2, and amarok-1.4_beta3-r2. I don't think the GUI and speed complaints against the Eggleston patch apply to the Siegel patch. The Siegel patch basically just changes: QString::localeAwareCompare( a, b ) to: QString::localeAwareCompare( a, b ) * 2 + ( ( itemPos() < i->itemPos() ) == ascending ? -1 : 1 ) which stabilizes the sort and thus allows multicolumn sorts by using the previous sort order as the "tie breaker" for the current sort. Unless there is something terribly wrong with QT, the time it takes to do the two itemPos()'s should be much smaller than the time it takes to do the localeAwareCompare() and thus the patch should not significantly affect the speed of the sorts. I was able to sort my entire collection of over 2000 tracks in under 10 seconds. I also noticed that the time of sorts varied with the length of the text of the column being sorted which again indicates that the localeAwareCompare() is what is dominating the sort time. I added a USE flag: multicolsort to control the application of this patch. I will attach a diff of the latest ebuild and the patch file.
Created attachment 86900 [details, diff] diff of amarok-1.4.0-r2.ebuild
Created attachment 86902 [details, diff] The actually amaroK patch from the files/ directory.
I won't patch amaroK to add features. The patches currently applied are suggested by upstream (and will be present already in official 1.4.0 release, consider our version a "prerelease"), and I don't really have time to maintain half-forks. A 1.4.1 version shouldn't be much distant, so I think you should simply for upstream (string/feature freeze is over now).