X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/3c1675731caaac73d6c362075ffb82bc45d2f060..848befbcc166fff6fdde6a635cf7a31f9f9185e0:/application/playlist.c diff --git a/application/playlist.c b/application/playlist.c index 80d335b..eb9dfc0 100644 --- a/application/playlist.c +++ b/application/playlist.c @@ -22,33 +22,40 @@ #include "playlist.h" +#include + #include "player.h" #include "utils.h" +#include + void PlayListInit(MainWindow *win) { + win->playlist.tracks = cxArrayListCreate(cxDefaultAllocator, NULL, CX_STORE_POINTERS, 64); win->playlist.current_track = -1; } void PlayListAddFile(MainWindow *win, const char *file) { char *f = strdup(file); - win->playlist.tracks = ucx_list_append(win->playlist.tracks, f); + cxListAdd(win->playlist.tracks, f); } void PlayListPlayNext(MainWindow *win, bool force) { - UcxList *tracks = win->playlist.tracks; + CxList *tracks = win->playlist.tracks; if(!tracks) return; - size_t len = ucx_list_size(tracks); + size_t len = tracks->size; int current = win->playlist.current_track; if(win->playlist.repeatTrack) { if(force) { current++; } + } else if(win->playlist.random) { + current = random() % len; } else if(current < len) { current++; } else if(win->playlist.autoplayFolder) { char *next_file = util_find_next_file(win->file); - win->playlist.tracks = ucx_list_append(win->playlist.tracks, next_file); + cxListAdd(win->playlist.tracks, next_file); current = len; } else { current = 0; @@ -58,12 +65,12 @@ void PlayListPlayNext(MainWindow *win, bool force) { } void PlayListPlayTrack(MainWindow *win, int i) { - UcxList *tracks = win->playlist.tracks; - if(i < ucx_list_size(tracks)) { - win->playlist.current_track = i; - UcxList *fileElm = ucx_list_get(tracks, i); - if(fileElm) { - win->file = fileElm->data; + CxList *tracks = win->playlist.tracks; + if(i < tracks->size) { + char *file = cxListAt(tracks, i); + if(file) { + win->playlist.current_track = i; + win->file = file; PlayerOpenFile(win); win->playlist.current_track = i; }