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:
Bryan Schumaker 2012-02-19 17:03:07 -05:00
parent 2813481dff
commit 7a272e35f5
4 changed files with 33 additions and 34 deletions

View File

@ -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();

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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 */