diff options
Diffstat (limited to 'apps/plugins/pictureflow/pictureflow.c')
-rw-r--r-- | apps/plugins/pictureflow/pictureflow.c | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index 35afdaf7e4..ec6e51c34d 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c | |||
@@ -1613,11 +1613,10 @@ static int get_album_artist_alpha_next_index(void) | |||
1613 | return pf_idx.album_ct - 1; | 1613 | return pf_idx.album_ct - 1; |
1614 | } | 1614 | } |
1615 | 1615 | ||
1616 | static int get_wps_current_index(void) | 1616 | static int id3_get_index(struct mp3entry *id3) |
1617 | { | 1617 | { |
1618 | char* current_artist = UNTAGGED; | 1618 | char* current_artist = UNTAGGED; |
1619 | char* current_album = UNTAGGED; | 1619 | char* current_album = UNTAGGED; |
1620 | struct mp3entry *id3 = rb->audio_current_track(); | ||
1621 | 1620 | ||
1622 | if(id3) | 1621 | if(id3) |
1623 | { | 1622 | { |
@@ -3752,6 +3751,35 @@ static void rb_splash_added_to_playlist(void) | |||
3752 | } | 3751 | } |
3753 | #endif | 3752 | #endif |
3754 | 3753 | ||
3754 | |||
3755 | static void set_initial_slide(const char* selected_file) | ||
3756 | { | ||
3757 | if (selected_file == NULL) | ||
3758 | set_current_slide(id3_get_index(rb->audio_current_track())); | ||
3759 | else | ||
3760 | { | ||
3761 | struct mp3entry id3; | ||
3762 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) | ||
3763 | if (rb->tagcache_fill_tags(&id3, selected_file)) | ||
3764 | set_current_slide(id3_get_index(&id3)); | ||
3765 | else | ||
3766 | #endif | ||
3767 | { | ||
3768 | int fd = rb->open(selected_file, O_RDONLY); | ||
3769 | if (fd >= 0) | ||
3770 | { | ||
3771 | if (rb->get_metadata(&id3, fd, selected_file)) | ||
3772 | set_current_slide(id3_get_index(&id3)); | ||
3773 | else | ||
3774 | set_current_slide(pf_cfg.last_album); | ||
3775 | rb->close(fd); | ||
3776 | } | ||
3777 | else | ||
3778 | set_current_slide(pf_cfg.last_album); | ||
3779 | } | ||
3780 | } | ||
3781 | } | ||
3782 | |||
3755 | /** | 3783 | /** |
3756 | Display an error message and wait for input. | 3784 | Display an error message and wait for input. |
3757 | */ | 3785 | */ |
@@ -3767,7 +3795,7 @@ static void error_wait(const char *message) | |||
3767 | Main function that also contain the main plasma | 3795 | Main function that also contain the main plasma |
3768 | algorithm. | 3796 | algorithm. |
3769 | */ | 3797 | */ |
3770 | static int pictureflow_main(void) | 3798 | static int pictureflow_main(const char* selected_file) |
3771 | { | 3799 | { |
3772 | int ret = SUCCESS; | 3800 | int ret = SUCCESS; |
3773 | 3801 | ||
@@ -3888,7 +3916,7 @@ static int pictureflow_main(void) | |||
3888 | 3916 | ||
3889 | recalc_offsets(); | 3917 | recalc_offsets(); |
3890 | reset_slides(); | 3918 | reset_slides(); |
3891 | set_current_slide(get_wps_current_index()); | 3919 | set_initial_slide(selected_file); |
3892 | 3920 | ||
3893 | char fpstxt[10]; | 3921 | char fpstxt[10]; |
3894 | int button; | 3922 | int button; |
@@ -4137,11 +4165,12 @@ enum plugin_status plugin_start(const void *parameter) | |||
4137 | lcd_fb = vp_main->buffer->fb_ptr; | 4165 | lcd_fb = vp_main->buffer->fb_ptr; |
4138 | 4166 | ||
4139 | int ret; | 4167 | int ret; |
4140 | (void) parameter; | 4168 | const char *file = parameter; |
4141 | 4169 | ||
4142 | void * buf; | 4170 | void * buf; |
4143 | size_t buf_size; | 4171 | size_t buf_size; |
4144 | bool prompt = (parameter && (((char *) parameter)[0] == ACTIVITY_MAINMENU)); | 4172 | bool prompt = (parameter && (((char *) parameter)[0] == ACTIVITY_MAINMENU)); |
4173 | bool file_id3 = (parameter && (((char *) parameter)[0] == '/')); | ||
4145 | 4174 | ||
4146 | if (!check_database(prompt)) | 4175 | if (!check_database(prompt)) |
4147 | { | 4176 | { |
@@ -4188,7 +4217,7 @@ enum plugin_status plugin_start(const void *parameter) | |||
4188 | pf_idx.buf = buf; | 4217 | pf_idx.buf = buf; |
4189 | pf_idx.buf_sz = buf_size; | 4218 | pf_idx.buf_sz = buf_size; |
4190 | 4219 | ||
4191 | ret = pictureflow_main(); | 4220 | ret = file_id3 ? pictureflow_main(file) : pictureflow_main(NULL); |
4192 | if ( ret == PLUGIN_OK || ret == PLUGIN_GOTO_WPS) { | 4221 | if ( ret == PLUGIN_OK || ret == PLUGIN_GOTO_WPS) { |
4193 | if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, | 4222 | if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, |
4194 | CONFIG_VERSION)) | 4223 | CONFIG_VERSION)) |