libsaria: Give playlists a remove_track() function

This makes more sense than pushing a single track into a list and then
iterating over the single item...

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-07-01 11:38:50 -04:00
parent 1ba1c72e3f
commit 94cbcd9a5d
3 changed files with 22 additions and 2 deletions

View File

@ -92,6 +92,7 @@ namespace libsaria
virtual void do_add_tracks(list<Track *> &) = 0;
void add_tracks(list<Track *> &);
void remove_indices(list<unsigned int> &);
void remove_track(Track *);
void remove_tracks(list<Track *> &);
void track_updated(Track *);
};

View File

@ -19,7 +19,7 @@ namespace libsaria
tracks.push_back(track);
/* Remove from library playlist */
library::get_playlist()->remove_tracks(tracks);
library::get_playlist()->remove_track(track);
/* Add to banned list */
banned_plist.add_tracks(tracks);
@ -31,7 +31,7 @@ namespace libsaria
tracks.push_back(track);
/* Remove from banned list */
banned_plist.remove_tracks(tracks);
banned_plist.remove_track(track);
/* Add to library playlist */
library::get_playlist()->add_tracks(tracks);

View File

@ -42,6 +42,25 @@ namespace libsaria
return rm_index;
}
void Playlist::remove_track(Track *track)
{
list<Track *>::iterator it;
unsigned int index = 0;
RENDER( modify_prepare() );
for (it = plist.begin(); it != plist.end(); it++) {
if (*it == track) {
remove_track_it(it, index);
break;
}
index++;
}
schedule_save();
RENDER( modify_done() );
}
void Playlist::remove_tracks(list<Track *> &tracks)
{
list<Track *>::iterator p_it, t_it;