summaryrefslogtreecommitdiff
path: root/apps/playlist_viewer.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playlist_viewer.c')
-rw-r--r--apps/playlist_viewer.c53
1 files changed, 29 insertions, 24 deletions
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 5fcf9f237c..5f4c682605 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -91,11 +91,14 @@ struct playlist_buffer
91 91
92/* Global playlist viewer settings */ 92/* Global playlist viewer settings */
93struct playlist_viewer { 93struct playlist_viewer {
94 struct playlist_info* playlist; /* playlist being viewed */ 94 struct playlist_info* playlist; /* playlist being viewed */
95 int num_tracks; /* Number of tracks in playlist */ 95 int num_tracks; /* Number of tracks in playlist */
96 int current_playing_track; /* Index of current playing track */ 96 int current_playing_track; /* Index of current playing track */
97 int selected_track; /* The selected track, relative (first is 0)*/ 97 int selected_track; /* The selected track, relative (first is 0) */
98 int move_track; /* Playlist index of track to move or -1 */ 98 int moving_track; /* The track to move, relative (first is 0)
99 or -1 if nothing is currently being moved */
100 int moving_playlist_index; /* Playlist-relative index (as opposed to
101 viewer-relative index) of moving track */
99 struct playlist_buffer buffer; 102 struct playlist_buffer buffer;
100}; 103};
101 104
@@ -344,7 +347,7 @@ static bool playlist_viewer_init(struct playlist_viewer * viewer,
344 } 347 }
345 playlist_buffer_init(&viewer->buffer, buffer, buffer_size ); 348 playlist_buffer_init(&viewer->buffer, buffer, buffer_size );
346 349
347 viewer->move_track = -1; 350 viewer->moving_track = -1;
348 351
349 if (!reload) 352 if (!reload)
350 { 353 {
@@ -455,7 +458,7 @@ static int onplay_menu(int index)
455 else if (result >= 0) 458 else if (result >= 0)
456 { 459 {
457 /* Abort current move */ 460 /* Abort current move */
458 viewer.move_track = -1; 461 viewer.moving_track = -1;
459 462
460 switch (result) 463 switch (result)
461 { 464 {
@@ -487,7 +490,8 @@ static int onplay_menu(int index)
487 break; 490 break;
488 case 1: 491 case 1:
489 /* move track */ 492 /* move track */
490 viewer.move_track = current_track->index; 493 viewer.moving_track = index;
494 viewer.moving_playlist_index = current_track->index;
491 ret = 0; 495 ret = 0;
492 break; 496 break;
493 case 2: /* add to catalog */ 497 case 2: /* add to catalog */
@@ -533,21 +537,21 @@ bool playlist_viewer(void)
533static int get_track_num( struct playlist_viewer * local_viewer, 537static int get_track_num( struct playlist_viewer * local_viewer,
534 int selected_item ) 538 int selected_item )
535{ 539{
536 if( local_viewer->move_track >= 0 ) 540 if( local_viewer->moving_track >= 0 )
537 { 541 {
538 if( local_viewer->selected_track == selected_item ) 542 if( local_viewer->selected_track == selected_item )
539 { 543 {
540 return local_viewer->move_track; 544 return local_viewer->moving_track;
541 } 545 }
542 else if( local_viewer->selected_track > selected_item 546 else if( local_viewer->selected_track > selected_item
543 && selected_item >= local_viewer->move_track ) 547 && selected_item >= local_viewer->moving_track )
544 { 548 {
545 return selected_item+1; 549 return selected_item+1; /* move down */
546 } 550 }
547 else if( local_viewer->selected_track < selected_item 551 else if( local_viewer->selected_track < selected_item
548 && selected_item <= local_viewer->move_track ) 552 && selected_item <= local_viewer->moving_track )
549 { 553 {
550 return selected_item-1; 554 return selected_item-1; /* move up */
551 } 555 }
552 } 556 }
553 return selected_item; 557 return selected_item;
@@ -583,7 +587,7 @@ static int playlist_callback_icons(int selected_item, void *data)
583 /* Current playing track */ 587 /* Current playing track */
584 return Icon_Audio; 588 return Icon_Audio;
585 } 589 }
586 else if (track->index == local_viewer->move_track) 590 else if (track->index == local_viewer->moving_playlist_index)
587 { 591 {
588 /* Track we are moving */ 592 /* Track we are moving */
589 return Icon_Moving; 593 return Icon_Moving;
@@ -637,7 +641,7 @@ bool playlist_viewer_ex(const char* filename)
637 viewer.current_playing_track = track; 641 viewer.current_playing_track = track;
638 gui_synclist_set_nb_items(&playlist_lists, viewer.num_tracks); 642 gui_synclist_set_nb_items(&playlist_lists, viewer.num_tracks);
639 /* Abort move on playlist change */ 643 /* Abort move on playlist change */
640 viewer.move_track = -1; 644 viewer.moving_track = -1;
641 gui_synclist_draw(&playlist_lists); 645 gui_synclist_draw(&playlist_lists);
642 } 646 }
643 647
@@ -661,11 +665,11 @@ bool playlist_viewer_ex(const char* filename)
661 case ACTION_TREE_WPS: 665 case ACTION_TREE_WPS:
662 case ACTION_STD_CANCEL: 666 case ACTION_STD_CANCEL:
663 { 667 {
664 if (viewer.move_track >= 0) 668 if (viewer.moving_track >= 0)
665 { 669 {
666 viewer.selected_track = viewer.move_track; 670 viewer.selected_track = viewer.moving_track;
667 gui_synclist_select_item(&playlist_lists, viewer.move_track); 671 gui_synclist_select_item(&playlist_lists, viewer.moving_track);
668 viewer.move_track = -1; 672 viewer.moving_track = -1;
669 gui_synclist_draw(&playlist_lists); 673 gui_synclist_draw(&playlist_lists);
670 } 674 }
671 else 675 else
@@ -677,18 +681,19 @@ bool playlist_viewer_ex(const char* filename)
677 struct playlist_entry * current_track = 681 struct playlist_entry * current_track =
678 playlist_buffer_get_track(&viewer.buffer, 682 playlist_buffer_get_track(&viewer.buffer,
679 viewer.selected_track); 683 viewer.selected_track);
680 if (viewer.move_track >= 0) 684 if (viewer.moving_track >= 0)
681 { 685 {
682 /* Move track */ 686 /* Move track */
683 int ret_val; 687 int ret_val;
684 688
685 ret_val = playlist_move(viewer.playlist, viewer.move_track, 689 ret_val = playlist_move(viewer.playlist,
686 current_track->index); 690 viewer.moving_playlist_index,
691 current_track->index);
687 if (ret_val < 0) 692 if (ret_val < 0)
688 splashf(HZ, (unsigned char *)"%s %s", str(LANG_MOVE), 693 splashf(HZ, (unsigned char *)"%s %s", str(LANG_MOVE),
689 str(LANG_FAILED)); 694 str(LANG_FAILED));
690 update_playlist(true); 695 update_playlist(true);
691 viewer.move_track = -1; 696 viewer.moving_track = -1;
692 } 697 }
693 else if (!viewer.playlist) 698 else if (!viewer.playlist)
694 { 699 {