diff options
Diffstat (limited to 'apps/plugins/pictureflow')
-rw-r--r-- | apps/plugins/pictureflow/pictureflow.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index 2c0a7c3f33..6db28f3aa1 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c | |||
@@ -55,14 +55,21 @@ static fb_data *lcd_fb; | |||
55 | #define PF_BACK ACTION_STD_CANCEL | 55 | #define PF_BACK ACTION_STD_CANCEL |
56 | #define PF_MENU ACTION_STD_MENU | 56 | #define PF_MENU ACTION_STD_MENU |
57 | #define PF_WPS ACTION_TREE_WPS | 57 | #define PF_WPS ACTION_TREE_WPS |
58 | #define PF_JMP ACTION_LISTTREE_PGDOWN | ||
59 | #define PF_JMP_PREV ACTION_LISTTREE_PGUP | ||
58 | 60 | ||
59 | #define PF_QUIT (LAST_ACTION_PLACEHOLDER + 1) | 61 | #define PF_QUIT (LAST_ACTION_PLACEHOLDER + 1) |
60 | #define PF_TRACKLIST (LAST_ACTION_PLACEHOLDER + 2) | 62 | #define PF_TRACKLIST (LAST_ACTION_PLACEHOLDER + 2) |
61 | 63 | ||
62 | #if defined(HAVE_SCROLLWHEEL) || CONFIG_KEYPAD == IRIVER_H10_PAD || \ | 64 | #if defined(HAVE_SCROLLWHEEL) || CONFIG_KEYPAD == IRIVER_H10_PAD || \ |
63 | CONFIG_KEYPAD == MPIO_HD300_PAD | 65 | CONFIG_KEYPAD == MPIO_HD300_PAD |
66 | #if (CONFIG_KEYPAD != IPOD_1G2G_PAD) \ | ||
67 | && (CONFIG_KEYPAD != IPOD_3G_PAD) \ | ||
68 | && (CONFIG_KEYPAD != IPOD_4G_PAD) \ | ||
69 | && (CONFIG_KEYPAD != FIIO_M3K_PAD) | ||
64 | #define USE_CORE_PREVNEXT | 70 | #define USE_CORE_PREVNEXT |
65 | #endif | 71 | #endif |
72 | #endif | ||
66 | 73 | ||
67 | #ifndef USE_CORE_PREVNEXT | 74 | #ifndef USE_CORE_PREVNEXT |
68 | /* scrollwheel targets use the wheel, just as they do in lists, | 75 | /* scrollwheel targets use the wheel, just as they do in lists, |
@@ -81,6 +88,18 @@ const struct button_mapping pf_context_album_scroll[] = | |||
81 | {PF_PREV_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT,BUTTON_NONE}, | 88 | {PF_PREV_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT,BUTTON_NONE}, |
82 | {PF_NEXT, BUTTON_RC_FF, BUTTON_NONE}, | 89 | {PF_NEXT, BUTTON_RC_FF, BUTTON_NONE}, |
83 | {PF_NEXT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, | 90 | {PF_NEXT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, |
91 | #elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ | ||
92 | || (CONFIG_KEYPAD == IPOD_3G_PAD) \ | ||
93 | || (CONFIG_KEYPAD == IPOD_4G_PAD) \ | ||
94 | || (CONFIG_KEYPAD == FIIO_M3K_PAD) | ||
95 | {PF_JMP_PREV, BUTTON_LEFT, BUTTON_NONE}, | ||
96 | {PF_JMP_PREV, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, | ||
97 | {PF_JMP, BUTTON_RIGHT, BUTTON_NONE}, | ||
98 | {PF_JMP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, | ||
99 | {ACTION_NONE, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT}, | ||
100 | {ACTION_NONE, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT}, | ||
101 | {ACTION_NONE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT}, | ||
102 | {ACTION_NONE, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT}, | ||
84 | #elif defined(BUTTON_LEFT) && defined(BUTTON_RIGHT) | 103 | #elif defined(BUTTON_LEFT) && defined(BUTTON_RIGHT) |
85 | {PF_PREV, BUTTON_LEFT, BUTTON_NONE}, | 104 | {PF_PREV, BUTTON_LEFT, BUTTON_NONE}, |
86 | {PF_PREV_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, | 105 | {PF_PREV_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, |
@@ -1559,6 +1578,35 @@ static char* get_track_filename(const int track_index) | |||
1559 | } | 1578 | } |
1560 | #endif | 1579 | #endif |
1561 | 1580 | ||
1581 | |||
1582 | |||
1583 | static int get_album_artist_alpha_prev_index(void) | ||
1584 | { | ||
1585 | char* current_album_artist = get_album_artist(center_index); | ||
1586 | for (int i = center_index - 1; i > 0; i-- ) | ||
1587 | { | ||
1588 | int artist_idx = pf_idx.album_index[i].artist_idx; | ||
1589 | if(rb->strncmp(pf_idx.artist_names + artist_idx, current_album_artist, 1)) | ||
1590 | current_album_artist = pf_idx.artist_names + artist_idx; | ||
1591 | while (i > 0 && !rb->strncmp(pf_idx.artist_names + pf_idx.album_index[i-1].artist_idx, current_album_artist, 1)) | ||
1592 | i--; | ||
1593 | return i; | ||
1594 | } | ||
1595 | return 0; | ||
1596 | } | ||
1597 | |||
1598 | static int get_album_artist_alpha_next_index(void) | ||
1599 | { | ||
1600 | char* current_album_artist = get_album_artist(center_index); | ||
1601 | for (int i = center_index + 1; i < pf_idx.album_ct; i++ ) | ||
1602 | { | ||
1603 | int artist_idx = pf_idx.album_index[i].artist_idx; | ||
1604 | if(rb->strncmp(pf_idx.artist_names + artist_idx, current_album_artist, 1)) | ||
1605 | return i; | ||
1606 | } | ||
1607 | return pf_idx.album_ct - 1; | ||
1608 | } | ||
1609 | |||
1562 | static int get_wps_current_index(void) | 1610 | static int get_wps_current_index(void) |
1563 | { | 1611 | { |
1564 | char* current_artist = UNTAGGED; | 1612 | char* current_artist = UNTAGGED; |
@@ -3940,6 +3988,20 @@ static int pictureflow_main(void) | |||
3940 | if ( pf_state == pf_idle || pf_state == pf_scrolling ) | 3988 | if ( pf_state == pf_idle || pf_state == pf_scrolling ) |
3941 | show_previous_slide(); | 3989 | show_previous_slide(); |
3942 | break; | 3990 | break; |
3991 | case PF_JMP: | ||
3992 | if (pf_state == pf_idle || pf_state == pf_scrolling) | ||
3993 | { | ||
3994 | pf_state = pf_idle; | ||
3995 | set_current_slide(get_album_artist_alpha_next_index()); | ||
3996 | } | ||
3997 | break; | ||
3998 | case PF_JMP_PREV: | ||
3999 | if (pf_state == pf_idle || pf_state == pf_scrolling) | ||
4000 | { | ||
4001 | pf_state = pf_idle; | ||
4002 | set_current_slide(get_album_artist_alpha_prev_index()); | ||
4003 | } | ||
4004 | break; | ||
3943 | #if PF_PLAYBACK_CAPABLE | 4005 | #if PF_PLAYBACK_CAPABLE |
3944 | case PF_CONTEXT: | 4006 | case PF_CONTEXT: |
3945 | if (pf_cfg.auto_wps != 0 && | 4007 | if (pf_cfg.auto_wps != 0 && |