summaryrefslogtreecommitdiff
path: root/apps/plugins/pictureflow/pictureflow.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/pictureflow/pictureflow.c')
-rw-r--r--apps/plugins/pictureflow/pictureflow.c45
1 files changed, 41 insertions, 4 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index 74146d8172..2bf4127242 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -151,6 +151,10 @@ const struct button_mapping pf_context_buttons[] =
151 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 151 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
152 || (CONFIG_KEYPAD == IPOD_4G_PAD) \ 152 || (CONFIG_KEYPAD == IPOD_4G_PAD) \
153 || (CONFIG_KEYPAD == MPIO_HD300_PAD) 153 || (CONFIG_KEYPAD == MPIO_HD300_PAD)
154 {PF_JMP_PREV, BUTTON_LEFT, BUTTON_NONE},
155 {PF_JMP_PREV, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
156 {PF_JMP, BUTTON_RIGHT, BUTTON_NONE},
157 {PF_JMP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
154 {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU}, 158 {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
155#elif CONFIG_KEYPAD == IAUDIO_M3_PAD 159#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
156 {PF_QUIT, BUTTON_RC_REC, BUTTON_NONE}, 160 {PF_QUIT, BUTTON_RC_REC, BUTTON_NONE},
@@ -168,10 +172,10 @@ const struct button_mapping pf_context_buttons[] =
168 {PF_TRACKLIST, BUTTON_FFWD|BUTTON_REL, BUTTON_FFWD}, 172 {PF_TRACKLIST, BUTTON_FFWD|BUTTON_REL, BUTTON_FFWD},
169 {PF_WPS, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY}, 173 {PF_WPS, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY},
170#elif CONFIG_KEYPAD == FIIO_M3K_PAD 174#elif CONFIG_KEYPAD == FIIO_M3K_PAD
171 {PF_PREV, BUTTON_LEFT, BUTTON_NONE}, 175 {PF_JMP_PREV, BUTTON_LEFT, BUTTON_NONE},
172 {PF_PREV_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 176 {PF_JMP_PREV, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
173 {PF_NEXT, BUTTON_RIGHT, BUTTON_NONE}, 177 {PF_JMP, BUTTON_RIGHT, BUTTON_NONE},
174 {PF_NEXT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 178 {PF_JMP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
175 {PF_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 179 {PF_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
176 {PF_QUIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER}, 180 {PF_QUIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER},
177 {PF_CONTEXT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU}, 181 {PF_CONTEXT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
@@ -2969,7 +2973,10 @@ static inline void set_current_slide(const int slide_index)
2969 step = 0; 2973 step = 0;
2970 center_index = fbound(slide_index, 0, number_of_slides - 1); 2974 center_index = fbound(slide_index, 0, number_of_slides - 1);
2971 if (old_center_index != center_index) 2975 if (old_center_index != center_index)
2976 {
2977 rb->queue_remove_from_head(&thread_q, EV_WAKEUP);
2972 rb->queue_post(&thread_q, EV_WAKEUP, 0); 2978 rb->queue_post(&thread_q, EV_WAKEUP, 0);
2979 }
2973 target = center_index; 2980 target = center_index;
2974 slide_frame = slide_index << 16; 2981 slide_frame = slide_index << 16;
2975 reset_slides(); 2982 reset_slides();
@@ -3572,6 +3579,12 @@ static void show_track_list(void)
3572 if ( center_slide.slide_index != pf_tracks.cur_idx ) { 3579 if ( center_slide.slide_index != pf_tracks.cur_idx ) {
3573 show_track_list_loading(); 3580 show_track_list_loading();
3574 create_track_index(center_slide.slide_index); 3581 create_track_index(center_slide.slide_index);
3582 if (pf_tracks.count == 0)
3583 {
3584 pf_state = pf_cover_out;
3585 free_borrowed_tracks();
3586 return;
3587 }
3575 reset_track_list(); 3588 reset_track_list();
3576 } 3589 }
3577 int titletxt_w, titletxt_x, color, titletxt_h; 3590 int titletxt_w, titletxt_x, color, titletxt_h;
@@ -3631,6 +3644,26 @@ static void select_prev_track(void)
3631 } 3644 }
3632} 3645}
3633 3646
3647static void select_next_album(void)
3648{
3649 if (center_index < number_of_slides - 1) {
3650 free_borrowed_tracks();
3651 target = center_index + 1;
3652 set_current_slide(target);
3653 interrupt_cover_in_animation();
3654 }
3655}
3656
3657static void select_prev_album(void)
3658{
3659 if (center_index > 0) {
3660 free_borrowed_tracks();
3661 target = center_index - 1;
3662 set_current_slide(target);
3663 interrupt_cover_in_animation();
3664 }
3665}
3666
3634#if PF_PLAYBACK_CAPABLE 3667#if PF_PLAYBACK_CAPABLE
3635 3668
3636static bool playlist_insert(int position, bool queue, bool create_new) 3669static bool playlist_insert(int position, bool queue, bool create_new)
@@ -4167,6 +4200,8 @@ static int pictureflow_main(const char* selected_file)
4167 pf_state = pf_idle; 4200 pf_state = pf_idle;
4168 set_current_slide(get_album_artist_alpha_next_index()); 4201 set_current_slide(get_album_artist_alpha_next_index());
4169 } 4202 }
4203 else if ( pf_state == pf_show_tracks )
4204 select_next_album();
4170 break; 4205 break;
4171 case PF_JMP_PREV: 4206 case PF_JMP_PREV:
4172 if (pf_state == pf_idle || pf_state == pf_scrolling) 4207 if (pf_state == pf_idle || pf_state == pf_scrolling)
@@ -4174,6 +4209,8 @@ static int pictureflow_main(const char* selected_file)
4174 pf_state = pf_idle; 4209 pf_state = pf_idle;
4175 set_current_slide(get_album_artist_alpha_prev_index()); 4210 set_current_slide(get_album_artist_alpha_prev_index());
4176 } 4211 }
4212 else if ( pf_state == pf_show_tracks )
4213 select_prev_album();
4177 break; 4214 break;
4178#if PF_PLAYBACK_CAPABLE 4215#if PF_PLAYBACK_CAPABLE
4179 case PF_CONTEXT: 4216 case PF_CONTEXT: