summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/plugins/pictureflow/pictureflow.c50
-rw-r--r--manual/plugins/pictureflow.tex1
3 files changed, 55 insertions, 10 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 232541e33f..ce31379bd0 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -16610,3 +16610,17 @@
perceptual_volume: "Perceptual"
</voice>
</phrase>
+<phrase>
+ id: LANG_SHOW_TRACKS_WHILE_BROWSING
+ desc: in PictureFlow Main Menu
+ user: core
+ <source>
+ *: "Show Tracks While Browsing"
+ </source>
+ <dest>
+ *: "Show Tracks While Browsing"
+ </dest>
+ <voice>
+ *: "Show Tracks While Browsing"
+ </voice>
+</phrase>
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index b884f3ae0f..87db58aa34 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -540,6 +540,7 @@ static PFreal offsetX;
static PFreal offsetY;
static int number_of_slides;
static bool is_initial_slide = true;
+static bool show_tracks_while_browsing = false;
static struct pf_slide_cache pf_sldcache;
@@ -3649,6 +3650,7 @@ static int settings_menu(void)
Show the main menu
*/
enum {
+ PF_SHOW_TRACKS_WHILE_BROWSING,
PF_GOTO_WPS,
#if PF_PLAYBACK_CAPABLE
PF_MENU_CLEAR_PLAYLIST,
@@ -3669,6 +3671,7 @@ static int main_menu(void)
#endif
MENUITEM_STRINGLIST(main_menu, "PictureFlow Main Menu", NULL,
+ ID2P(LANG_SHOW_TRACKS_WHILE_BROWSING),
ID2P(LANG_GOTO_WPS),
#if PF_PLAYBACK_CAPABLE
ID2P(LANG_CLEAR_PLAYLIST),
@@ -3679,6 +3682,16 @@ static int main_menu(void)
ID2P(LANG_MENU_QUIT));
while (1) {
switch (rb->do_menu(&main_menu,&selection, NULL, false)) {
+ case PF_SHOW_TRACKS_WHILE_BROWSING:
+ if (pf_state != pf_show_tracks)
+ {
+ if (pf_state == pf_scrolling)
+ set_current_slide(target);
+
+ skip_animation_to_show_tracks();
+ }
+ show_tracks_while_browsing = true;
+ return 0;
case PF_GOTO_WPS: /* WPS */
return -2;
#if PF_PLAYBACK_CAPABLE
@@ -3926,7 +3939,7 @@ static void show_track_list(void)
for (; track_i < pf_tracks.list_visible + pf_tracks.list_start; track_i++)
{
char *trackname = get_track_name(track_i);
- if ( track_i == pf_tracks.sel ) {
+ if (track_i == pf_tracks.sel && !show_tracks_while_browsing) {
if (pf_tracks.sel != pf_tracks.last_sel) {
set_scroll_line(trackname, PF_SCROLL_TRACK);
pf_tracks.last_sel = pf_tracks.sel;
@@ -4140,7 +4153,7 @@ static bool context_menu_ready(void)
rb->lcd_set_background(N_BRIGHT(255));
#endif
#endif
- insert_whole_album = pf_state != pf_show_tracks;
+ insert_whole_album = (pf_state != pf_show_tracks) || show_tracks_while_browsing;
FOR_NB_SCREENS(i)
rb->viewportmanager_theme_enable(i, true, NULL);
@@ -4151,7 +4164,7 @@ static void context_menu_cleanup(void)
{
FOR_NB_SCREENS(i)
rb->viewportmanager_theme_undo(i, false);
- if (insert_whole_album)
+ if (pf_state != pf_show_tracks)
free_borrowed_tracks();
#ifdef USEGSLIB
grey_show(true);
@@ -4163,7 +4176,7 @@ static void context_menu_cleanup(void)
static int context_menu(void)
{
char album_name[MAX_PATH];
- char *file_name = get_track_filename(pf_tracks.sel);
+ char *file_name = get_track_filename(show_tracks_while_browsing ? 0 : pf_tracks.sel);
int attr;
enum {
@@ -4538,6 +4551,7 @@ static int pictureflow_main(const char* selected_file)
instant_update = true;
break;
case pf_cover_out:
+ show_tracks_while_browsing = false;
update_cover_out_animation();
render_all_slides();
instant_update = true;
@@ -4546,6 +4560,7 @@ static int pictureflow_main(const char* selected_file)
show_track_list();
break;
case pf_idle:
+ show_tracks_while_browsing = false;
render_all_slides();
if (aa_cache.inspected < pf_idx.album_ct)
{
@@ -4608,7 +4623,9 @@ static int pictureflow_main(const char* selected_file)
case PF_WPS:
return PLUGIN_GOTO_WPS;
case PF_BACK:
- if ( pf_state == pf_show_tracks )
+ if (show_tracks_while_browsing)
+ show_tracks_while_browsing = false;
+ else if (pf_state == pf_show_tracks)
{
pf_state = pf_cover_out;
free_borrowed_tracks();
@@ -4641,7 +4658,12 @@ static int pictureflow_main(const char* selected_file)
case PF_NEXT:
case PF_NEXT_REPEAT:
if ( pf_state == pf_show_tracks )
- select_next_track();
+ {
+ if (show_tracks_while_browsing)
+ select_next_album();
+ else
+ select_next_track();
+ }
else if (pf_state == pf_cover_in)
skip_animation_to_show_tracks();
else if (pf_state == pf_cover_out)
@@ -4654,7 +4676,12 @@ static int pictureflow_main(const char* selected_file)
case PF_PREV:
case PF_PREV_REPEAT:
if ( pf_state == pf_show_tracks )
- select_prev_track();
+ {
+ if (show_tracks_while_browsing)
+ select_prev_album();
+ else
+ select_prev_track();
+ }
else if (pf_state == pf_cover_in)
skip_animation_to_show_tracks();
else if (pf_state == pf_cover_out)
@@ -4743,16 +4770,19 @@ static int pictureflow_main(const char* selected_file)
reverse_animation();
else if (pf_state == pf_cover_in)
skip_animation_to_show_tracks();
+ else if (pf_state == pf_show_tracks)
+ {
+ if (show_tracks_while_browsing)
+ show_tracks_while_browsing = false;
#if PF_PLAYBACK_CAPABLE
- else if (pf_state == pf_show_tracks) {
- if(pf_cfg.auto_wps != 0) {
+ else if(pf_cfg.auto_wps != 0) {
if (start_playback(true))
return PLUGIN_GOTO_WPS;
}
else
start_playback(false);
- }
#endif
+ }
break;
default:
exit_on_usb(button);
diff --git a/manual/plugins/pictureflow.tex b/manual/plugins/pictureflow.tex
index c0b86e34da..2e4dcaca01 100644
--- a/manual/plugins/pictureflow.tex
+++ b/manual/plugins/pictureflow.tex
@@ -200,6 +200,7 @@ reduces the time it takes for cover art to be displayed.}}
\subsubsection{Main Menu}
\begin{description}
+ \item[Show Tracks While Browsing.] Scroll through albums from their track list.
\item[Go to WPS.] Leave PictureFlow and enter the While Playing Screen.
\item[Clear playlist] Removes all entries from the current playlist.
\item[Playback Control.] Control music playback from within the plugin.