ocarina/libsaria/library/library.cpp

80 lines
1.6 KiB
C++

#include <list>
#include <string>
using namespace std;
#include <libsaria/model.h>
#include <libsaria/callback.h>
#include <libsaria/library.h>
#include "library.h"
static list<LibraryPath> path_list;
namespace libsaria
{
list<LibraryPath> *library::get_path_list()
{
return &path_list;
}
LibraryPath *library::get_path(string dir)
{
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++) {
if (it->get_path() == dir)
return &(*it);
}
return NULL;
}
void library::for_each(SourceModel *model)
{
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++)
it->for_each(model);
}
void library::for_each_path(void (*info_func)(struct library::PathInfo &))
{
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++)
it->get_info(info_func);
}
void library::update()
{
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++)
it->update();
}
void library::play_id(ino_t &id)
{
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++) {
if (it->play_id(id) == true)
break;
}
}
bool library::get_info(ino_t &id, void (*func)(Track &))
{
bool found = false;
list<LibraryPath>::iterator it;
for (it = path_list.begin(); it != path_list.end(); it++) {
if (it->get_info_id(id, func) == true) {
found = true;
break;
}
}
return found;
}
void library::refresh()
{
rebuild_list();
trigger_callback(LIBRARY_REFRESH);
}
}; /* namespace: libsaria */