libsaria: Replace add_track() and friends
I created simpler functions using the push_front() / push_back() names that stl uses. If we're a set-type playlist, then call the insert_sorted function instead. I also remove unnecessary bulk-inserts of a single track. Packing and unpacking a list each time seems stupid. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
a8f18478fa
commit
0600556ca4
|
@ -49,6 +49,7 @@ namespace libsaria
|
|||
unsigned int find_cur_index();
|
||||
unsigned int find_index(Track *);
|
||||
void add_track(Track *, unsigned int);
|
||||
void insert_sorted(Track *);
|
||||
void do_remove_tracks(list<Track *> &);
|
||||
unsigned int remove_track_it(list<Track *>::iterator &it, unsigned int);
|
||||
|
||||
|
@ -60,8 +61,6 @@ namespace libsaria
|
|||
Track *pick_random();
|
||||
Track *pick_sequential();
|
||||
void add_sorted(list<Track *> &);
|
||||
void add_to_end(list<Track *> &);
|
||||
void add_to_front(list<Track *> &);
|
||||
|
||||
public:
|
||||
Playlist(string, unsigned int, PlaylistType);
|
||||
|
@ -69,6 +68,10 @@ namespace libsaria
|
|||
void set_renderer(PlaylistRenderer *);
|
||||
PlaylistRenderer *get_renderer();
|
||||
|
||||
void push_front(Track *);
|
||||
void push_back(Track *);
|
||||
void push_back(list<Track *> &);
|
||||
|
||||
void save(ofstream &);
|
||||
bool is_static();
|
||||
bool is_disabled();
|
||||
|
@ -87,9 +90,6 @@ namespace libsaria
|
|||
unsigned int get_length();
|
||||
PlaylistType get_type();
|
||||
|
||||
virtual void do_add_tracks(list<Track *> &) = 0;
|
||||
void add_tracks(list<Track *> &);
|
||||
void add_track(Track *);
|
||||
void remove_indices(list<unsigned int> &);
|
||||
void remove_track(Track *);
|
||||
void track_updated(Track *);
|
||||
|
@ -103,7 +103,6 @@ namespace libsaria
|
|||
~Set();
|
||||
|
||||
Track *next();
|
||||
void do_add_tracks(list<Track *> &);
|
||||
};
|
||||
|
||||
|
||||
|
@ -114,7 +113,6 @@ namespace libsaria
|
|||
~Queue();
|
||||
|
||||
Track *next();
|
||||
void do_add_tracks(list<Track *> &);
|
||||
};
|
||||
|
||||
|
||||
|
@ -125,7 +123,6 @@ namespace libsaria
|
|||
~Stack();
|
||||
|
||||
Track *next();
|
||||
void do_add_tracks(list<Track *> &);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -15,26 +15,20 @@ namespace libsaria
|
|||
|
||||
void ban::track_banned(Track *track)
|
||||
{
|
||||
list<Track *> tracks;
|
||||
tracks.push_back(track);
|
||||
|
||||
/* Remove from library playlist */
|
||||
library::get_playlist()->remove_track(track);
|
||||
|
||||
/* Add to banned list */
|
||||
banned_plist.add_tracks(tracks);
|
||||
banned_plist.push_back(track);
|
||||
}
|
||||
|
||||
void ban::track_unbanned(Track *track)
|
||||
{
|
||||
list<Track *> tracks;
|
||||
tracks.push_back(track);
|
||||
|
||||
/* Remove from banned list */
|
||||
banned_plist.remove_track(track);
|
||||
|
||||
/* Add to library playlist */
|
||||
library::get_playlist()->add_tracks(tracks);
|
||||
library::get_playlist()->push_back(track);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -95,8 +95,8 @@ void read_path(ifstream &stream)
|
|||
|
||||
libsaria::notify(PATH_UPDATED, path_ptr);
|
||||
if (path.visible) {
|
||||
lib_playlist.add_tracks(tracks);
|
||||
libsaria::ban::get_banned_plist()->add_tracks(banned);
|
||||
lib_playlist.push_back(tracks);
|
||||
libsaria::ban::get_banned_plist()->push_back(banned);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -142,8 +142,8 @@ namespace libsaria
|
|||
struct sort_data sort;
|
||||
|
||||
path->tracks.for_each_item(sort_tracks, &sort);
|
||||
lib_playlist.add_tracks(sort.tracks);
|
||||
ban::get_banned_plist()->add_tracks(sort.banned);
|
||||
lib_playlist.push_back(sort.tracks);
|
||||
ban::get_banned_plist()->push_back(sort.banned);
|
||||
|
||||
path->visible = true;
|
||||
path->data_state = DIRTY;
|
||||
|
|
|
@ -111,7 +111,7 @@ void ScanTask::run_task()
|
|||
|
||||
try {
|
||||
li = path->tracks.push_back(libsaria::Track(*it, path));
|
||||
lib_playlist.add_track(&li->get_value());
|
||||
lib_playlist.push_back(&li->get_value());
|
||||
path->data_state = DIRTY;
|
||||
} catch (string message) {
|
||||
println(message);
|
||||
|
|
|
@ -20,6 +20,9 @@ namespace libsaria
|
|||
notify_ui(PLAYLIST_ADD, track, ins_index);
|
||||
notify_ui(PLAYLIST_SIZE, NULL, 0);
|
||||
data_state = DIRTY;
|
||||
schedule_save();
|
||||
if (plist.size() == 1)
|
||||
cur = plist.begin();
|
||||
}
|
||||
|
||||
unsigned int Playlist::remove_track_it(list<Track *>::iterator &it,
|
||||
|
@ -108,41 +111,42 @@ namespace libsaria
|
|||
}
|
||||
}
|
||||
|
||||
void Playlist::add_to_end(list<Track *> &tracks)
|
||||
void Playlist::push_front(Track *track)
|
||||
{
|
||||
list<Track *>::iterator it;
|
||||
unsigned int index = 0;
|
||||
plist.push_front(track);
|
||||
|
||||
for (it = tracks.begin(); it != tracks.end(); it++) {
|
||||
plist.push_back(*it);
|
||||
add_track(*it, plist.size());
|
||||
};
|
||||
if (type == PLIST_SET) {
|
||||
plist.sort();
|
||||
index = find_index(track);
|
||||
}
|
||||
|
||||
add_track(track, index);
|
||||
}
|
||||
|
||||
void Playlist::add_to_front(list<Track *> &tracks)
|
||||
void Playlist::push_back(Track *track)
|
||||
{
|
||||
unsigned int index = plist.size() + 1;
|
||||
plist.push_back(track);
|
||||
if (type == PLIST_SET) {
|
||||
plist.sort();
|
||||
index = find_index(track);
|
||||
}
|
||||
add_track(track, index);
|
||||
}
|
||||
|
||||
void Playlist::push_back(list<Track *> &tracks)
|
||||
{
|
||||
list<Track *>::iterator it;
|
||||
|
||||
tracks.reverse();
|
||||
for (it = tracks.begin(); it != tracks.end(); it++) {
|
||||
plist.push_front(*it);
|
||||
add_track(*it, 0);
|
||||
if (type == PLIST_SET)
|
||||
add_sorted(tracks);
|
||||
else {
|
||||
for (it = tracks.begin(); it != tracks.end(); it++)
|
||||
push_back(*it);
|
||||
if (plist.size() == tracks.size())
|
||||
cur = plist.begin();
|
||||
}
|
||||
}
|
||||
|
||||
void Playlist::add_tracks(list<Track *> &tracks)
|
||||
{
|
||||
do_add_tracks(tracks);
|
||||
schedule_save();
|
||||
if (plist.size() == tracks.size())
|
||||
cur = plist.begin();
|
||||
}
|
||||
|
||||
void Playlist::add_track(Track *track)
|
||||
{
|
||||
list<Track *> tracks;
|
||||
tracks.push_back(track);
|
||||
do_add_tracks(tracks);
|
||||
schedule_save();
|
||||
}
|
||||
|
||||
}; /* namespace: libsaria */
|
||||
|
|
|
@ -130,7 +130,7 @@ namespace libsaria
|
|||
|
||||
renumber_playlists();
|
||||
|
||||
plist->add_tracks(tracks);
|
||||
plist->push_back(tracks);
|
||||
return plist;
|
||||
}
|
||||
|
||||
|
@ -174,7 +174,7 @@ namespace libsaria
|
|||
void deck::list_recent(Track *track)
|
||||
{
|
||||
recent_plist.remove_track(track);
|
||||
recent_plist.add_track(track);
|
||||
recent_plist.push_front(track);
|
||||
recent_plist.reset_iterator();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,11 +16,6 @@ namespace libsaria
|
|||
{
|
||||
}
|
||||
|
||||
void Queue::do_add_tracks(list<Track *> &tracks)
|
||||
{
|
||||
add_to_end(tracks);
|
||||
}
|
||||
|
||||
Track *Queue::next()
|
||||
{
|
||||
return pick_sequential();
|
||||
|
|
|
@ -16,11 +16,6 @@ namespace libsaria
|
|||
{
|
||||
}
|
||||
|
||||
void Set::do_add_tracks(list<Track *> &tracks)
|
||||
{
|
||||
add_sorted(tracks);
|
||||
}
|
||||
|
||||
Track *Set::next()
|
||||
{
|
||||
return pick_random();
|
||||
|
|
|
@ -16,11 +16,6 @@ namespace libsaria
|
|||
{
|
||||
}
|
||||
|
||||
void Stack::do_add_tracks(list<Track *> &tracks)
|
||||
{
|
||||
add_to_front(tracks);
|
||||
}
|
||||
|
||||
Track *Stack::next()
|
||||
{
|
||||
return pick_sequential();
|
||||
|
|
|
@ -216,7 +216,7 @@ static bool add_to_playlist(GtkTreeView *treeview, int n)
|
|||
|
||||
playlist = libsaria::deck::get_playlist(n);
|
||||
if (playlist)
|
||||
playlist->add_tracks(tracks);
|
||||
playlist->push_back(tracks);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user