diff --git a/core/playlist.c b/core/playlist.c index 583e183a..ae82067c 100644 --- a/core/playlist.c +++ b/core/playlist.c @@ -6,19 +6,10 @@ static struct queue playlist_q; static enum playlist_t playlist_cur; -static const gchar *playlist_names[2] = { "Favorites", "Banned" }; +static const gchar *playlist_names[5] = + { "Favorites", "Hidden", "Unplayed", "Most Played", "Least Played" }; -static inline bool __playlist_is_static(enum playlist_t plist) -{ - return (plist == PL_FAVORITED) || (plist == PL_HIDDEN); -} - -static inline bool __playlist_is_dynamic(enum playlist_t plist) -{ - return !__playlist_is_static(plist); -} - static void __playlist_fill_dynamic(enum playlist_t plist) { unsigned int count = 0, average = 0; @@ -58,14 +49,14 @@ void playlist_deinit() bool playlist_add(enum playlist_t plist, struct track *track) { - if (!track || __playlist_is_dynamic(plist)) + if (!track) return false; 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)) + if (!track) return false; return pl_system.pl_remove_track(playlist_names[plist], track); } @@ -82,7 +73,7 @@ void playlist_select(enum playlist_t plist) { playlist_cur = plist; - if (__playlist_is_static(plist)) + if (playlist_get_queue(plist) != &playlist_q) return; queue_clear(&playlist_q); @@ -94,7 +85,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.pl_get_queue(playlist_names[plist]); - return &playlist_q; + struct queue *ret = pl_system.pl_get_queue(playlist_names[plist]); + return ret ? ret : &playlist_q; }