summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-06-09 04:25:41 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-06-09 04:25:41 +0000
commitd871ff8cce9afe8437f7b51f4cd853018abd9924 (patch)
tree58f4372df6559179a790d499075972a6ce70dc71
parent159612829648740f4b64accb9794c091b01bca58 (diff)
downloadrockbox-d871ff8cce9afe8437f7b51f4cd853018abd9924.tar.gz
rockbox-d871ff8cce9afe8437f7b51f4cd853018abd9924.zip
FS#11270 by Chris Savery - WPS integration for pictureflow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26710 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/wps.c2
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/onplay.c18
-rw-r--r--apps/onplay.h2
-rw-r--r--apps/plugins/pictureflow/pictureflow.c91
-rw-r--r--apps/root_menu.c31
-rw-r--r--apps/root_menu.h1
-rw-r--r--apps/settings_list.c23
8 files changed, 157 insertions, 25 deletions
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index fa97e50897..1fa159ec0f 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -841,6 +841,8 @@ long gui_wps_show(void)
841 return GO_TO_ROOT; 841 return GO_TO_ROOT;
842 else if (retval == ONPLAY_PLAYLIST) 842 else if (retval == ONPLAY_PLAYLIST)
843 return GO_TO_PLAYLIST_VIEWER; 843 return GO_TO_PLAYLIST_VIEWER;
844 else if (retval == ONPLAY_PICTUREFLOW)
845 return GO_TO_PICTUREFLOW;
844 restore = true; 846 restore = true;
845 } 847 }
846 break; 848 break;
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 4527c4aa45..49ce9b25a1 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12540,3 +12540,17 @@
12540 *: "Force" 12540 *: "Force"
12541 </voice> 12541 </voice>
12542</phrase> 12542</phrase>
12543<phrase>
12544 id: LANG_ONPLAY_PICTUREFLOW
12545 desc: Onplay pictureflow
12546 user: core
12547 <source>
12548 *: "PictureFlow"
12549 </source>
12550 <dest>
12551 *: "PictureFlow"
12552 </dest>
12553 <voice>
12554 *: "open picture flow"
12555 </voice>
12556</phrase>
diff --git a/apps/onplay.c b/apps/onplay.c
index 556da1cde2..e27a7a35a9 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -929,6 +929,8 @@ static int ratingitem_callback(int action,const struct menu_item_ex *this_item)
929MENUITEM_FUNCTION(rating_item, 0, ID2P(LANG_MENU_SET_RATING), 929MENUITEM_FUNCTION(rating_item, 0, ID2P(LANG_MENU_SET_RATING),
930 set_rating_inline, NULL, 930 set_rating_inline, NULL,
931 ratingitem_callback, Icon_Questionmark); 931 ratingitem_callback, Icon_Questionmark);
932MENUITEM_RETURNVALUE(pictureflow_item, ID2P(LANG_ONPLAY_PICTUREFLOW),
933 GO_TO_PICTUREFLOW, NULL, Icon_NOICON);
932#endif 934#endif
933 935
934static bool view_cue(void) 936static bool view_cue(void)
@@ -1131,7 +1133,11 @@ MAKE_ONPLAYMENU( wps_onplay_menu, ID2P(LANG_ONPLAY_MENU_TITLE),
1131#ifdef HAVE_TAGCACHE 1133#ifdef HAVE_TAGCACHE
1132 &rating_item, 1134 &rating_item,
1133#endif 1135#endif
1134 &bookmark_menu, &browse_id3_item, &list_viewers_item, 1136 &bookmark_menu,
1137#ifdef HAVE_TAGCACHE
1138 &pictureflow_item,
1139#endif
1140 &browse_id3_item, &list_viewers_item,
1135 &delete_file_item, &view_cue_item, 1141 &delete_file_item, &view_cue_item,
1136#ifdef HAVE_PITCHSCREEN 1142#ifdef HAVE_PITCHSCREEN
1137 &pitch_screen_item, 1143 &pitch_screen_item,
@@ -1244,6 +1250,11 @@ static struct hotkey_assignment hotkey_items[] = {
1244 { HOTKEY_INSERT_SHUFFLED, LANG_INSERT_SHUFFLED, 1250 { HOTKEY_INSERT_SHUFFLED, LANG_INSERT_SHUFFLED,
1245 HOTKEY_FUNC(playlist_insert_shuffled, NULL), 1251 HOTKEY_FUNC(playlist_insert_shuffled, NULL),
1246 ONPLAY_OK }, 1252 ONPLAY_OK },
1253#ifdef HAVE_TAGCACHE
1254 { HOTKEY_PICTUREFLOW, LANG_ONPLAY_PICTUREFLOW,
1255 HOTKEY_FUNC(NULL, NULL),
1256 ONPLAY_PICTUREFLOW },
1257#endif
1247}; 1258};
1248 1259
1249/* Return the language ID for this action */ 1260/* Return the language ID for this action */
@@ -1316,6 +1327,7 @@ int onplay(char* file, int attr, int from, bool hotkey)
1316 else 1327 else
1317 menu = &tree_onplay_menu; 1328 menu = &tree_onplay_menu;
1318 menu_selection = do_menu(menu, NULL, NULL, false); 1329 menu_selection = do_menu(menu, NULL, NULL, false);
1330
1319 switch (menu_selection) 1331 switch (menu_selection)
1320 { 1332 {
1321 case GO_TO_WPS: 1333 case GO_TO_WPS:
@@ -1325,6 +1337,10 @@ int onplay(char* file, int attr, int from, bool hotkey)
1325 return ONPLAY_MAINMENU; 1337 return ONPLAY_MAINMENU;
1326 case GO_TO_PLAYLIST_VIEWER: 1338 case GO_TO_PLAYLIST_VIEWER:
1327 return ONPLAY_PLAYLIST; 1339 return ONPLAY_PLAYLIST;
1340#ifdef HAVE_TAGCACHE
1341 case GO_TO_PICTUREFLOW:
1342 return ONPLAY_PICTUREFLOW;
1343#endif
1328 default: 1344 default:
1329 return onplay_result; 1345 return onplay_result;
1330 } 1346 }
diff --git a/apps/onplay.h b/apps/onplay.h
index 8462603bcc..b129296a7b 100644
--- a/apps/onplay.h
+++ b/apps/onplay.h
@@ -29,6 +29,7 @@ enum {
29 ONPLAY_RELOAD_DIR, 29 ONPLAY_RELOAD_DIR,
30 ONPLAY_START_PLAY, 30 ONPLAY_START_PLAY,
31 ONPLAY_PLAYLIST, 31 ONPLAY_PLAYLIST,
32 ONPLAY_PICTUREFLOW,
32}; 33};
33 34
34#ifdef HAVE_HOTKEY 35#ifdef HAVE_HOTKEY
@@ -43,6 +44,7 @@ enum hotkey_action {
43 HOTKEY_DELETE, 44 HOTKEY_DELETE,
44 HOTKEY_INSERT, 45 HOTKEY_INSERT,
45 HOTKEY_INSERT_SHUFFLED, 46 HOTKEY_INSERT_SHUFFLED,
47 HOTKEY_PICTUREFLOW,
46}; 48};
47#endif 49#endif
48 50
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index 155b495ebf..3a150d10c0 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -58,6 +58,7 @@ PLUGIN_HEADER
58#define PF_WPS ACTION_TREE_WPS 58#define PF_WPS ACTION_TREE_WPS
59 59
60#define PF_QUIT (LAST_ACTION_PLACEHOLDER + 1) 60#define PF_QUIT (LAST_ACTION_PLACEHOLDER + 1)
61#define PF_TRACKLIST (LAST_ACTION_PLACEHOLDER + 2)
61 62
62#if defined(HAVE_SCROLLWHEEL) || CONFIG_KEYPAD == IRIVER_H10_PAD || \ 63#if defined(HAVE_SCROLLWHEEL) || CONFIG_KEYPAD == IRIVER_H10_PAD || \
63 CONFIG_KEYPAD == SAMSUNG_YH_PAD 64 CONFIG_KEYPAD == SAMSUNG_YH_PAD
@@ -120,6 +121,7 @@ const struct button_mapping pf_context_buttons[] =
120 {PF_QUIT, BUTTON_POWER, BUTTON_NONE}, 121 {PF_QUIT, BUTTON_POWER, BUTTON_NONE},
121#elif CONFIG_KEYPAD == SANSA_FUZE_PAD 122#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
122 {PF_QUIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, 123 {PF_QUIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE},
124 {PF_TRACKLIST, BUTTON_RIGHT, BUTTON_NONE},
123/* These all use short press of BUTTON_POWER for menu, map long POWER to quit 125/* These all use short press of BUTTON_POWER for menu, map long POWER to quit
124*/ 126*/
125#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_M200_PAD || \ 127#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_M200_PAD || \
@@ -311,6 +313,8 @@ static int center_margin = (LCD_WIDTH - DISPLAY_WIDTH) / 12;
311static int num_slides = 4; 313static int num_slides = 4;
312static int zoom = 100; 314static int zoom = 100;
313static bool show_fps = false; 315static bool show_fps = false;
316static int auto_wps = 0;
317static int last_album = 0;
314static bool resize = true; 318static bool resize = true;
315static int cache_version = 0; 319static int cache_version = 0;
316static int show_album_name = (LCD_HEIGHT > 100) 320static int show_album_name = (LCD_HEIGHT > 100)
@@ -328,8 +332,10 @@ static struct configdata config[] =
328 { TYPE_BOOL, 0, 1, { .bool_p = &show_fps }, "show fps", NULL }, 332 { TYPE_BOOL, 0, 1, { .bool_p = &show_fps }, "show fps", NULL },
329 { TYPE_BOOL, 0, 1, { .bool_p = &resize }, "resize", NULL }, 333 { TYPE_BOOL, 0, 1, { .bool_p = &resize }, "resize", NULL },
330 { TYPE_INT, 0, 100, { .int_p = &cache_version }, "cache version", NULL }, 334 { TYPE_INT, 0, 100, { .int_p = &cache_version }, "cache version", NULL },
331 { TYPE_ENUM, 0, 2, { .int_p = &show_album_name }, "show album name", 335 { TYPE_ENUM, 0, 3, { .int_p = &show_album_name }, "show album name",
332 show_album_name_conf } 336 show_album_name_conf },
337 { TYPE_INT, 0, 2, { .int_p = &auto_wps }, "auto wps", NULL },
338 { TYPE_INT, 0, 999999, { .int_p = &last_album }, "last album", NULL }
333}; 339};
334 340
335#define CONFIG_NUM_ITEMS (sizeof(config) / sizeof(struct configdata)) 341#define CONFIG_NUM_ITEMS (sizeof(config) / sizeof(struct configdata))
@@ -782,6 +788,18 @@ char* get_track_filename(const int track_index)
782 return track_names + tracks[track_index].filename_idx; 788 return track_names + tracks[track_index].filename_idx;
783 return 0; 789 return 0;
784} 790}
791
792int get_wps_current_index(void)
793{
794 struct mp3entry *id3 = rb->audio_current_track();
795 if(id3 && id3->album) {
796 int i;
797 for( i=0; i < album_count; i++ )
798 if(!rb->strcmp(album_names + album[i].name_idx, id3->album))
799 return i;
800 }
801 return last_album;
802}
785#endif 803#endif
786/** 804/**
787 Compare two unsigned ints passed via pointers. 805 Compare two unsigned ints passed via pointers.
@@ -2071,13 +2089,19 @@ int settings_menu(void)
2071 2089
2072 MENUITEM_STRINGLIST(settings_menu, "PictureFlow Settings", NULL, "Show FPS", 2090 MENUITEM_STRINGLIST(settings_menu, "PictureFlow Settings", NULL, "Show FPS",
2073 "Spacing", "Centre margin", "Number of slides", "Zoom", 2091 "Spacing", "Centre margin", "Number of slides", "Zoom",
2074 "Show album title", "Resize Covers", "Rebuild cache"); 2092 "Show album title", "Resize Covers", "Rebuild cache",
2093 "WPS Integration");
2075 2094
2076 static const struct opt_items album_name_options[] = { 2095 static const struct opt_items album_name_options[] = {
2077 { "Hide album title", -1 }, 2096 { "Hide album title", -1 },
2078 { "Show at the bottom", -1 }, 2097 { "Show at the bottom", -1 },
2079 { "Show at the top", -1 } 2098 { "Show at the top", -1 }
2080 }; 2099 };
2100 static const struct opt_items wps_options[] = {
2101 { "Off", -1 },
2102 { "Direct", -1 },
2103 { "Via Track list", -1 }
2104 };
2081 2105
2082 do { 2106 do {
2083 selection=rb->do_menu(&settings_menu,&selection, NULL, true); 2107 selection=rb->do_menu(&settings_menu,&selection, NULL, true);
@@ -2134,6 +2158,9 @@ int settings_menu(void)
2134 rb->remove(EMPTY_SLIDE); 2158 rb->remove(EMPTY_SLIDE);
2135 rb->splash(HZ, "Cache will be rebuilt on next restart"); 2159 rb->splash(HZ, "Cache will be rebuilt on next restart");
2136 break; 2160 break;
2161 case 8:
2162 rb->set_option("WPS Integration", &auto_wps, INT, wps_options, 3, NULL);
2163 break;
2137 2164
2138 case MENU_ATTACHED_USB: 2165 case MENU_ATTACHED_USB:
2139 return PLUGIN_USB_CONNECTED; 2166 return PLUGIN_USB_CONNECTED;
@@ -2373,7 +2400,7 @@ void select_prev_track(void)
2373/* 2400/*
2374 * Puts the current tracklist into a newly created playlist and starts playling 2401 * Puts the current tracklist into a newly created playlist and starts playling
2375 */ 2402 */
2376void start_playback(void) 2403void start_playback(bool append)
2377{ 2404{
2378 static int old_playlist = -1, old_shuffle = 0; 2405 static int old_playlist = -1, old_shuffle = 0;
2379 int count = 0; 2406 int count = 0;
@@ -2382,14 +2409,14 @@ void start_playback(void)
2382 /* reuse existing playlist if possible 2409 /* reuse existing playlist if possible
2383 * regenerate if shuffle is on or changed, since playlist index and 2410 * regenerate if shuffle is on or changed, since playlist index and
2384 * selected track are "out of sync" */ 2411 * selected track are "out of sync" */
2385 if (!shuffle && center_slide.slide_index == old_playlist 2412 if (!shuffle && !append && center_slide.slide_index == old_playlist
2386 && (old_shuffle == shuffle)) 2413 && (old_shuffle == shuffle))
2387 { 2414 {
2388 goto play; 2415 goto play;
2389 } 2416 }
2390 /* First, replace the current playlist with a new one */ 2417 /* First, replace the current playlist with a new one */
2391 else if (rb->playlist_remove_all_tracks(NULL) == 0 2418 else if (append || (rb->playlist_remove_all_tracks(NULL) == 0
2392 && rb->playlist_create(NULL, NULL) == 0) 2419 && rb->playlist_create(NULL, NULL) == 0))
2393 { 2420 {
2394 do { 2421 do {
2395 rb->yield(); 2422 rb->yield();
@@ -2408,7 +2435,8 @@ play:
2408 /* TODO: can we adjust selected_track if !play_selected ? 2435 /* TODO: can we adjust selected_track if !play_selected ?
2409 * if shuffle, we can't predict the playing track easily, and for either 2436 * if shuffle, we can't predict the playing track easily, and for either
2410 * case the track list doesn't get auto scrolled*/ 2437 * case the track list doesn't get auto scrolled*/
2411 rb->playlist_start(position, 0); 2438 if(!append)
2439 rb->playlist_start(position, 0);
2412 old_playlist = center_slide.slide_index; 2440 old_playlist = center_slide.slide_index;
2413 old_shuffle = shuffle; 2441 old_shuffle = shuffle;
2414} 2442}
@@ -2493,7 +2521,6 @@ int main(void)
2493 int ret; 2521 int ret;
2494 2522
2495 rb->lcd_setfont(FONT_UI); 2523 rb->lcd_setfont(FONT_UI);
2496 draw_splashscreen();
2497 2524
2498 if ( ! rb->dir_exists( CACHE_PREFIX ) ) { 2525 if ( ! rb->dir_exists( CACHE_PREFIX ) ) {
2499 if ( rb->mkdir( CACHE_PREFIX ) < 0 ) { 2526 if ( rb->mkdir( CACHE_PREFIX ) < 0 ) {
@@ -2502,7 +2529,9 @@ int main(void)
2502 } 2529 }
2503 } 2530 }
2504 2531
2505 configfile_load(CONFIG_FILE, config, CONFIG_NUM_ITEMS, CONFIG_VERSION); 2532 configfile_load(CONFIG_FILE, config, CONFIG_NUM_ITEMS, CONFIG_VERSION);
2533 if(auto_wps == 0)
2534 draw_splashscreen();
2506 2535
2507 init_reflect_table(); 2536 init_reflect_table();
2508 2537
@@ -2581,6 +2610,7 @@ int main(void)
2581 2610
2582 recalc_offsets(); 2611 recalc_offsets();
2583 reset_slides(); 2612 reset_slides();
2613 set_current_slide(get_wps_current_index());
2584 2614
2585 char fpstxt[10]; 2615 char fpstxt[10];
2586 int button; 2616 int button;
@@ -2713,13 +2743,48 @@ int main(void)
2713 show_previous_slide(); 2743 show_previous_slide();
2714 break; 2744 break;
2715 2745
2746 case PF_CONTEXT:
2747 if ( auto_wps != 0 ) {
2748 if( pf_state == pf_idle ) {
2749 create_track_index(center_slide.slide_index);
2750 reset_track_list();
2751 start_playback(true);
2752 rb->splash(HZ*2, "Added to playlist");
2753 }
2754 else if( pf_state == pf_show_tracks ) {
2755 rb->playlist_insert_track(NULL, get_track_filename(selected_track),
2756 PLAYLIST_INSERT_LAST, false, true);
2757 rb->playlist_sync(NULL);
2758 rb->splash(HZ*2, "Added to playlist");
2759 }
2760 }
2761 break;
2762 case PF_TRACKLIST:
2763 if ( auto_wps == 1 && pf_state == pf_idle ) {
2764 pf_state = pf_cover_in;
2765 break;
2766 }
2716 case PF_SELECT: 2767 case PF_SELECT:
2717 if ( pf_state == pf_idle ) { 2768 if ( pf_state == pf_idle ) {
2718 pf_state = pf_cover_in; 2769#if PF_PLAYBACK_CAPABLE
2770 if(auto_wps == 1) {
2771 create_track_index(center_slide.slide_index);
2772 reset_track_list();
2773 start_playback(false);
2774 last_album = center_index;
2775 return PLUGIN_GOTO_WPS;
2776 }
2777 else
2778#endif
2779 pf_state = pf_cover_in;
2719 } 2780 }
2720 else if ( pf_state == pf_show_tracks ) { 2781 else if ( pf_state == pf_show_tracks ) {
2721#if PF_PLAYBACK_CAPABLE 2782#if PF_PLAYBACK_CAPABLE
2722 start_playback(); 2783 start_playback(false);
2784 if(auto_wps != 0) {
2785 last_album = center_index;
2786 return PLUGIN_GOTO_WPS;
2787 }
2723#endif 2788#endif
2724 } 2789 }
2725 break; 2790 break;
@@ -2759,7 +2824,7 @@ enum plugin_status plugin_start(const void *parameter)
2759#endif 2824#endif
2760#endif 2825#endif
2761 ret = main(); 2826 ret = main();
2762 if ( ret == PLUGIN_OK ) { 2827 if ( ret == PLUGIN_OK || ret == PLUGIN_GOTO_WPS) {
2763 if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS, 2828 if (configfile_save(CONFIG_FILE, config, CONFIG_NUM_ITEMS,
2764 CONFIG_VERSION)) 2829 CONFIG_VERSION))
2765 { 2830 {
diff --git a/apps/root_menu.c b/apps/root_menu.c
index dab70f52c7..d1a05a0c13 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -68,6 +68,7 @@
68#include "tagcache.h" 68#include "tagcache.h"
69#endif 69#endif
70#include "language.h" 70#include "language.h"
71#include "plugin.h"
71 72
72struct root_items { 73struct root_items {
73 int (*function)(void* param); 74 int (*function)(void* param);
@@ -544,6 +545,24 @@ static int load_context_screen(int selection)
544 return GO_TO_PREVIOUS; 545 return GO_TO_PREVIOUS;
545} 546}
546 547
548#ifdef HAVE_TAGCACHE
549static int load_plugin_screen(char *plug_path)
550{
551 int ret_val;
552 int old_previous = last_screen;
553 last_screen = next_screen;
554 global_status.last_screen = (char)next_screen;
555 status_save();
556
557 ret_val = plugin_load(plug_path, NULL);
558 if (ret_val == PLUGIN_OK)
559 ret_val = GO_TO_PREVIOUS;
560 if (ret_val == GO_TO_PREVIOUS)
561 last_screen = (old_previous == next_screen) ? GO_TO_ROOT : old_previous;
562 return ret_val;
563}
564#endif
565
547static int previous_music = GO_TO_WPS; 566static int previous_music = GO_TO_WPS;
548 567
549void previous_music_is_wps(void) 568void previous_music_is_wps(void)
@@ -619,6 +638,18 @@ void root_menu(void)
619 case GO_TO_ROOTITEM_CONTEXT: 638 case GO_TO_ROOTITEM_CONTEXT:
620 next_screen = load_context_screen(selected); 639 next_screen = load_context_screen(selected);
621 break; 640 break;
641#ifdef HAVE_TAGCACHE
642 case GO_TO_PICTUREFLOW:
643 while ( !tagcache_is_usable() )
644 {
645 splash(0, str(LANG_TAGCACHE_BUSY));
646 if ( action_userabort(HZ/5) )
647 break;
648 }
649 next_screen = load_plugin_screen(PLUGIN_DEMOS_DIR "/pictureflow.rock");
650 previous_browser = GO_TO_PICTUREFLOW;
651 break;
652#endif
622 default: 653 default:
623 if (next_screen == GO_TO_FILEBROWSER 654 if (next_screen == GO_TO_FILEBROWSER
624#ifdef HAVE_TAGCACHE 655#ifdef HAVE_TAGCACHE
diff --git a/apps/root_menu.h b/apps/root_menu.h
index 4113b64495..9674a73f50 100644
--- a/apps/root_menu.h
+++ b/apps/root_menu.h
@@ -47,6 +47,7 @@ enum {
47 GO_TO_FM, 47 GO_TO_FM,
48#endif 48#endif
49 GO_TO_RECENTBMARKS, 49 GO_TO_RECENTBMARKS,
50 GO_TO_PICTUREFLOW,
50 /* Do Not add any items above here unless you want it to be able to 51 /* Do Not add any items above here unless you want it to be able to
51 be the "start screen" after a boot up. The setting in settings_list.c 52 be the "start screen" after a boot up. The setting in settings_list.c
52 will need editing if this is the case. */ 53 will need editing if this is the case. */
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 55cefd9bb7..56107e7b04 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1572,22 +1572,22 @@ const struct settings_list settings[] = {
1572#if CONFIG_TUNER 1572#if CONFIG_TUNER
1573 "radio," 1573 "radio,"
1574#endif 1574#endif
1575 "bookmarks" ,NULL, 1575 "bookmarks,pictureflow", NULL,
1576#if defined(HAVE_TAGCACHE) 1576#if defined(HAVE_TAGCACHE)
1577 #if defined(HAVE_RECORDING) && CONFIG_TUNER 1577 #if defined(HAVE_RECORDING) && CONFIG_TUNER
1578 9, 1578 10,
1579 #elif defined(HAVE_RECORDING) || CONFIG_TUNER /* only one of them */ 1579 #elif defined(HAVE_RECORDING) || CONFIG_TUNER /* only one of them */
1580 8, 1580 9,
1581 #else 1581 #else
1582 7, 1582 8,
1583 #endif 1583 #endif
1584#else 1584#else
1585 #if defined(HAVE_RECORDING) && CONFIG_TUNER 1585 #if defined(HAVE_RECORDING) && CONFIG_TUNER
1586 8, 1586 9,
1587 #elif defined(HAVE_RECORDING) || CONFIG_TUNER /* only one of them */ 1587 #elif defined(HAVE_RECORDING) || CONFIG_TUNER /* only one of them */
1588 7, 1588 8,
1589 #else 1589 #else
1590 6, 1590 7,
1591 #endif 1591 #endif
1592#endif 1592#endif
1593 ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU), 1593 ID2P(LANG_PREVIOUS_SCREEN), ID2P(LANG_MAIN_MENU),
@@ -1602,7 +1602,8 @@ const struct settings_list settings[] = {
1602#if CONFIG_TUNER 1602#if CONFIG_TUNER
1603 ID2P(LANG_FM_RADIO), 1603 ID2P(LANG_FM_RADIO),
1604#endif 1604#endif
1605 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS) 1605 ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS),
1606 ID2P(LANG_ONPLAY_PICTUREFLOW)
1606 ), 1607 ),
1607 SYSTEM_SETTING(NVRAM(1),last_screen,-1), 1608 SYSTEM_SETTING(NVRAM(1),last_screen,-1),
1608#if defined(HAVE_RTC_ALARM) && \ 1609#if defined(HAVE_RTC_ALARM) && \
@@ -1746,10 +1747,10 @@ const struct settings_list settings[] = {
1746#ifdef HAVE_HOTKEY 1747#ifdef HAVE_HOTKEY
1747 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_wps, 1748 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_wps,
1748 LANG_HOTKEY_WPS, HOTKEY_VIEW_PLAYLIST, "hotkey wps", 1749 LANG_HOTKEY_WPS, HOTKEY_VIEW_PLAYLIST, "hotkey wps",
1749 "off,view playlist,show track info,pitchscreen,open with,delete", 1750 "off,view playlist,show track info,pitchscreen,open with,delete,pictureflow",
1750 UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 6, HOTKEY_OFF, 1751 UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 7, HOTKEY_OFF,
1751 HOTKEY_VIEW_PLAYLIST, HOTKEY_SHOW_TRACK_INFO, HOTKEY_PITCHSCREEN, 1752 HOTKEY_VIEW_PLAYLIST, HOTKEY_SHOW_TRACK_INFO, HOTKEY_PITCHSCREEN,
1752 HOTKEY_OPEN_WITH, HOTKEY_DELETE), 1753 HOTKEY_OPEN_WITH, HOTKEY_DELETE, HOTKEY_PICTUREFLOW),
1753 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree, 1754 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree,
1754 LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree", 1755 LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree",
1755 "off,open with,delete,insert,insert shuffled", 1756 "off,open with,delete,insert,insert shuffled",