Index: apps/plugins/pictureflow/pictureflow.c =================================================================== --- apps/plugins/pictureflow/pictureflow.c (Revision 21144) +++ apps/plugins/pictureflow/pictureflow.c (Arbeitskopie) @@ -45,6 +45,7 @@ #define PF_CONTEXT ACTION_STD_CONTEXT #define PF_BACK ACTION_STD_CANCEL #define PF_MENU ACTION_STD_MENU +#define PF_WPS ACTION_TREE_WPS #define PF_QUIT (LAST_ACTION_PLACEHOLDER + 1) const struct button_mapping pf_context_album_scroll[] = @@ -55,16 +56,16 @@ {PF_NEXT, BUTTON_MIDRIGHT, BUTTON_NONE}, {PF_NEXT_REPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE}, #endif -#if CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD || \ - CONFIG_KEYPAD == IAUDIO_X5M5_PAD || CONFIG_KEYPAD == GIGABEAT_PAD || \ - CONFIG_KEYPAD == GIGABEAT_S_PAD || CONFIG_KEYPAD == RECORDER_PAD || \ - CONFIG_KEYPAD == ARCHOS_AV300_PAD || CONFIG_KEYPAD == SANSA_C100_PAD || \ - CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD || \ - CONFIG_KEYPAD == SANSA_M200_PAD || CONFIG_KEYPAD == IRIVER_IFP7XX_PAD || \ - CONFIG_KEYPAD == MROBE100_PAD || CONFIG_KEYPAD == PHILIPS_SA9200_PAD || \ - CONFIG_KEYPAD == IAUDIO67_PAD || CONFIG_KEYPAD == CREATIVEZVM_PAD || \ +#if CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD || \ + CONFIG_KEYPAD == IAUDIO_X5M5_PAD || CONFIG_KEYPAD == GIGABEAT_PAD || \ + CONFIG_KEYPAD == GIGABEAT_S_PAD || CONFIG_KEYPAD == RECORDER_PAD || \ + CONFIG_KEYPAD == ARCHOS_AV300_PAD || CONFIG_KEYPAD == SANSA_C100_PAD || \ + CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD || \ + CONFIG_KEYPAD == SANSA_M200_PAD || CONFIG_KEYPAD == IRIVER_IFP7XX_PAD || \ + CONFIG_KEYPAD == MROBE100_PAD || CONFIG_KEYPAD == PHILIPS_SA9200_PAD || \ + CONFIG_KEYPAD == IAUDIO67_PAD || CONFIG_KEYPAD == CREATIVEZVM_PAD || \ CONFIG_KEYPAD == PHILIPS_HDD1630_PAD || CONFIG_KEYPAD == CREATIVEZV_PAD \ - || CONFIG_KEYPAD == LOGIK_DAX_PAD || CONFIG_KEYPAD == MEIZU_M6SL_PAD + || CONFIG_KEYPAD == LOGIK_DAX_PAD || CONFIG_KEYPAD == MEIZU_M6SL_PAD {PF_PREV, BUTTON_LEFT, BUTTON_NONE}, {PF_PREV_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, {PF_NEXT, BUTTON_RIGHT, BUTTON_NONE}, @@ -76,7 +77,7 @@ {PF_NEXT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, {PF_SELECT, BUTTON_UP|BUTTON_REL, BUTTON_UP}, {PF_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP}, - {ACTION_NONE, BUTTON_UP, BUTTON_NONE}, + {PF_GOTO_WPS, BUTTON_UP, BUTTON_NONE}, {ACTION_NONE, BUTTON_DOWN, BUTTON_NONE}, {ACTION_NONE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, {ACTION_NONE, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT}, @@ -107,6 +108,7 @@ CONFIG_KEYPAD == PHILIPS_SA9200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD {PF_QUIT, BUTTON_POWER, BUTTON_NONE}, #elif CONFIG_KEYPAD == SANSA_FUZE_PAD + {PF_WPS, BUTTON_UP, BUTTON_NONE}, {PF_QUIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, /* These all use short press of BUTTON_POWER for menu, map long POWER to quit */ @@ -119,11 +121,13 @@ #endif #elif CONFIG_KEYPAD == SANSA_E200_PAD {PF_QUIT, BUTTON_POWER, BUTTON_NONE}, + {PF_WPS, BUTTON_UP, BUTTON_NONE}, #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD {PF_QUIT, BUTTON_EQ, BUTTON_NONE}, #elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ || (CONFIG_KEYPAD == IPOD_3G_PAD) \ || (CONFIG_KEYPAD == IPOD_4G_PAD) + {PF_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU}, #elif CONFIG_KEYPAD == LOGIK_DAX_PAD {PF_QUIT, BUTTON_POWERPLAY|BUTTON_REPEAT, BUTTON_POWERPLAY}, @@ -141,10 +145,11 @@ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) #endif }; + const struct button_mapping *pf_contexts[] = { pf_context_album_scroll, - pf_context_buttons + pf_context_buttons, }; #if LCD_DEPTH < 8 @@ -685,7 +690,7 @@ static const struct button_mapping* get_context_map(int context) { - return pf_contexts[context & ~CONTEXT_CUSTOM]; + return pf_contexts[context & ~CONTEXT_CUSTOM2]; } /* Create the lookup table with the scaling values for the reflections */ @@ -2129,18 +2134,20 @@ #endif MENUITEM_STRINGLIST(main_menu,"PictureFlow Main Menu",NULL, - "Settings", "Return", "Quit"); + "Go to WPS", "Settings", "Return", "Quit"); while (1) { switch (rb->do_menu(&main_menu,&selection, NULL, false)) { case 0: + return -2; + case 1: result = settings_menu(); if ( result != 0 ) return result; break; - case 1: + case 2: return 0; - case 2: + case 3: return -1; case MENU_ATTACHED_USB: @@ -2598,13 +2605,15 @@ /*/ Handle buttons */ button = rb->get_custom_action(CONTEXT_CUSTOM| - (pf_state == pf_show_tracks ? 1 : 0), + (pf_state == pf_show_tracks ? 1 : 0 ), instant_update ? 0 : HZ/16, get_context_map); switch (button) { case PF_QUIT: return PLUGIN_OK; + case PF_WPS: + return PLUGIN_GOTO_WPS; case PF_BACK: if ( pf_state == pf_show_tracks ) @@ -2623,6 +2632,7 @@ grey_show(false); #endif ret = main_menu(); + if ( ret == -2 ) return PLUGIN_GOTO_WPS; if ( ret == -1 ) return PLUGIN_OK; if ( ret != 0 ) return ret; #ifdef USEGSLIB Index: apps/filetree.c =================================================================== --- apps/filetree.c (Revision 21144) +++ apps/filetree.c (Arbeitskopie) @@ -551,22 +551,31 @@ /* plugin file */ case FILE_ATTR_ROCK: + { + int ret; if (global_settings.party_mode && audio_status()) { splash(HZ, ID2P(LANG_PARTY_MODE)); break; } - - if (plugin_load(buf,NULL) == PLUGIN_USB_CONNECTED) + ret = plugin_load(buf,NULL); + switch (ret) { - if(*c->dirfilter > NUM_FILTER_MODES) - /* leave sub-browsers after usb, doing - otherwise might be confusing to the user */ - exit_func = true; - else - reload_dir = true; + case PLUGIN_USB_CONNECTED: + break; + case PLUGIN_GOTO_WPS: + play = true; + break; + default: + if(*c->dirfilter > NUM_FILTER_MODES) + /* leave sub-browsers after usb, doing + otherwise might be confusing to the user */ + exit_func = true; + else + reload_dir = true; + break; } break; - + } case FILE_ATTR_CUE: display_cuesheet_content(buf); break; @@ -583,8 +592,11 @@ plugin = filetype_get_plugin(file); if (plugin) { - if (plugin_load(plugin,buf) == PLUGIN_USB_CONNECTED) + int ret = plugin_load(plugin,buf); + if (ret == PLUGIN_USB_CONNECTED) reload_dir = true; + else if (ret == PLUGIN_GOTO_WPS) + play = true; } break; } Index: apps/plugin.c =================================================================== --- apps/plugin.c (Revision 21144) +++ apps/plugin.c (Arbeitskopie) @@ -644,6 +644,7 @@ appsversion, /* new stuff at the end, sort into place next time the API gets incompatible */ + #ifdef HAVE_TOUCHSCREEN action_get_touchscreen_press, @@ -823,19 +824,10 @@ sim_plugin_close(pd); - switch (rc) { - case PLUGIN_OK: - break; + if (rc == PLUGIN_ERROR) + splash(HZ*2, str(LANG_PLUGIN_ERROR)); - case PLUGIN_USB_CONNECTED: - return PLUGIN_USB_CONNECTED; - - default: - splash(HZ*2, str(LANG_PLUGIN_ERROR)); - break; - } - - return PLUGIN_OK; + return rc; } /* Returns a pointer to the portion of the plugin buffer that is not already Index: apps/plugin.h =================================================================== --- apps/plugin.h (Revision 21144) +++ apps/plugin.h (Arbeitskopie) @@ -139,6 +139,7 @@ enum plugin_status { PLUGIN_OK = 0, PLUGIN_USB_CONNECTED, + PLUGIN_GOTO_WPS, PLUGIN_ERROR = -1, }; Index: apps/tagtree.c =================================================================== --- apps/tagtree.c (Revision 21144) +++ apps/tagtree.c (Arbeitskopie) @@ -51,6 +51,11 @@ #include "storage.h" #include "dir_uncached.h" +#ifdef HAVE_LCD_BITMAP +#include "plugin.h" /* to plugin_load() pictureflow */ +#endif + + #define FILE_SEARCH_INSTRUCTIONS ROCKBOX_DIR "/tagnavi.config" static int tagtree_play_folder(struct tree_context* c); @@ -62,6 +67,9 @@ NAVIBROWSE, ALLSUBENTRIES, PLAYTRACK, +#ifdef HAVE_LCD_BITMAP + PICTUREFLOW, +#endif }; static const struct id3_to_search_mapping { @@ -1159,6 +1167,16 @@ dptr++; current_entry_count++; } +#ifdef HAVE_LCD_BITMAP + if (offset <= 2 && tag == tag_album) + { + dptr->newtable = PICTUREFLOW; + dptr->name = ""; + dptr++; + current_entry_count++; + special_entry_count++; + } +#endif special_entry_count+=2; } @@ -1358,7 +1376,9 @@ case ROOT: count = load_root(c); break; - +#ifdef HAVE_LCD_BITMAP + case PICTUREFLOW: +#endif case ALLSUBENTRIES: case NAVIBROWSE: logf("navibrowse..."); @@ -1408,6 +1428,23 @@ } newextra = dptr->newtable; +#ifdef HAVE_LCD_BITMAP + /* Start pictureflow, and return as we're leaving the db browser + * and also we still want to be in the album node after exiting + */ + if (newextra == PICTUREFLOW) + { + int retval = plugin_load(PLUGIN_DEMOS_DIR "/pictureflow.rock", NULL); + switch(retval) + { + case PLUGIN_GOTO_WPS: + return 2; + default: + return 0; + } + } +#endif + if (c->dirlevel >= MAX_DIR_LEVELS) return 0;