summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-05-20 08:26:27 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-05-20 08:26:27 +0000
commitb85817a5ba0ffe3bab748d1623799d407bd36731 (patch)
tree95eaeee7337596aced6c552e3210cc3d758bbd2b /apps
parent1062a17992d50cc362a0b7662bae75342fb69037 (diff)
downloadrockbox-b85817a5ba0ffe3bab748d1623799d407bd36731.tar.gz
rockbox-b85817a5ba0ffe3bab748d1623799d407bd36731.zip
Update some comments in menu.h to be hopefully more helpful.
Fix all the wrong usage of rb->do_menu() (my fault, sorry) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13439 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/menu.h26
-rw-r--r--apps/plugins/chessbox/chessbox.c3
-rw-r--r--apps/plugins/chopper.c3
-rw-r--r--apps/plugins/dice.c3
-rw-r--r--apps/plugins/disktidy.c3
-rw-r--r--apps/plugins/minesweeper.c3
-rw-r--r--apps/plugins/snake.c3
-rw-r--r--apps/plugins/star.c3
-rw-r--r--apps/plugins/test_codec.c4
-rw-r--r--apps/plugins/wavrecord.c5
-rw-r--r--apps/plugins/wormlet.c4
11 files changed, 34 insertions, 26 deletions
diff --git a/apps/menu.h b/apps/menu.h
index 7b26bbc90c..0c1000ab2f 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -98,9 +98,26 @@ struct menu_item_ex {
typedef int (*menu_callback_type)(int action,
const struct menu_item_ex *this_item);
-int do_menu(const struct menu_item_ex *menu, int *start_selected);
bool do_setting_from_menu(const struct menu_item_ex *temp);
+/*
+ int do_menu(const struct menu_item_ex *menu, int *start_selected)
+
+ Return value - usually one of the GO_TO_* values from root_menu.h,
+ however, some of the following defines can cause this to
+ return a different value.
+
+ *menu - The menu to run, can be a pointer to a MAKE_MENU() variable,
+ MENUITEM_STRINGLIST() or MENUITEM_RETURNVALUE() variable.
+
+ *start_selected - the item to select when the menu is first run.
+ When do_menu() returns, this will be set to the
+ index of the selected item at the time of the exit.
+ This is always set, even if the menu was cancelled.
+ If NULL it is ignored and the firs item starts selected
+*/
+int do_menu(const struct menu_item_ex *menu, int *start_selected);
+
/* In all the following macros the argument names are as follows:
- name: The name for the variable (so it can be used in a MAKE_MENU()
- str: the string to display for this menu item. use ID2P() for LANG_* id's
@@ -126,8 +143,9 @@ bool do_setting_from_menu(const struct menu_item_ex *temp);
{.callback_and_desc = & name##__}};
/* Use this To create a list of Strings (or ID2P()'s )
- When the user enters this list and selects one, the menu will exits
- and its return value will be the index of the chosen item */
+ When the user enters this list and selects one, the menu will exit
+ and do_menu() will return value the index of the chosen item.
+ if the user cancels, GO_TO_PREVIOUS will be returned */
#define MENUITEM_STRINGLIST(name, str, callback, ... ) \
static const char *name##_[] = {__VA_ARGS__}; \
static const struct menu_callback_with_desc name##__ = \
@@ -138,7 +156,7 @@ bool do_setting_from_menu(const struct menu_item_ex *temp);
{ .strings = name##_},{.callback_and_desc = & name##__}};
-/* returns a value associated with the item */
+/* causes do_menu() to return a value associated with the item */
#define MENUITEM_RETURNVALUE(name, str, val, cb, icon) \
static const struct menu_callback_with_desc name##_ = {cb,str,icon}; \
static const struct menu_item_ex name = \
diff --git a/apps/plugins/chessbox/chessbox.c b/apps/plugins/chessbox/chessbox.c
index f2ae95b4f2..9f9e1099af 100644
--- a/apps/plugins/chessbox/chessbox.c
+++ b/apps/plugins/chessbox/chessbox.c
@@ -528,8 +528,7 @@ static int cb_menu(void)
while(!menu_quit)
{
- selection = rb->do_menu(&menu, &selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
menu_quit = true;
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 89f6e3db13..26e70d3e42 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -647,8 +647,7 @@ static int chopMenu(int menunum)
rb->lcd_clear_display();
while (!menu_quit) {
- result=rb->do_menu(&menu,&result);
- switch (result)
+ switch(rb->do_menu(&menu, &result))
{
case 0: /* Start New Game */
menu_quit=true;
diff --git a/apps/plugins/dice.c b/apps/plugins/dice.c
index 1113654230..0875248bdc 100644
--- a/apps/plugins/dice.c
+++ b/apps/plugins/dice.c
@@ -235,8 +235,7 @@ static bool dice_menu(int *num_dice, int *side_index) {
};
while (!menu_quit) {
- selection = rb->do_menu(&menu, &selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
menu_quit = true;
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index da2e76fb56..4340770e09 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -355,8 +355,7 @@ int tidy_lcd_menu(void)
while (!menu_quit)
{
- selection = rb->do_menu(&menu,&selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 9dc983e4c1..31d699501d 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -410,8 +410,7 @@ enum minesweeper_status menu( void )
#endif
while (!menu_quit) {
- selection=rb->do_menu(&menu,&selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
result = MINESWEEPER_WIN; /* start playing */
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index fa357a8418..6acbb808aa 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -342,8 +342,7 @@ void game_init(void) {
"Quit");
while (!menu_quit) {
- selection = rb->do_menu(&menu, &selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
menu_quit = true; /* start playing */
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 56cbe8c75d..2e27fd280b 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -876,8 +876,7 @@ static int star_menu(void)
while(!menu_quit)
{
- selection = rb->do_menu(&menu, &selection);
- switch(selection)
+ switch(rb->do_menu(&menu, &selection))
{
case 0:
menu_quit = true;
diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c
index 748b07141b..9f452de184 100644
--- a/apps/plugins/test_codec.c
+++ b/apps/plugins/test_codec.c
@@ -452,7 +452,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
unsigned char* codec_stack_copy;
size_t codec_stack_size;
struct thread_entry* codecthread_id;
- int result;
+ int result, selection = 0;
char* ch;
int line = 0;
@@ -529,7 +529,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
rb->lcd_clear_display();
- result=rb->do_menu(&menu,&result);
+ result=rb->do_menu(&menu,&selection);
if (result==0) {
wavinfo.fd = -1;
diff --git a/apps/plugins/wavrecord.c b/apps/plugins/wavrecord.c
index 645a968342..528d790ed5 100644
--- a/apps/plugins/wavrecord.c
+++ b/apps/plugins/wavrecord.c
@@ -3717,9 +3717,8 @@ static int recording_menu(void)
"Set channels", "Set Source", "Start recording", "Quit");
while (!done)
- {
- rb->do_menu(&menu, &result);
- switch (result)
+ {
+ switch (rb->do_menu(&menu, &result))
{
case 0: /* Set sample rate */
rb->set_option("Sample rate", &reccfg.samplerate, INT, freqs, 9, NULL);
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index c4607cd618..94cf1bdee3 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -2533,9 +2533,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
rb->button_clear_queue();
while (!menu_quit) {
- result = rb->do_menu(&menu, &result);
-
- switch(result)
+ switch(rb->do_menu(&menu, &result))
{
case 0:
rb->lcd_setfont(FONT_SYSFIXED);