libsaria: Create a single add_tracks() function

Derived classes need to implement a do_add_tracks() function instead so
I have a single place to notify the renderer and save the playlist.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-04-14 11:16:15 -04:00
parent 18e0daeb17
commit c2c13b2cbc
5 changed files with 13 additions and 25 deletions

View File

@ -85,7 +85,8 @@ namespace libsaria
unsigned int get_length();
PlaylistType get_type();
virtual void add_tracks(list<Track *> &) = 0;
virtual void do_add_tracks(list<Track *> &) = 0;
void add_tracks(list<Track *> &);
void remove_indices(list<unsigned int> &);
void remove_tracks(list<Track *> &);
};
@ -98,7 +99,7 @@ namespace libsaria
~Set();
Track *next();
void add_tracks(list<Track *> &);
void do_add_tracks(list<Track *> &);
};
@ -109,7 +110,7 @@ namespace libsaria
~Queue();
Track *next();
void add_tracks(list<Track *> &);
void do_add_tracks(list<Track *> &);
};
@ -120,7 +121,7 @@ namespace libsaria
~List();
Track *next();
void add_tracks(list<Track *> &);
void do_add_tracks(list<Track *> &);
};
}; /* Namespace: libsaria */

View File

@ -91,11 +91,8 @@ namespace libsaria
list<Track *> copy;
list<Track *>::iterator it, cur_it;
unsigned int ins_index;
bool update_cur = (plist.size() == 0);
RENDER(modify_prepare());
tracks.sort(compare_tracks);
copy = tracks;
plist.merge(copy, compare_tracks);
@ -109,43 +106,33 @@ namespace libsaria
};
ins_index++;
}
if (update_cur)
cur = plist.begin();
schedule_save();
RENDER(modify_done());
}
void Playlist::add_to_end(list<Track *> &tracks)
{
list<Track *>::iterator it;
RENDER(modify_prepare());
for (it = tracks.begin(); it != tracks.end(); it++) {
plist.push_back(*it);
add_track(*it, plist.size());
};
if (plist.size() == tracks.size())
cur = plist.begin();
schedule_save();
RENDER(modify_done());
}
void Playlist::add_to_front(list<Track *> &tracks)
{
list<Track *>::iterator it;
RENDER(modify_prepare());
tracks.reverse();
for (it = tracks.begin(); it != tracks.end(); it++) {
plist.push_front(*it);
add_track(*it, 0);
}
}
void Playlist::add_tracks(list<Track *> &tracks)
{
RENDER(modify_prepare());
do_add_tracks(tracks);
schedule_save();
RENDER(modify_done());
}

View File

@ -16,7 +16,7 @@ namespace libsaria
{
}
void List::add_tracks(list<Track *> &tracks)
void List::do_add_tracks(list<Track *> &tracks)
{
add_to_front(tracks);
}

View File

@ -16,7 +16,7 @@ namespace libsaria
{
}
void Queue::add_tracks(list<Track *> &tracks)
void Queue::do_add_tracks(list<Track *> &tracks)
{
add_to_end(tracks);
}

View File

@ -16,7 +16,7 @@ namespace libsaria
{
}
void Set::add_tracks(list<Track *> &tracks)
void Set::do_add_tracks(list<Track *> &tracks)
{
add_sorted(tracks);
}