TODO for later

* CLEAN UP THE CODE !!!!!!!!!!!
  keep implementation knowledge / details where they belong
* throw resolveslashes out of itunesdb (doesn't belong there)
* check del() for tracks and albums: who deletes files, what to do when deleting albums with the files? (also check ipod.cpp)
* add "initialize iPod" utility
* try to find a way to substitute the snychronize utility and save automativally (maybe everytime after a listdir?)
* m3u importer so applications like amarok can directly save playlists to the ipod
  * urls beginning with ipod:/ can directly be translated to trackids
  * other urls need to be copied first
* care about add tracks already on the iPod
  
TODO

* when people complain that the slave doesn't find their iPod
  replace KMountpoint with a class that uses /proc/mounts thus making it more stable
* IPodSlave::findTrack is UGLY (but works), rethink this functionality
* Setter for TrackList should use the container to update information on the container side (setAlbum() should move the track from one album to another in the container)
* TrackList/Playlist and other information containers may be interfaces so we can hide dangerous methods from the outside world
* have a method in IPod that returns the whole itunesdb instance. Make the ITunesDBListener and ...Datasource methods invisible from outside the itunesdb class (inner classes)
* clean up the whole Track - TrackMetaData and Playlist - TrackList mess
* code/functionality documentation!
* add trackid to playlist if new track was dropped on a playlist
* add a playlistchangelistener to the trackcontainer so it gets notified about playlist/album changes
* add a trackdatachangelistener so the container gets notified about changes done to a track (like album for example)
  .. or delegate setArtist/Album/Title from Track/TrackList to the itunesdb class
  .. or have references to Artist/Album instances in Track instead of copying data around *rolleyes* DRY!
* add a discard all changes option to the sync utility    - dunno how this could work (you'd have to force other clients to forget the changes)
* Internationalization (filenames, messages)
* implement html output by using templates (dunno where to put them)
  - check, where to find the dir where to put resources (or the resource itself)
* better design for html output
* add disc status to statitics
* add track metadata editor
* Albums need to be sorted by tracknum or title
  hint: Tracks on the iPod do get sorted by tracknum: we _need_ to set this information to something useful
        either by the information given by id3tag or by name ... etc.
* create a tool for initializing an iPod
        
Refactor!
* refactor! Some functionalities in TrackContainer and some in kio_ipodslave do not belong there

* check if different slaves are having concurrent access to the logfile while doing write operations (only 1 at a time?)
  listdir for example is concurrent
  <snip>
	kio_ipodslave: ipodslave::listDir()/Artists/Mari Boine/Eight Seasons
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Mari Boine/Eight Seasons finished.
	kio_ipodslave: ipodslave::listDir()/Artists/Prodigy/The Prodigy Experience
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Prodigy/The Prodigy Experience finished.
	kio_ipodslave: ipodslave::listDir()/Artists/Nine Inch Nails/And All That Could Have Been
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Nine Inch Nails/And All That Could Have Been finished.
	kio_ipodslave: ipodslave::listDir()/Artists/The Chemical Brothers/Come with us finished.
	kio_ipodslave: ipodslave::listDir()/Artists/The Chemical Brothers/Dig Your Own Hole
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Wir Sind Helden/Die Reklamation
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Wir Sind Helden/Die Reklamation finished.
	kio_ipodslave: ipodslave::listDir()/Artists/Various Artists/Asia Lounge - asian flavoured club tunes - 3rd floor - CD 1 finished.
	kio_ipodslave: ipodslave::listDir()/Artists/Nightmares On Wax/Smokers Delight
	kio_ipodslave: ipodslave::replayLog()
	kio_ipodslave: ipodslave::listDir()/Artists/Nightmares On Wax/Smokers Delight finished.
	kio_ipodslave: ipodslave::listDir()/Artists/Turntable Rocker/Classic finished.
  </snip>
* check if we can remove more itunesdb specific stuff from the itunesDB interfaces
