libsaria: Play tracks based on inode number

This allows the UI to pass in an inode returned by the track list used
to set up the display.
This commit is contained in:
Bryan Schumaker 2011-09-20 08:34:02 -04:00
parent 309cda851f
commit 2017e8a2f1
8 changed files with 34 additions and 0 deletions

View File

@ -10,5 +10,6 @@ using namespace std;
void libsaria_add_library(string);
void libsaria_refresh_library();
void libsaria_library_list(list<Track> &);
void libsaria_play_id(ino_t);
#endif /* LIBSARIA_LIBRARY_H */

View File

@ -34,6 +34,7 @@ class TrackTag
string get_lenstr();
string get_artist();
string get_album();
string get_filepath();
unsigned int get_year();
};

View File

@ -23,3 +23,8 @@ void libsaria_library_list(list<Track> &track_list)
{
library.list_all(track_list);
}
void libsaria_play_id(ino_t inode)
{
library.play_id(inode);
}

View File

@ -15,3 +15,12 @@ void Library::list_all(list<Track> &track_list)
for (it = path_map.begin(); it != path_map.end(); it++)
it->second.list_all(track_list);
}
void Library::play_id(ino_t inode)
{
map<string, LibraryPath>::iterator it;
for (it = path_map.begin(); it != path_map.end(); it++) {
if (it->second.play_id(inode) == true)
break;
}
}

View File

@ -21,6 +21,7 @@ class Library
void add_path(string);
void update_path(string);
void list_all(list<Track> &);
void play_id(ino_t);
};
#endif /* LIBSARIA_LIBRARY_SOURCE_H */

View File

@ -1,4 +1,5 @@
#include <libsaria/controls.h>
#include "path.h"
LibraryPath::LibraryPath(string dir)
@ -22,3 +23,13 @@ void LibraryPath::list_all(list<Track> &track_list)
track_list.push_back(Track(it->first, &it->second));
}
}
bool LibraryPath::play_id(ino_t inode)
{
map<ino_t, TrackTag>::iterator iter;
iter = file_map.find(inode);
if (iter == file_map.end())
return false;
libsaria_load(iter->second.get_filepath());
return true;
}

View File

@ -25,6 +25,7 @@ class LibraryPath
void insert_track(ino_t, TrackTag &);
unsigned int size();
void list_all(list<Track> &track_list);
bool play_id(ino_t);
};
class ScanTask : public IdleTask

View File

@ -109,3 +109,8 @@ unsigned int TrackTag::get_year()
{
return year;
}
string TrackTag::get_filepath()
{
return filepath;
}