diff options
Diffstat (limited to 'apps/playlist_viewer.c')
-rw-r--r-- | apps/playlist_viewer.c | 53 |
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 */ |
93 | struct playlist_viewer { | 93 | struct 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) | |||
533 | static int get_track_num( struct playlist_viewer * local_viewer, | 537 | static 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 | { |