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:
parent
18e0daeb17
commit
c2c13b2cbc
|
@ -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 */
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace libsaria
|
|||
{
|
||||
}
|
||||
|
||||
void Set::add_tracks(list<Track *> &tracks)
|
||||
void Set::do_add_tracks(list<Track *> &tracks)
|
||||
{
|
||||
add_sorted(tracks);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue