libsaria: Playlist tells renderer where to insert tracks
Now renderers don't need to track this on their own, and renderers will update as tracks are added. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
3c423e986a
commit
ed3254813c
|
@ -20,7 +20,7 @@ namespace libsaria
|
|||
void playlist_empty();
|
||||
|
||||
void fill();
|
||||
virtual void insert(Track *) = 0;
|
||||
virtual void insert(Track *, unsigned int) = 0;
|
||||
virtual void index_removed(int) = 0;
|
||||
};
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ class MenuItem
|
|||
class SongList : public libsaria::PlaylistRenderer
|
||||
{
|
||||
private:
|
||||
int ins_next;
|
||||
list <MenuItem> *menu_items;
|
||||
string name;
|
||||
|
||||
|
@ -54,7 +53,7 @@ class SongList : public libsaria::PlaylistRenderer
|
|||
|
||||
GtkWidget *init(string, list<MenuItem> *, bool);
|
||||
|
||||
void insert(libsaria::Track *);
|
||||
void insert(libsaria::Track *, unsigned int);
|
||||
void fill();
|
||||
void clear();
|
||||
void refilter();
|
||||
|
|
|
@ -28,9 +28,4 @@ namespace libsaria
|
|||
lib_playlist.sort();
|
||||
}
|
||||
|
||||
string library::next_file()
|
||||
{
|
||||
libsaria::Track *cur = lib_playlist.next();
|
||||
return cur->get_filepath();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,9 +68,15 @@ namespace libsaria
|
|||
|
||||
void Playlist::add_ids(list<sid_t> &ids)
|
||||
{
|
||||
Track *track;
|
||||
list<sid_t>::iterator it;
|
||||
for (it = ids.begin(); it != ids.end(); it++)
|
||||
plist.push_back(library::lookup(*it));
|
||||
|
||||
for (it = ids.begin(); it != ids.end(); it++) {
|
||||
track = library::lookup(*it);
|
||||
plist.push_back(track);
|
||||
if (renderer)
|
||||
renderer->insert(track, plist.size() - 1);
|
||||
}
|
||||
save();
|
||||
}
|
||||
|
||||
|
@ -125,11 +131,16 @@ namespace libsaria
|
|||
|
||||
void Playlist::for_each_insert()
|
||||
{
|
||||
unsigned int i;
|
||||
list<Track *>::iterator it;
|
||||
|
||||
if (renderer == NULL)
|
||||
return;
|
||||
|
||||
for (it = plist.begin(); it != plist.end(); it++)
|
||||
renderer->insert(*it);
|
||||
i = 0;
|
||||
for (it = plist.begin(); it != plist.end(); it++) {
|
||||
renderer->insert(*it, i);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <libsaria/callback.h>
|
||||
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
using namespace std;
|
||||
|
||||
static list<libsaria::Playlist *> playlist_stack;
|
||||
|
|
|
@ -28,9 +28,9 @@ void SongList::clear()
|
|||
thaw();
|
||||
}
|
||||
|
||||
void SongList::insert(libsaria::Track *track)
|
||||
void SongList::insert(libsaria::Track *track, unsigned int index)
|
||||
{
|
||||
gtk_list_store_insert_with_values(liststore, NULL, ins_next,
|
||||
gtk_list_store_insert_with_values(liststore, NULL, index,
|
||||
0, track->get_songid(),
|
||||
1, track->get_track(),
|
||||
2, track->get_title().c_str(),
|
||||
|
@ -40,13 +40,12 @@ void SongList::insert(libsaria::Track *track)
|
|||
6, track->get_year(),
|
||||
7, formatted(track->get_filepath()).c_str(),
|
||||
-1);
|
||||
ins_next++;
|
||||
set_label_text();
|
||||
}
|
||||
|
||||
void SongList::fill()
|
||||
{
|
||||
freeze();
|
||||
ins_next = 0;
|
||||
PlaylistRenderer::fill();
|
||||
thaw();
|
||||
set_label_text();
|
||||
|
|
Loading…
Reference in New Issue