1
0
Fork 0
forked from len0rd/rockbox

Added iriver remote keys support to the option selection in the menus, corrected a silly c'n'p error

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7750 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Kevin Ferrare 2005-11-04 16:07:50 +00:00
parent c34d04618a
commit 80c0f99a1a
3 changed files with 46 additions and 9 deletions

View file

@ -42,7 +42,7 @@ void gui_select_init_numeric(struct gui_select * select,
select->validated=false;
select->title=title;
select->min_value=min_value;
select->max_value=max_value;
select->max_value=max_value+1;
select->option=init_value;
select->step=step;
select->extra_string=unit;
@ -66,19 +66,27 @@ void gui_select_init_items(struct gui_select * select,
select->formatter=NULL;
select->items=items;
}
//FIXME: si step>1, mettre d'abord au plus grand, ensuite passerau plus petit
void gui_select_next(struct gui_select * select)
{
select->option+=select->step;
if(select->option >= select->max_value)
if(select->option + select->step >= select->max_value)
if(select->option==select->max_value-1)
select->option=select->min_value;
else
select->option=select->max_value-1;
else
select->option+=select->step;
}
void gui_select_prev(struct gui_select * select)
{
select->option-=select->step;
if(select->option < select->min_value)
if(select->option - select->step < select->min_value)
if(select->option==select->min_value)
select->option=select->max_value-1;
else
select->option=select->min_value;
else
select->option-=select->step;
}
void gui_select_draw(struct gui_select * select, struct screen * display)
@ -119,22 +127,44 @@ bool gui_syncselect_do_button(struct gui_select * select, int button)
{
case SELECT_INC :
case SELECT_INC | BUTTON_REPEAT :
#ifdef SELECT_RC_INC
case SELECT_RC_INC :
case SELECT_RC_INC | BUTTON_REPEAT :
#endif
gui_select_next(select);
moved=true;
break;
case SELECT_DEC :
case SELECT_DEC | BUTTON_REPEAT :
#ifdef SELECT_RC_DEC
case SELECT_RC_DEC :
case SELECT_RC_DEC | BUTTON_REPEAT :
#endif
gui_select_prev(select);
moved=true;
break;
case SELECT_OK :
#ifdef SELECT_RC_OK
case SELECT_RC_OK :
#endif
#ifdef SELECT_RC_OK2
case SELECT_RC_OK2 :
#endif
#ifdef SELECT_OK2
case SELECT_OK2 :
#endif
gui_select_validate(select);
break;
case SELECT_CANCEL :
#ifdef SELECT_CANCEL2
case SELECT_CANCEL2 :
#endif
#ifdef SELECT_RC_CANCEL
case SELECT_RC_CANCEL :
#endif
#ifdef SELECT_RC_CANCEL2
case SELECT_RC_CANCEL2 :
#endif
gui_select_cancel(select);
gui_syncselect_draw(select);
sleep(HZ/2);

View file

@ -32,6 +32,13 @@
#define SELECT_CANCEL BUTTON_OFF
#define SELECT_CANCEL2 BUTTON_MODE
#define SELECT_RC_INC BUTTON_RC_FF
#define SELECT_RC_DEC BUTTON_RC_REW
#define SELECT_RC_OK BUTTON_RC_ON
#define SELECT_RC_OK2 BUTTON_RC_MENU
#define SELECT_RC_CANCEL BUTTON_RC_STOP
#define SELECT_RC_CANCEL2 BUTTON_RC_MODE
#elif CONFIG_KEYPAD == RECORDER_PAD
#define SELECT_INC BUTTON_UP
#define SELECT_DEC BUTTON_DOWN

View file

@ -1401,9 +1401,9 @@ bool set_int(const char* string,
if(gui_syncselect_do_button(&select, button))
{
*variable=gui_select_get_selected(&select);
gui_syncselect_draw(&select);
if (global_settings.talk_menu)
{
gui_syncselect_draw(&select);
if (voice_unit < UNIT_LAST)
{ /* use the available unit definition */
talk_value(*variable, voice_unit, false);