core/playlist: Add new playlist_type struct
I intend to use this for creating playlists with different properties, such as using the playlist interface to add library paths. Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
140abe79bc
commit
e3d4143565
|
@ -156,6 +156,13 @@ static struct queue *__pl_system_get_queue(const gchar *name)
|
|||
}
|
||||
|
||||
|
||||
struct playlist_type pl_system = {
|
||||
.pl_get_queue = __pl_system_get_queue,
|
||||
.pl_add_track = __pl_system_add,
|
||||
.pl_remove_track = __pl_system_remove,
|
||||
};
|
||||
|
||||
|
||||
void playlist_init(struct queue_ops *ops)
|
||||
{
|
||||
queue_init(&playlist_q, Q_ENABLED | Q_REPEAT, ops);
|
||||
|
@ -178,19 +185,19 @@ bool playlist_add(enum playlist_t plist, struct track *track)
|
|||
{
|
||||
if (!track || __playlist_is_dynamic(plist))
|
||||
return false;
|
||||
return __pl_system_add(playlist_names[plist], track);
|
||||
return pl_system.pl_add_track(playlist_names[plist], track);
|
||||
}
|
||||
|
||||
bool playlist_remove(enum playlist_t plist, struct track *track)
|
||||
{
|
||||
if (!track || __playlist_is_dynamic(plist))
|
||||
return false;
|
||||
return __pl_system_remove(playlist_names[plist], track);
|
||||
return pl_system.pl_remove_track(playlist_names[plist], track);
|
||||
}
|
||||
|
||||
bool playlist_has(enum playlist_t plist, struct track *track)
|
||||
{
|
||||
struct queue *queue = __pl_system_get_queue(playlist_names[plist]);
|
||||
struct queue *queue = pl_system.pl_get_queue(playlist_names[plist]);
|
||||
if (!track || !queue)
|
||||
return false;
|
||||
return queue_has(queue, track);
|
||||
|
@ -213,6 +220,6 @@ void playlist_select(enum playlist_t plist)
|
|||
struct queue *playlist_get_queue(enum playlist_t plist)
|
||||
{
|
||||
if (__playlist_is_static(plist))
|
||||
return __pl_system_get_queue(playlist_names[plist]);
|
||||
return pl_system.pl_get_queue(playlist_names[plist]);
|
||||
return &playlist_q;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,19 @@ enum playlist_t {
|
|||
PL_LEAST_PLAYED, /* Songs with a below average play count. */
|
||||
};
|
||||
|
||||
|
||||
struct playlist_type {
|
||||
/* Called to get the queue for the playlist. */
|
||||
struct queue *(*pl_get_queue)(const gchar *);
|
||||
|
||||
/* Called to add a track to the playlist. */
|
||||
bool (*pl_add_track)(const gchar *, struct track *);
|
||||
|
||||
/* Called to remove a track from the playlist. */
|
||||
bool (*pl_remove_track)(const gchar *, struct track *);
|
||||
};
|
||||
|
||||
|
||||
/* Called to initialize the playlist manager. */
|
||||
void playlist_init(struct queue_ops *);
|
||||
|
||||
|
|
Loading…
Reference in New Issue