libsaria: Save a playlist whenever it changes
With this change, my old queue code no longer saves itself. Instead, it only sends out QUEUE_REFRESH notifications. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
00274a836f
commit
57c8fcf030
|
@ -22,6 +22,7 @@ namespace libsaria
|
|||
~Playlist();
|
||||
|
||||
void load();
|
||||
void save();
|
||||
void add_ids(list<sid_t> &);
|
||||
void rm_ids(list<sid_t> &);
|
||||
unsigned int size();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// Copyright (c) 2012 Bryan Schumaker.
|
||||
#include <libsaria/files.h>
|
||||
#include <libsaria/playlist.h>
|
||||
|
||||
namespace libsaria
|
||||
|
@ -20,6 +21,16 @@ namespace libsaria
|
|||
}
|
||||
}
|
||||
|
||||
void Playlist::save()
|
||||
{
|
||||
OutFile out("queue.q");
|
||||
list<sid_t>::iterator it;
|
||||
|
||||
out << plist.size() << "\n";
|
||||
for (it = plist.begin(); it != plist.end(); it++)
|
||||
out << (*it) << "\n";
|
||||
}
|
||||
|
||||
}; /* Namespace: libsaria */
|
||||
|
||||
void load_playlist(void *plist)
|
||||
|
@ -28,3 +39,14 @@ void load_playlist(void *plist)
|
|||
playlist->load();
|
||||
}
|
||||
|
||||
static void do_save_playlist(void *plist)
|
||||
{
|
||||
libsaria::Playlist *playlist = (libsaria::Playlist *)plist;
|
||||
playlist->save();
|
||||
}
|
||||
|
||||
void save_playlist(void *plist)
|
||||
{
|
||||
SaveTask *task = new SaveTask(do_save_playlist, plist);
|
||||
task->queue();
|
||||
}
|
||||
|
|
|
@ -20,12 +20,14 @@ namespace libsaria
|
|||
void Playlist::add_ids(list<sid_t> &ids)
|
||||
{
|
||||
plist.insert(plist.end(), ids.begin(), ids.end());
|
||||
save_playlist(this);
|
||||
}
|
||||
|
||||
void Playlist::rm_ids(list<sid_t> &ids)
|
||||
{
|
||||
for (it = ids.begin(); it != ids.end(); it++)
|
||||
plist.remove(*it);
|
||||
save_playlist(this);
|
||||
}
|
||||
|
||||
unsigned int Playlist::size()
|
||||
|
@ -37,6 +39,7 @@ namespace libsaria
|
|||
{
|
||||
sid_t id = plist.front();
|
||||
plist.pop_front();
|
||||
save_playlist(this);
|
||||
return id;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,5 +3,6 @@
|
|||
#define LIBSARIA_PLAYLIST_INTERNAL_H
|
||||
|
||||
void load_playlist(void *);
|
||||
void save_playlist(void *);
|
||||
|
||||
#endif /* LIBSARIA_PLAYLIST_INTERNAL_H */
|
||||
|
|
|
@ -14,7 +14,6 @@ libsaria::Playlist q_queue("queue.q");
|
|||
static void save_and_refresh()
|
||||
{
|
||||
trigger_callback(QUEUE_REFRESH);
|
||||
libsaria::queue::save();
|
||||
}
|
||||
|
||||
namespace libsaria
|
||||
|
|
Loading…
Reference in New Issue