summaryrefslogtreecommitdiff
path: root/apps/menus/plugin_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menus/plugin_menu.c')
-rw-r--r--apps/menus/plugin_menu.c30
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 32static int reenter = 0;
32 33
33enum { 34enum {
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
67static 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
65MENUITEM_FUNCTION(games_item, ITEM_FLAG, ID2P(LANG_PLUGIN_GAMES), 89MENUITEM_FUNCTION(games_item, ITEM_FLAG, ID2P(LANG_PLUGIN_GAMES),
@@ -69,6 +93,6 @@ MENUITEM_FUNCTION(apps_item, ITEM_FLAG, ID2P(LANG_PLUGIN_APPS),
69MENUITEM_FUNCTION(demos_item, ITEM_FLAG, ID2P(LANG_PLUGIN_DEMOS), 93MENUITEM_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
72MAKE_MENU(plugin_menu, ID2P(LANG_PLUGINS), NULL, 96MAKE_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);