diff options
Diffstat (limited to 'apps/menus/plugin_menu.c')
-rw-r--r-- | apps/menus/plugin_menu.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/apps/menus/plugin_menu.c b/apps/menus/plugin_menu.c index 055cfce140..7f29e61af4 100644 --- a/apps/menus/plugin_menu.c +++ b/apps/menus/plugin_menu.c | |||
@@ -24,11 +24,12 @@ | |||
24 | #include "config.h" | 24 | #include "config.h" |
25 | #include "lang.h" | 25 | #include "lang.h" |
26 | #include "menu.h" | 26 | #include "menu.h" |
27 | #include "action.h" | ||
27 | #include "settings.h" | 28 | #include "settings.h" |
28 | #include "rbpaths.h" | 29 | #include "rbpaths.h" |
29 | #include "root_menu.h" | 30 | #include "root_menu.h" |
30 | #include "tree.h" | 31 | #include "tree.h" |
31 | 32 | static int reenter = 0; | |
32 | 33 | ||
33 | enum { | 34 | enum { |
34 | GAMES, | 35 | GAMES, |
@@ -53,13 +54,36 @@ static int plugins_menu(void* param) | |||
53 | 54 | ||
54 | browse_context_init(&browse, SHOW_PLUGINS, 0, str(items[item].id), | 55 | browse_context_init(&browse, SHOW_PLUGINS, 0, str(items[item].id), |
55 | Icon_Plugin, items[item].path, NULL); | 56 | Icon_Plugin, items[item].path, NULL); |
56 | 57 | ||
57 | ret = rockbox_browse(&browse); | 58 | ret = rockbox_browse(&browse); |
59 | |||
58 | if (ret == GO_TO_PREVIOUS) | 60 | if (ret == GO_TO_PREVIOUS) |
59 | return 0; | 61 | return 0; |
62 | if (ret == GO_TO_PLUGIN) | ||
63 | reenter = 1; | ||
60 | return ret; | 64 | return ret; |
61 | } | 65 | } |
62 | 66 | ||
67 | static int menu_callback(int action, | ||
68 | const struct menu_item_ex *this_item, | ||
69 | struct gui_synclist *this_list) | ||
70 | { | ||
71 | (void)this_item; | ||
72 | static int selected = 0; | ||
73 | |||
74 | if (action == ACTION_ENTER_MENUITEM) | ||
75 | { | ||
76 | this_list->selected_item = selected; | ||
77 | if (reenter-- > 0) | ||
78 | action = ACTION_STD_OK; | ||
79 | } | ||
80 | else if (action == ACTION_STD_OK) | ||
81 | { | ||
82 | selected = gui_synclist_get_sel_pos(this_list); | ||
83 | } | ||
84 | return action; | ||
85 | } | ||
86 | |||
63 | #define ITEM_FLAG (MENU_FUNC_USEPARAM|MENU_FUNC_CHECK_RETVAL) | 87 | #define ITEM_FLAG (MENU_FUNC_USEPARAM|MENU_FUNC_CHECK_RETVAL) |
64 | 88 | ||
65 | MENUITEM_FUNCTION(games_item, ITEM_FLAG, ID2P(LANG_PLUGIN_GAMES), | 89 | MENUITEM_FUNCTION(games_item, ITEM_FLAG, ID2P(LANG_PLUGIN_GAMES), |
@@ -69,6 +93,6 @@ MENUITEM_FUNCTION(apps_item, ITEM_FLAG, ID2P(LANG_PLUGIN_APPS), | |||
69 | MENUITEM_FUNCTION(demos_item, ITEM_FLAG, ID2P(LANG_PLUGIN_DEMOS), | 93 | MENUITEM_FUNCTION(demos_item, ITEM_FLAG, ID2P(LANG_PLUGIN_DEMOS), |
70 | plugins_menu, (void*)DEMOS, NULL, Icon_Folder); | 94 | plugins_menu, (void*)DEMOS, NULL, Icon_Folder); |
71 | 95 | ||
72 | MAKE_MENU(plugin_menu, ID2P(LANG_PLUGINS), NULL, | 96 | MAKE_MENU(plugin_menu, ID2P(LANG_PLUGINS), &menu_callback, |
73 | Icon_Plugin, | 97 | Icon_Plugin, |
74 | &games_item, &apps_item, &demos_item); | 98 | &games_item, &apps_item, &demos_item); |