core/playlists: Accept an argument list for playlists initial sort order
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
a4cdac7f22
commit
7df129d533
|
@ -50,15 +50,21 @@ void playlist_generic_init(struct playlist *playlist)
|
|||
}
|
||||
}
|
||||
|
||||
void playlist_generic_init_sorted(struct playlist *playlist)
|
||||
void playlist_generic_init_sorted(struct playlist *playlist,
|
||||
unsigned int nargs, ...)
|
||||
{
|
||||
if (playlist) {
|
||||
playlist_generic_init(playlist);
|
||||
playlist_generic_sort(playlist, COMPARE_ARTIST);
|
||||
playlist_generic_sort(playlist, COMPARE_YEAR);
|
||||
playlist_generic_sort(playlist, COMPARE_ALBUM);
|
||||
playlist_generic_sort(playlist, COMPARE_TRACK);
|
||||
}
|
||||
unsigned int i;
|
||||
va_list argp;
|
||||
|
||||
if (!playlist)
|
||||
return;
|
||||
|
||||
playlist_generic_init(playlist);
|
||||
|
||||
va_start(argp, nargs);
|
||||
for (i = 0; i < nargs; i++)
|
||||
playlist_generic_sort(playlist, va_arg(argp, unsigned int));
|
||||
va_end(argp);
|
||||
}
|
||||
|
||||
void playlist_generic_deinit(struct playlist *playlist)
|
||||
|
@ -82,7 +88,8 @@ struct playlist *playlist_generic_alloc(gchar *name, enum playlist_type_t type,
|
|||
playlist->pl_id = id;
|
||||
playlist->pl_ops = ops;
|
||||
|
||||
playlist_generic_init_sorted(playlist);
|
||||
playlist_generic_init_sorted(playlist, 4, COMPARE_ARTIST, COMPARE_YEAR,
|
||||
COMPARE_ALBUM, COMPARE_TRACK);
|
||||
if (callbacks)
|
||||
callbacks->pl_cb_alloc(playlist);
|
||||
return playlist;
|
||||
|
|
|
@ -423,7 +423,9 @@ void pl_system_init(void)
|
|||
sys_pl_update(playlist);
|
||||
case SYS_PL_FAVORITES:
|
||||
case SYS_PL_HIDDEN:
|
||||
playlist_generic_init_sorted(playlist);
|
||||
playlist_generic_init_sorted(playlist, 4,
|
||||
COMPARE_ARTIST, COMPARE_YEAR,
|
||||
COMPARE_ALBUM, COMPARE_TRACK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ void playlist_generic_set_callbacks(struct playlist_callbacks *);
|
|||
|
||||
/* Generic playlist init functions. */
|
||||
void playlist_generic_init(struct playlist *);
|
||||
void playlist_generic_init_sorted(struct playlist *);
|
||||
void playlist_generic_init_sorted(struct playlist *, unsigned int, ...);
|
||||
|
||||
/* Generic playlist deinit function. */
|
||||
void playlist_generic_deinit(struct playlist *);
|
||||
|
|
|
@ -50,7 +50,7 @@ static void test_null()
|
|||
playlist_generic_free(NULL);
|
||||
|
||||
playlist_generic_init(NULL);
|
||||
playlist_generic_init_sorted(NULL);
|
||||
playlist_generic_init_sorted(NULL, 0);
|
||||
playlist_generic_deinit(NULL);
|
||||
|
||||
g_assert_null(playlist_lookup(PL_MAX_TYPE, "NULL"));
|
||||
|
@ -202,7 +202,8 @@ static void test_sorting()
|
|||
struct track *track;
|
||||
unsigned int i;
|
||||
|
||||
playlist_generic_init_sorted(&p);
|
||||
playlist_generic_init_sorted(&p, 4, COMPARE_ARTIST, COMPARE_YEAR,
|
||||
COMPARE_ALBUM, COMPARE_TRACK);
|
||||
g_assert_cmpuint(g_slist_length(p.pl_sort), ==, 4);
|
||||
playlist_clear_sort(&p);
|
||||
g_assert_cmpuint(g_slist_length(p.pl_sort), ==, 0);
|
||||
|
|
Loading…
Reference in New Issue