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)
|
void playlist_init(struct queue_ops *ops)
|
||||||
{
|
{
|
||||||
queue_init(&playlist_q, Q_ENABLED | Q_REPEAT, 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))
|
if (!track || __playlist_is_dynamic(plist))
|
||||||
return false;
|
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)
|
bool playlist_remove(enum playlist_t plist, struct track *track)
|
||||||
{
|
{
|
||||||
if (!track || __playlist_is_dynamic(plist))
|
if (!track || __playlist_is_dynamic(plist))
|
||||||
return false;
|
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)
|
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)
|
if (!track || !queue)
|
||||||
return false;
|
return false;
|
||||||
return queue_has(queue, track);
|
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)
|
struct queue *playlist_get_queue(enum playlist_t plist)
|
||||||
{
|
{
|
||||||
if (__playlist_is_static(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;
|
return &playlist_q;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,19 @@ enum playlist_t {
|
||||||
PL_LEAST_PLAYED, /* Songs with a below average play count. */
|
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. */
|
/* Called to initialize the playlist manager. */
|
||||||
void playlist_init(struct queue_ops *);
|
void playlist_init(struct queue_ops *);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue