1
0
Fork 0
forked from len0rd/rockbox

pressing play on an .m3u file will run the playlist code

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@891 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Daniel Stenberg 2002-06-04 21:44:29 +00:00
parent 4d1fb48494
commit c60d12a067

View file

@ -172,7 +172,7 @@ static int start=0;
static int dirpos[MAX_DIR_LEVELS]; static int dirpos[MAX_DIR_LEVELS];
static int cursorpos[MAX_DIR_LEVELS]; static int cursorpos[MAX_DIR_LEVELS];
static int dirlevel=0; static int dirlevel=0;
static bool playing = false; static int playing = 0;
static char currdir[255]; static char currdir[255];
/* QUICK HACK! this should be handled by the playlist code later */ /* QUICK HACK! this should be handled by the playlist code later */
@ -180,25 +180,36 @@ char* peek_next_track(int type)
{ {
static char buf[256]; static char buf[256];
/* next-song only works when not browsing */ /* next-song only works when playing */
if (!playing) if (!playing)
return NULL; return NULL;
/* get next track in dir */ switch(playing) {
while (dircursor + start + 1 < numentries ) { default:
if(dircursor+1 < TREE_MAX_ON_SCREEN) case 1:
/* play-full-dir mode */
/* get next track in dir */
while (dircursor + start + 1 < numentries ) {
if(dircursor+1 < TREE_MAX_ON_SCREEN)
dircursor++; dircursor++;
else else
start++; start++;
if ( dircacheptr[dircursor+start]->file && if ( dircacheptr[dircursor+start]->file &&
dircacheptr[dircursor+start]->name[strlen(dircacheptr[dircursor+start]->name)-1] == '3') { dircacheptr[dircursor+start]->name[strlen(dircacheptr[dircursor+start]->name)-1] == '3') {
snprintf(buf,sizeof buf,"%s/%s", snprintf(buf,sizeof buf,"%s/%s",
currdir, dircacheptr[dircursor+start]->name ); currdir, dircacheptr[dircursor+start]->name );
lcd_clear_display(); lcd_clear_display();
lcd_puts(0,0,"<Playing>"); lcd_puts(0,0,"<Playing>");
lcd_puts(0,1,"<all files>"); lcd_puts(0,1,"<all files>");
return buf; return buf;
} }
}
break;
case 2:
/* playlist mode */
return playlist_next(type);
} }
return NULL; return NULL;
@ -286,13 +297,25 @@ bool dirbrowse(char *root)
dircursor=0; dircursor=0;
start=0; start=0;
} else { } else {
playing = true; int len=
playtune(currdir, dircacheptr[dircursor+start]->name); strlen(dircacheptr[dircursor+start]->name);
playing = false; if((len > 4) &&
!strcmp(&dircacheptr[dircursor+start]->name[len-4],
".m3u")) {
playing = 2;
play_list(currdir, dircacheptr[dircursor+start]->name);
}
else {
playing = 1;
playtune(currdir, dircacheptr[dircursor+start]->name);
playing = 0;
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
lcd_setmargins(0, MARGIN_Y); lcd_setmargins(0, MARGIN_Y);
lcd_setfont(0); lcd_setfont(0);
#endif #endif
}
} }
numentries = showdir(currdir, start); numentries = showdir(currdir, start);