Notify when library paths have been updated
This gives the UI a chance to set the new path or new size. I also updated Ocarina to show the library path size in its liststore row. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
8f666fe10c
commit
b0c76f4b11
|
@ -25,6 +25,7 @@ namespace libsaria
|
|||
~Driver();
|
||||
|
||||
virtual void path_added(Path *) = 0;
|
||||
virtual void path_updated(Path *) = 0;
|
||||
};
|
||||
|
||||
void add_path(string);
|
||||
|
|
|
@ -13,7 +13,7 @@ using namespace std;
|
|||
#include <libsaria/stack.h>*/
|
||||
|
||||
static list<struct libsaria::library::Path> path_list;
|
||||
static list<libsaria::library::Driver *> driver_list;
|
||||
list<libsaria::library::Driver *> driver_list;
|
||||
/*list<libsaria::LibraryPath> path_list;
|
||||
libsaria::Playlist lib_playlist(PL_RANDOM | PL_SEQUENTIAL | PL_FILTER);
|
||||
static map<sid_t, libsaria::Track *> lookup_map;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <libsaria/library.h>
|
||||
|
||||
extern list<libsaria::library::Driver *>driver_list;
|
||||
void update_path(struct libsaria::library::Path *);
|
||||
/*#include <string>
|
||||
using namespace std;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <libsaria/track.h>
|
||||
#include <libsaria/print.h>
|
||||
#include <libsaria/idle.h>
|
||||
#include "library.h"
|
||||
|
||||
static unsigned int MAX_SCAN = 20;
|
||||
|
||||
|
@ -52,9 +53,13 @@ ScanTask::~ScanTask()
|
|||
void ScanTask::run_task()
|
||||
{
|
||||
list<string>::iterator it;
|
||||
for (it = file_list.begin(); it != file_list.end(); it++) {
|
||||
list<libsaria::library::Driver *>::iterator d_it;
|
||||
|
||||
for (it = file_list.begin(); it != file_list.end(); it++)
|
||||
path->tracks.push_back(libsaria::Track(*it));
|
||||
}
|
||||
|
||||
for (d_it = driver_list.begin(); d_it != driver_list.end(); d_it++)
|
||||
(*d_it)->path_updated(path);
|
||||
}
|
||||
|
||||
ReaddirTask::ReaddirTask(struct libsaria::library::Path *p)
|
||||
|
|
|
@ -21,6 +21,7 @@ struct library_info {
|
|||
class LibraryDriver : public libsaria::library::Driver {
|
||||
public:
|
||||
void path_added(libsaria::library::Path *);
|
||||
void path_updated(libsaria::library::Path *);
|
||||
};
|
||||
|
||||
static LibraryDriver driver;
|
||||
|
@ -29,10 +30,32 @@ static GtkListStore *path_list;
|
|||
static struct library_info columns[] = {
|
||||
library_info("Pointer", G_TYPE_POINTER, false),
|
||||
library_info("Filepath", G_TYPE_STRING, true),
|
||||
library_info("Size", G_TYPE_UINT, true),
|
||||
};
|
||||
|
||||
static unsigned int NUM_COLUMNS = sizeof(columns) / sizeof(library_info);
|
||||
|
||||
void LibraryDriver::path_updated(libsaria::library::Path *path)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
libsaria::library::Path *list_path;
|
||||
|
||||
/* get_iter_first() return FALSE if the liststore is empty */
|
||||
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(path_list), &iter))
|
||||
return;
|
||||
|
||||
do {
|
||||
gtk_tree_model_get(GTK_TREE_MODEL(path_list), &iter, 0, &list_path, -1);
|
||||
if (list_path == path) {
|
||||
gtk_list_store_set(path_list, &iter,
|
||||
1, path->path.c_str(),
|
||||
2, path->tracks.size(),
|
||||
-1);
|
||||
break;
|
||||
};
|
||||
} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(path_list), &iter));
|
||||
}
|
||||
|
||||
void LibraryDriver::path_added(libsaria::library::Path *path)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
@ -41,6 +64,7 @@ void LibraryDriver::path_added(libsaria::library::Path *path)
|
|||
gtk_list_store_set(path_list, &iter,
|
||||
0, path,
|
||||
1, path->path.c_str(),
|
||||
2, path->tracks.size(),
|
||||
-1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue