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:
parent
309cda851f
commit
2017e8a2f1
|
@ -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 */
|
||||
|
|
|
@ -34,6 +34,7 @@ class TrackTag
|
|||
string get_lenstr();
|
||||
string get_artist();
|
||||
string get_album();
|
||||
string get_filepath();
|
||||
unsigned int get_year();
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -109,3 +109,8 @@ unsigned int TrackTag::get_year()
|
|||
{
|
||||
return year;
|
||||
}
|
||||
|
||||
string TrackTag::get_filepath()
|
||||
{
|
||||
return filepath;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue