From cef15c6efc2a0720a8b9b27cea036fc6ac82c829 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Sun, 10 Apr 2005 17:36:55 +0000 Subject: FM preset menu: Set cursor to the current preset on enter. Added a generic function to the menu system which allows for setting the position. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6264 a1c6a512-1295-4272-9138-f99709370657 --- apps/menu.c | 12 +++++++++++- apps/menu.h | 1 + apps/recorder/radio.c | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'apps') diff --git a/apps/menu.c b/apps/menu.c index e483ad7136..68b9d0dbe7 100644 --- a/apps/menu.c +++ b/apps/menu.c @@ -166,7 +166,7 @@ void menu_draw(int m) #endif /* Adjust cursor pos if it's below the screen */ if (menus[m].cursor - menus[m].top >= menu_lines) - menus[m].top++; + menus[m].top = menus[m].cursor - (menu_lines - 1); /* Adjust cursor pos if it's above the screen */ if(menus[m].cursor < menus[m].top) @@ -508,3 +508,13 @@ bool menu_movedown(int menu) return true; } + +/* + * Allows to set the cursor position. Doesn't redraw by itself. + */ + +void menu_set_cursor(int menu, int position) +{ + menus[menu].cursor = position; +} + diff --git a/apps/menu.h b/apps/menu.h index 1171f0efc5..046153b654 100644 --- a/apps/menu.h +++ b/apps/menu.h @@ -90,5 +90,6 @@ bool menu_moveup(int menu); bool menu_movedown(int menu); void menu_draw(int menu); void menu_insert(int menu, int position, char *desc, bool (*function) (void)); +void menu_set_cursor(int menu, int position); #endif /* End __MENU_H__ */ diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 10a513f01f..59dd9dc37f 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c @@ -817,6 +817,8 @@ bool handle_radio_presets(void) str(LANG_FM_BUTTONBAR_ADD), str(LANG_FM_BUTTONBAR_EXIT), str(LANG_FM_BUTTONBAR_ACTION)); + if (curr_preset >= 0) + menu_set_cursor(preset_menu, curr_preset); result = menu_show(preset_menu); menu_exit(preset_menu); if (result == MENU_SELECTED_EXIT) -- cgit v1.2.3