core/playlist: Add playlist_{next, prev}() functions
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
efae58c356
commit
8eaf6506e8
|
@ -77,7 +77,7 @@ static struct track *__audio_next(GstState state)
|
|||
{
|
||||
struct track *track = tempq_next();
|
||||
if (!track)
|
||||
track = queue_next(collection_get_queue());
|
||||
track = playlist_next();
|
||||
return __audio_load(track, state);
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ struct track *audio_next()
|
|||
|
||||
struct track *audio_prev()
|
||||
{
|
||||
return __audio_load_basic(history_prev(), GST_STATE_PLAYING);
|
||||
return __audio_load_basic(playlist_prev(), GST_STATE_PLAYING);
|
||||
}
|
||||
|
||||
struct track *audio_eos()
|
||||
|
|
|
@ -63,6 +63,16 @@ void playlist_sort(const gchar *name, enum compare_t sort, bool reset)
|
|||
pl_system.pl_sort(name, sort, reset);
|
||||
}
|
||||
|
||||
struct track *playlist_next(void)
|
||||
{
|
||||
return queue_next(playlist_get_queue("Collection"));
|
||||
}
|
||||
|
||||
struct track *playlist_prev(void)
|
||||
{
|
||||
return queue_next(playlist_get_queue("History"));
|
||||
}
|
||||
|
||||
struct queue *playlist_get_queue(const gchar *name)
|
||||
{
|
||||
return pl_system.pl_get_queue(name);
|
||||
|
|
|
@ -45,6 +45,13 @@ bool playlist_get_random(const gchar *);
|
|||
void playlist_sort(const gchar *, enum compare_t, bool);
|
||||
|
||||
|
||||
/* Called to get the next track from the default playlist. */
|
||||
struct track *playlist_next(void);
|
||||
|
||||
/* Called to get a previously played track. */
|
||||
struct track *playlist_prev(void);
|
||||
|
||||
|
||||
/* Called to access the playlist queue. */
|
||||
struct queue *playlist_get_queue(const gchar *);
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ static void test_audio_seek(gint64 pos)
|
|||
|
||||
static void test_audio()
|
||||
{
|
||||
struct db_entry *dbe, *next;
|
||||
struct track *track;
|
||||
gchar *duration;
|
||||
int argc = 0;
|
||||
|
@ -72,9 +73,16 @@ static void test_audio()
|
|||
collection_add("tests/Music/Hyrule Symphony");
|
||||
while (idle_run_task()) {};
|
||||
|
||||
track = track_get(0);
|
||||
db_for_each(dbe, next, track_db_get()) {
|
||||
if (TRACK(dbe)->tr_track == 1) {
|
||||
track = TRACK(dbe);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
playlist_add("Favorites", track);
|
||||
playlist_add("Hidden", track);
|
||||
test_equal(playlist_has("Collection", track), (bool)false);
|
||||
audio_load(track);
|
||||
|
||||
duration = string_sec2str(track->tr_length);
|
||||
|
@ -97,11 +105,11 @@ static void test_audio()
|
|||
|
||||
test_set_pause_after(0);
|
||||
audio_eos();
|
||||
test_equal(audio_cur_track()->tr_track, 1);
|
||||
test_equal(audio_cur_track()->tr_track, 2);
|
||||
test_str_equal(test_get_pause_text(), "(disabled)");
|
||||
|
||||
test_click_button("o_next");
|
||||
test_equal(audio_cur_track()->tr_track, 2);
|
||||
test_equal(audio_cur_track()->tr_track, 3);
|
||||
test_equal(test_get_toggle_state("o_favorite"), (bool)false);
|
||||
test_equal(test_get_toggle_state("o_hide"), (bool)false);
|
||||
|
||||
|
@ -109,15 +117,15 @@ static void test_audio()
|
|||
test_str_equal(test_get_pause_text(), "next track");
|
||||
|
||||
audio_eos();
|
||||
test_equal(audio_cur_track()->tr_track, 3);
|
||||
test_equal(audio_cur_track()->tr_track, 4);
|
||||
test_str_equal(test_get_pause_text(), "this track");
|
||||
|
||||
audio_eos();
|
||||
test_equal(audio_cur_track()->tr_track, 4);
|
||||
test_equal(audio_cur_track()->tr_track, 5);
|
||||
test_str_equal(test_get_pause_text(), "(disabled)");
|
||||
|
||||
test_click_button("o_prev");
|
||||
test_equal(audio_cur_track()->tr_track, 3);
|
||||
test_equal(audio_cur_track()->tr_track, 4);
|
||||
|
||||
test_click_button("o_pause");
|
||||
test_audio_seek(71 * GST_SECOND);
|
||||
|
|
Loading…
Reference in New Issue