libsaria: Restore last song on startup
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
a8c6aabff7
commit
b04aaf3815
|
@ -16,6 +16,16 @@ class IdleTask
|
|||
void queue_front();
|
||||
};
|
||||
|
||||
class IdleCallback : public IdleTask
|
||||
{
|
||||
private:
|
||||
void (*func)();
|
||||
public:
|
||||
IdleCallback(void (*)());
|
||||
~IdleCallback();
|
||||
void run_task();
|
||||
};
|
||||
|
||||
class WriteTask : public IdleTask
|
||||
{
|
||||
private:
|
||||
|
|
|
@ -23,3 +23,19 @@ bool IdleTask::should_cancel(void *data)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
IdleCallback::IdleCallback(void (*f)())
|
||||
{
|
||||
func = f;
|
||||
}
|
||||
|
||||
IdleCallback::~IdleCallback()
|
||||
{
|
||||
}
|
||||
|
||||
void IdleCallback::run_task()
|
||||
{
|
||||
func();
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
// Copyright (c) 2011 Bryan Schumaker.
|
||||
#include <libsaria/playlist.h>
|
||||
#include <libsaria/library.h>
|
||||
#include <libsaria/audio.h>
|
||||
#include <libsaria/track.h>
|
||||
#include <libsaria/prefs.h>
|
||||
#include <libsaria/deck.h>
|
||||
#include <libsaria/idle.h>
|
||||
#include <libsaria/fs.h>
|
||||
#include "library.h"
|
||||
|
||||
|
@ -55,6 +58,17 @@ void pop_path(libsaria::library::Path *path)
|
|||
}
|
||||
}
|
||||
|
||||
void restore_current()
|
||||
{
|
||||
unsigned int l_id = libsaria::prefs::get("libsaria.current.library");
|
||||
unsigned int t_id = libsaria::prefs::get("libsaria.current.track");
|
||||
libsaria::Track *track = libsaria::library::lookup(l_id, t_id);
|
||||
if (track) {
|
||||
track->play_now();
|
||||
libsaria::audio::pause();
|
||||
}
|
||||
}
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
|
||||
|
@ -133,9 +147,14 @@ namespace libsaria
|
|||
|
||||
void library::init()
|
||||
{
|
||||
IdleCallback *task;
|
||||
|
||||
app::mkdir("library");
|
||||
next_id = schedule_load();
|
||||
deck::push_back(&lib_playlist);
|
||||
|
||||
task = new IdleCallback(restore_current);
|
||||
task->queue();
|
||||
}
|
||||
|
||||
}; /* namespace: libsaria */
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <libsaria/format.h>
|
||||
#include <libsaria/track.h>
|
||||
#include <libsaria/audio.h>
|
||||
#include <libsaria/prefs.h>
|
||||
#include <libsaria/print.h>
|
||||
|
||||
#include <taglib/tag.h>
|
||||
|
@ -140,6 +141,10 @@ namespace libsaria
|
|||
void Track::play_now()
|
||||
{
|
||||
println("Playing: " + title + " by " + artist);
|
||||
if (path) {
|
||||
prefs::set("libsaria.current.library", path->id);
|
||||
prefs::set("libsaria.current.track", id);
|
||||
}
|
||||
audio::load(filepath);
|
||||
audio::play();
|
||||
cur = this;
|
||||
|
|
Loading…
Reference in New Issue