From 2a6d05ebee136962b9ab6743621476a6bb5fd948 Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Thu, 20 Oct 2011 10:23:35 -0400 Subject: [PATCH] libsaria: Fill out a struct PathInfo This struct is used by the gui to show how large a library path is and eventually to remove it from the library. --- include/libsaria/library.h | 6 ++++++ libsaria/library/library.cpp | 15 +++++++++++++++ libsaria/library/library.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/include/libsaria/library.h b/include/libsaria/library.h index 80d384bc..95576594 100644 --- a/include/libsaria/library.h +++ b/include/libsaria/library.h @@ -11,6 +11,11 @@ namespace libsaria { namespace library { + struct PathInfo { + string path; + unsigned int size; + }; + void load(); void save(); void refresh(); @@ -18,6 +23,7 @@ namespace libsaria void add_path(string); void play_id(ino_t); void for_each(void (*)(Track &)); + void for_each_path(void (*)(struct PathInfo &)); unsigned int size(); } diff --git a/libsaria/library/library.cpp b/libsaria/library/library.cpp index a1b89451..51a32b92 100644 --- a/libsaria/library/library.cpp +++ b/libsaria/library/library.cpp @@ -34,6 +34,14 @@ void LibraryPath::for_each(void (*ins_func)(Track &)) } } +void LibraryPath::get_info(void (*info_func)(struct libsaria::library::PathInfo &)) +{ + struct libsaria::library::PathInfo info; + info.path = path; + info.size = size(); + info_func(info); +} + bool LibraryPath::play_id(ino_t id) { map::iterator it; @@ -54,6 +62,13 @@ namespace libsaria it->second.for_each(ins_func); } + void library::for_each_path(void (*info_func)(struct library::PathInfo &)) + { + map::iterator it; + for (it = path_map.begin(); it != path_map.end(); it++) + it->second.get_info(info_func); + } + void library::play_id(ino_t id) { map::iterator it; diff --git a/libsaria/library/library.h b/libsaria/library/library.h index ee656943..3242471b 100644 --- a/libsaria/library/library.h +++ b/libsaria/library/library.h @@ -5,6 +5,7 @@ #include using namespace std; +#include #include class LibraryPath @@ -19,6 +20,7 @@ class LibraryPath ~LibraryPath(); void for_each(void (*)(Track &)); + void get_info(void (*)(struct libsaria::library::PathInfo &)); void insert_track(ino_t, TrackTag &); bool play_id(ino_t); void save(OutFile &);