summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/playlist_viewer.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 8452f4369a..7769e683d5 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -524,11 +524,33 @@ bool playlist_viewer(void)
524 return playlist_viewer_ex(NULL); 524 return playlist_viewer_ex(NULL);
525} 525}
526 526
527static int get_track_num( struct playlist_viewer * local_viewer,
528 int selected_item )
529{
530 if( local_viewer->move_track >= 0 )
531 {
532 if( local_viewer->selected_track == selected_item )
533 {
534 return local_viewer->move_track;
535 }
536 else if( local_viewer->selected_track > selected_item
537 && selected_item >= local_viewer->move_track )
538 {
539 return selected_item+1;
540 }
541 else if( local_viewer->selected_track < selected_item
542 && selected_item <= local_viewer->move_track )
543 {
544 return selected_item-1;
545 }
546 }
547 return selected_item;
548}
549
527static char *playlist_callback_name(int selected_item, void *data, char *buffer) 550static char *playlist_callback_name(int selected_item, void *data, char *buffer)
528{ 551{
529 struct playlist_viewer * local_viewer = (struct playlist_viewer *)data; 552 struct playlist_viewer * local_viewer = (struct playlist_viewer *)data;
530 struct playlist_entry *track= 553 struct playlist_entry *track = playlist_buffer_get_track(&(local_viewer->buffer), get_track_num(local_viewer,selected_item));
531 playlist_buffer_get_track(&(local_viewer->buffer), selected_item);
532 format_line(track, buffer, MAX_PATH); 554 format_line(track, buffer, MAX_PATH);
533 return(buffer); 555 return(buffer);
534} 556}
@@ -538,7 +560,8 @@ static int playlist_callback_icons(int selected_item, void *data)
538{ 560{
539 struct playlist_viewer * local_viewer=(struct playlist_viewer *)data; 561 struct playlist_viewer * local_viewer=(struct playlist_viewer *)data;
540 struct playlist_entry *track= 562 struct playlist_entry *track=
541 playlist_buffer_get_track(&(local_viewer->buffer), selected_item); 563 playlist_buffer_get_track(&(local_viewer->buffer),
564 get_track_num(local_viewer, selected_item));
542 if (track->index == local_viewer->current_playing_track) 565 if (track->index == local_viewer->current_playing_track)
543 { 566 {
544 /* Current playing track */ 567 /* Current playing track */
@@ -580,8 +603,6 @@ bool playlist_viewer_ex(char* filename)
580 while (!exit) 603 while (!exit)
581 { 604 {
582 int track; 605 int track;
583 if (viewer.move_track != -1)
584 gui_synclist_flash(&playlist_lists);
585 606
586 if (global_status.resume_index != -1 && !viewer.playlist) 607 if (global_status.resume_index != -1 && !viewer.playlist)
587 playlist_get_resume_info(&track); 608 playlist_get_resume_info(&track);
@@ -616,6 +637,7 @@ bool playlist_viewer_ex(char* filename)
616 : 637 :
617 BACKWARD 638 BACKWARD
618 ); 639 );
640 gui_synclist_draw(&playlist_lists);
619 } 641 }
620 switch (button) 642 switch (button)
621 { 643 {