Amarok – versatile and easy to use audio player
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TODO 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. TODO-list for Amarok
  2. ======================
  3. <nick> == reported by
  4. -->nick == assigned to
  5. SHORT-TERM (URGENT):
  6. <sebr> When using "Copy files to collection" in the filebrowser, tags wont get recognised from
  7. urls which are organised from media:/ locations.
  8. <jeff> When playing a stream from e.g. Ampache, even if an Artist is detected, Wikipedia
  9. will pull up "Artist - Song" instead of just Artist.
  10. <sebr> PlaylistBrowser::slotDoubleClicked() and PlaylistBrowser::addSelectedToPlaylist()
  11. should be merged for better code reusage. They are practically the same.
  12. <markey> I just deleted a tag by accident: Clicked on a file in the playlist, pressed
  13. delete to remove the track from the playlist. I had not noticed that it
  14. went into edit mode, though. So I clicked somewhere else, and BAM, the new
  15. empty tag was written. My tag was gone :S IMHO we should require confirmation
  16. before writing, e.g. only write the tag after pressing enter.
  17. <markey> When you start a lastfm stream, the old metadata from the last stream is
  18. shown before the new stream starts. Doesn't look nice.
  19. <shanachie> update podcast-tuples when the feed get's corrected after a mistake by the podcaster/publisher. eg. pubdate, url, title.
  20. <sebr> We need to check for pkg-config when configuring, otherwise we can't check for things
  21. like libgpod. Currently its a silent error, and its very difficult to debug without
  22. trawling through configure.in.in
  23. <sebr> Don't reload media device plugins when saving config settings. Its annoying, slow
  24. and all around unnecessary. It also crashes if the device is connected/loaded.
  25. <aumuell> Cannot reproduce anything of this with ipods - i think i fixed that already.
  26. <markey> After doing "Delete downloaded podcast", the icon still indicates downloaded.
  27. <sebr> LastFm:
  28. - determine how hard it would be to tag songs
  29. <eean> - display history in the playlist somehow <markey> I'm against this.
  30. -subitems?
  31. -just disabled?
  32. - 'stop after current track' should work
  33. <markey> - when you've never listenend to lastfm before, all stream links on the
  34. website are disabled ("Download the player"). we need to do a handshake on
  35. startup once, and then set a config item, e.g. handshaked=true.
  36. <markey> xine-engine: when "xine could not init any audio driver" happens, always retry
  37. with Autodetect. This seems to be an issue with leftover amarokrc's from 1.3.
  38. <sebr> Adding an m3u with non existant items has filesize = 16,777,216.0 TB!
  39. <sebr> Refactor code for PlaylistBrowser::removeSelectedItems(). I can see pathological cases
  40. where it won't work.
  41. <illiss.> Is using the score for the number, but the rating for the vis. in the context browser
  42. confusing? (I think it is, but that might be becuase my theme doesn't use stars but a
  43. partially-filled bar). If so it should be reverted for beta 1, I have a better solution
  44. already planned but that won't be in time.
  45. <illiss.> The various UI and behaviour refactorings for Dynamic Mode should be finished up and
  46. polished. Among them, add a button to turn it off in the bar-above-the-playlist, fix
  47. drag-and-dropping of dynamic playlists, and when loading a dynamic playlist, clear the
  48. existing playlist first, instead of making it dynamic (which has all sorts of nasty side
  49. effects).
  50. <sebr> Podcast Fixme's:
  51. * Have i listened to podcast streamed?
  52. <illiss.> Loading normal (M3U) playlists from the playlist browser doesn't block the UI per se,
  53. but it does nothing for really long time, until suddenly the whole playlist shows up,
  54. which is strange and confusing.
  55. <markey> Tooltips don't work for 3rd level items in the Playlist Browser. They do how
  56. however work (for me) for 2nd level items. Very bad, cause you can't read the
  57. text!
  58. <sebr> When starting a drag in the collection browser, we can block the gui if the user makes a
  59. selection which is sql intensive (eg, select all). Instead of calculating the items
  60. in each of those nodes, we should add the sql to the drag and allow the playlist loader
  61. to do the work for us (which is threaded).
  62. <muesli> See SqlLoader class in playlistloader. We do the very same stuff for
  63. Smart-Playlists already.
  64. <sebr> The unknown album should ALWAYS be shown last. Year has a higher weighting than album
  65. name. We should special case the Unknown album.
  66. <markey> When all 5 browser tabs are activated, the current tab button is drawn a few
  67. pixels below the normal position. This has the side effect that the separator line
  68. at the bottom of the bottom becomes invisible.
  69. You can see the problem easily when you hide the current browser by clicking twice
  70. the button twice. This problem AFAIK also affects 1.3-branch.
  71. <markey> Add DCOP functions for showing dialogs, similar to kdialog.
  72. <sebr> More consistent playlistbrowser drag and drop actions; No dropping of default streams, set
  73. e->accept( false ) if dropping one type onto another.
  74. <sebr> Use TDEIO queues for podcast download queues. Should simplify the lot. Problems atm included
  75. selecting multiple downloads individually, and automatic downloads occuring for more that one
  76. podcast item.
  77. <markey> In EngineController::play(), add a sanity check when querying the track length
  78. from the engine. Apparently AAC can deliver ridiculous values with GST and Helix,
  79. like 1192479:38:49. If length is too extreme, default to the TagLib provided
  80. value.
  81. <eean> Currently custom dynamic playlist selection is simply based on the titles. So its less then
  82. ideal. Via some method, each playlist should be assigned iteratively a number paired with its
  83. type.. Dynamic playlists and static playlists should probably have seperate numbering so
  84. that the "next" number can be determined by looking at one XML file.
  85. Remembering which PartyEntry was used on close should be remembered with the same method.
  86. <eean> Smart playlists bypass checks on whether the media is playable or not.
  87. Or perhaps such media shouldn't be in the collection at all? This is the sort of
  88. thing we're going to have to worry about now that we have m4a and wma tag support.
  89. <markey> Consider moving the GHNS provider list to a different server than amarok.kde.org,
  90. possibly download.kde.org or similar. (When our site is down, the GHNS feature fails
  91. to work entirely)
  92. <markey> Amarok fails to download any stream playlist from http://dir.xiph.org. Part of the problem is
  93. PlaylistLoader::isPlaylistFile(const KURL&), which only looks at the filename's extension. This
  94. fails for URLs like http://dir.xiph.org/listen.php?pid=669641&file=listen.m3u, because the filename
  95. is "listen.php". So it must look at the whole url instead.
  96. <mxcl> On first-ever-run, if Amarok crashes building the sqlite collection, it is impossible to _ever_
  97. build a collection unless the user's amarokrc file is deleted! This MUST be fixed before 1.2!
  98. ::muesli:: We could just _always_ try to create the sql tables on startup. This would fail on
  99. ::muesli:: systems which already got the tables, but would fix the situation where tables are
  100. ::muesli:: missing, as in this situation. Just pump the debug of these calls to /dev/null.
  101. <mxcl> Just before we load any engine plugin, write to a file, and it we don't succeed the next time
  102. Amarok starts show a big warning saying "Gah!" and load a different one.
  103. <mxcl> If you inline set the title tag to "", prettyTitle gets inserted as the title tag.
  104. <markey> When the KDE color scheme is changed while Amarok is running, all toolbar buttons (those with text)
  105. lose their texts.
  106. <shakes> The scrobbler code should report some sort of error message rather than just saying that the
  107. submit failed. That way when last.fm goes down we wouldn't get so many people asking why they
  108. can't submit. It'd also be nice to be able to tell people they've got their password wrong.
  109. <jefferai> When hovering the mouse over the Repeat/Random icons in the bottom taskbar, the popups that appear
  110. not only have inconsistent icons with the ones shown in the taskbar, but they're pixellated and ugly
  111. as sin. Should probably be redone as SVGs.
  112. <jefferai> Xine proxy value is not saved across sessions. Problem exists in Xine-UI as well, at least for me.
  113. Maybe an upstream bug and nothing we can fix.
  114. MID-TERM:
  115. <eean> Implement a "Find My Music" button in the first-run wizard. Just a basic
  116. thing that will look at file extensions and try to figure out where the users
  117. music is located. Ignore /opt/, /usr etc. to avoid adding sound effects. Prompt
  118. user with the directories at the end of the scan, allowing them to exclude some.
  119. <eean> The FileBrowser doesn't check for recursive symlinks. This is a KDirOperator (or the
  120. classes it depends on) problem.
  121. <eean> Basically need to re-add some of the functionality I removed in re-doing dynamic
  122. --><eean> custom playlist creation.
  123. 1) the default dynamic playlists need to be more insistent, the same way the
  124. the default smart playlists are.
  125. <eean> Implement leinir's mockup:
  126. www.leinir.dk/temp/gallery/?image=pictures/amarok-playlist-bar-dynamic-mode.png
  127. <leinir> The idea with the look of the top is, as you can probably see from the colours
  128. otherwise present, that it's the active window titlebar/colour/font, with the name of the
  129. playlist being un-bolded (if the window title is bold)...
  130. <leinir> eean: Some people will identify the active window by titlebar colour alone :)
  131. <mp8> Album covers as icons from filebrowser.
  132. <eean> When the player window shades, it should lose its title bar and be replaced with something more
  133. compactish. This would probably have to be created manually.
  134. <sebr> Make the player window scroll the text in the opposite direction if using right-2-left text
  135. (eg hebrew or arabic)
  136. <sebr> Use Metabar's box retraction animation to the context browser. More iCandy. Any Javascript experts around?
  137. <mxcl> Should be able to open collection browser by right clicking on stuff in contextB, so show the
  138. artist or album that is right clicked.
  139. <markey> AudioCD support for gst engine (cdparanoia ! *sink). -->markey
  140. <markey> We should cut down on unnecessary/redundant debug output/warnings (noise).
  141. <mxcl> Perhaps a nice idea: when you drag playlistItems to a branch in the collection browser
  142. it prompts to change the track's tags, so drag a track to the "moolaaa" album and that
  143. track get's it's album tag changed to "moolaaa" and is inserted into the branch, so the user
  144. know's what has happened.
  145. <mxcl> User asked for a CTRL-J itty-bitty dialog that allows you to jump to a specific part
  146. of a track. I'll see if I can do it with tiny amount of code -->mxcl
  147. <muesli> Don't rely on KDE timeouts to see whether a file is accessible or not,
  148. since this really sucks for disconnected network shares. XMMS handles
  149. this way better and it really is a problem in userland. maybe a thread
  150. helps, which simply tries to fopen() the file. if this task hasn't been
  151. finished in (let's say) 3 seconds, jump to the next song. XMMS even
  152. remembers such files and their folders, so that it's not going to open
  153. another file from that folder for the next few minutes. what about hdd
  154. sleep-timeouts? opinions?
  155. <mxcl> Determine some behavior for the clear/shuffle/etc. buttons when a search is in action
  156. clear -> only clear the stuff that was searched for?
  157. shuffle -> stop the search and do normal shuffle?
  158. ADDitionally what to do when user rearranges a set of items that are the search result?
  159. <larson> No big deal to me as long as the behaviour is consistent. I.e. if shuffle shuffles
  160. the search, then clear should clear the search only, and visa versa.
  161. <larson> Make playlist toolbar buttons toggle like the playerwidget buttons.
  162. Toolbar button in FileBrowser for switching recursive directory reading.
  163. <mxcl> Can't resize newly displayed columns if they are hidden at beginning of session -->mxcl
  164. <muesli> Add an option "clean up playlist on startup".
  165. <mxcl> Do you mean remove duplicates or dead entries etc. ? Cool.
  166. <mxcl> Option: don't crossfade for sequential tracks on same album. Comments? -->mxcl
  167. Of course, there would still be the up to 150ms gap, but we can fix that some other time..
  168. <markey> Please clarify: is this the same as BR #75388 ?
  169. <mxcl> No, this is just to make crossfading not ruin album transitions
  170. Add dirs to combo history when user adds a track from that dir to the playlist.
  171. "Show playlist" to the right click menu, redundant but necessary.
  172. More KTips, better KTips, somehow use the "Did you know" tip dialog (eg kmail, gideon, etc.) -->mxcl
  173. Option to automatically adjust column widths.
  174. Option to implicitly sort playlist by { track, album } (on drop only) -->mxcl
  175. <berkus> Playmode indication button in main widget (repeat track/pl/shuffle), clickable.
  176. LONG-TERM:
  177. <sebr> Support multiple collections. This could be really powerful, and could be handled
  178. with the collection browser. We could support non-local collections, audio cd/dvds,
  179. NFS/Samba etc. This would also allow us to retrieve tracks from other networked pcs.
  180. Auto-polling of added collections for a 'hot-sync' style detection of collections.
  181. <markey> Use more accurate interpolation for analyzers (cubic or spline)
  182. Tabbed playlists.
  183. Pro: it's convenient to have several playlists
  184. Contra: the playlist is getting cluttered enough as it is!
  185. <illissius> I already added a comment wrt this to the b.k.o bug, but here's the idea:
  186. switch between playlists with the playlist browser -- that's what it's there for.
  187. This avoids the clutter. The way it'd work is the currently playing playlist would
  188. have the same fancy fading thing the current track has. The context menu for playlists
  189. would have two seperate items, one for showing and one for playing. When just showing,
  190. the previous playlist would continue playing while you view/edit the other one.
  191. (If you doubleclick a song in the new playlist, it would naturally start playing that
  192. one instead). What to do when the user doubleclicks a playlist -- show, play, or both
  193. -- is TBD.
  194. Make windows magnetic / sticking together (difficult).
  195. <mxcl> Implement beat detection (thread?), interface should glow/move to
  196. the beat, visualisations have access to beat/bpm info.
  197. Audio system info widget, showing all available codecs and similar info.
  198. Resizable playerwidget, like in Winamp3.
  199. IDEAS:
  200. Bookmarks inside of tracks (good for very long tracks), and nifty bookmark browser
  201. Using filelight (as a kpart maybe) for a graphical representation of the playlist. so
  202. you could see at first glance how the altogether playing time is divided into different
  203. albums, tunes and so on.
  204. DO-NOT-IMPLEMENT (stuff that was rejected):
  205. <markey> Allow removing of playlist items by dragging back into browser.
  206. <larson> I think this is really weird. When I drag something I expect that someting to be
  207. ADDed or opened in the target. Not removed from the sender.
  208. (RFC: is this still appropriate or would it be misleading?)
  209. <muesli> imho, it's misleading and not hid-compatible. i would rather
  210. expect that file to be copied to the browser's current directory.
  211. "Hide playlist when main widget is not active" option (?? comments please: )
  212. <berkus> Noo, we have it hiding into tray, thats enough (imagine how much flashing will be
  213. if i drag mouse around with "focus follows mouse" on - this is the one i use all the time)
  214. <mxcl> Hence it's an option, you'd not use it with focus follows mouse. But it was just an idea
  215. anyway.. dunno if I like the sound of it anymore either.
  216. BACKTRACES/DEBUG/VALGRIND: