libsaria: Turn the library::Renderer into a library::Driver

This will provide a 2-way notification system, rather than just going
from libsaria to the UI.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-03-12 08:31:53 -04:00
parent 111e8f2c3b
commit 4448ba7ce1
4 changed files with 25 additions and 34 deletions

View File

@ -14,15 +14,14 @@ namespace libsaria
string path;
};
class Renderer {
class Driver {
public:
Renderer();
~Renderer();
Driver();
~Driver();
void add_path(string);
virtual void path_added(Path *) = 0;
};
void set_renderer(Renderer *);
void add_path(string);
/*namespace iter
{

View File

@ -12,7 +12,6 @@ using namespace std;
#include <libsaria/stack.h>*/
static list<struct libsaria::library::Path> path_list;
static libsaria::library::Renderer *renderer;
/*list<libsaria::LibraryPath> path_list;
libsaria::Playlist lib_playlist(PL_RANDOM | PL_SEQUENTIAL | PL_FILTER);
static map<sid_t, libsaria::Track *> lookup_map;
@ -36,9 +35,12 @@ static void do_update(libsaria::LibraryPath *path):
namespace libsaria
{
void library::set_renderer(Renderer *render)
library::Driver::Driver()
{
}
library::Driver::~Driver()
{
renderer = render;
}
/*
void library::init()
@ -78,13 +80,12 @@ namespace libsaria
trigger_callback(LIBRARY_REFRESH);
}
*/
void library::add_path(string dir)
void library::Driver::add_path(string dir)
{
struct Path path;
path.path = dir;
path_list.push_back(path);
if (renderer)
renderer->path_added(&path);
path_added(&path);
}
/*
void library::remove_path(string dir)

View File

@ -1,21 +0,0 @@
// Copyright (c) 2011 Bryan Schumaker.
#include <libsaria/library.h>
namespace libsaria
{
namespace library
{
Renderer::Renderer()
{
}
Renderer::~Renderer()
{
}
}; /* Namespace: library */
}; /* Namespace: libsaria */

View File

@ -5,12 +5,24 @@
#include <ocarina/button.h>
#include <ocarina/body.h>
class LibraryDriver : public libsaria::library::Driver {
public:
void path_added(libsaria::library::Path *);
};
static LibraryDriver driver;
void LibraryDriver::path_added(libsaria::library::Path *path)
{
println("Path added: " + path->path);
}
static void on_click_add(GtkWidget *b, GdkEvent *e, gpointer d)
{
string dir = ocarina::choose_dir();
if (dir != "") {
println("Scanning dir: " + dir);
libsaria::library::add_path(dir);
driver.add_path(dir);
}
}