libsaria: Create load and save functions in the Playlist
These create and schedule idle tasks that perform the actual loading or saving. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
2813481dff
commit
7a272e35f5
|
@ -21,8 +21,11 @@ namespace libsaria
|
|||
Playlist(string);
|
||||
~Playlist();
|
||||
|
||||
void do_load();
|
||||
void do_save();
|
||||
void load();
|
||||
void save();
|
||||
|
||||
void add_ids(list<sid_t> &);
|
||||
void rm_ids(list<sid_t> &);
|
||||
unsigned int size();
|
||||
|
|
|
@ -2,10 +2,22 @@
|
|||
#include <libsaria/files.h>
|
||||
#include <libsaria/playlist.h>
|
||||
|
||||
static void load_playlist(void *plist)
|
||||
{
|
||||
libsaria::Playlist *playlist = (libsaria::Playlist *)plist;
|
||||
playlist->do_load();
|
||||
}
|
||||
|
||||
static void save_playlist(void *plist)
|
||||
{
|
||||
libsaria::Playlist *playlist = (libsaria::Playlist *)plist;
|
||||
playlist->do_save();
|
||||
}
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
|
||||
void Playlist::load()
|
||||
void Playlist::do_load()
|
||||
{
|
||||
unsigned int size;
|
||||
sid_t songid;
|
||||
|
@ -21,7 +33,13 @@ namespace libsaria
|
|||
}
|
||||
}
|
||||
|
||||
void Playlist::save()
|
||||
void Playlist::load()
|
||||
{
|
||||
LoadTask *task = new LoadTask(load_playlist, this);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
void Playlist::do_save()
|
||||
{
|
||||
OutFile out("queue.q");
|
||||
list<sid_t>::iterator it;
|
||||
|
@ -31,22 +49,10 @@ namespace libsaria
|
|||
out << (*it) << "\n";
|
||||
}
|
||||
|
||||
void Playlist::save()
|
||||
{
|
||||
SaveTask *task = new SaveTask(save_playlist, this);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
}; /* Namespace: libsaria */
|
||||
|
||||
void load_playlist(void *plist)
|
||||
{
|
||||
libsaria::Playlist *playlist = (libsaria::Playlist *)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();
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright (c) 2012 Bryan Schumaker.
|
||||
#include <libsaria/files.h>
|
||||
#include <libsaria/playlist.h>
|
||||
#include "playlist.h"
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
|
@ -9,8 +8,7 @@ namespace libsaria
|
|||
Playlist::Playlist(string file)
|
||||
{
|
||||
filename = file;
|
||||
LoadTask *task = new LoadTask(load_playlist, this);
|
||||
task->queue();
|
||||
load();
|
||||
}
|
||||
|
||||
Playlist::~Playlist()
|
||||
|
@ -20,14 +18,14 @@ namespace libsaria
|
|||
void Playlist::add_ids(list<sid_t> &ids)
|
||||
{
|
||||
plist.insert(plist.end(), ids.begin(), ids.end());
|
||||
save_playlist(this);
|
||||
save();
|
||||
}
|
||||
|
||||
void Playlist::rm_ids(list<sid_t> &ids)
|
||||
{
|
||||
for (it = ids.begin(); it != ids.end(); it++)
|
||||
plist.remove(*it);
|
||||
save_playlist(this);
|
||||
save();
|
||||
}
|
||||
|
||||
unsigned int Playlist::size()
|
||||
|
@ -39,7 +37,7 @@ namespace libsaria
|
|||
{
|
||||
sid_t id = plist.front();
|
||||
plist.pop_front();
|
||||
save_playlist(this);
|
||||
save();
|
||||
return id;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
// Copyright (c) 2012 Bryan Schumaker.
|
||||
#ifndef LIBSARIA_PLAYLIST_INTERNAL_H
|
||||
#define LIBSARIA_PLAYLIST_INTERNAL_H
|
||||
|
||||
void load_playlist(void *);
|
||||
void save_playlist(void *);
|
||||
|
||||
#endif /* LIBSARIA_PLAYLIST_INTERNAL_H */
|
Loading…
Reference in New Issue