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->validated=false;
select->title=title; select->title=title;
select->min_value=min_value; select->min_value=min_value;
select->max_value=max_value; select->max_value=max_value+1;
select->option=init_value; select->option=init_value;
select->step=step; select->step=step;
select->extra_string=unit; select->extra_string=unit;
@ -66,19 +66,27 @@ void gui_select_init_items(struct gui_select * select,
select->formatter=NULL; select->formatter=NULL;
select->items=items; 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) void gui_select_next(struct gui_select * select)
{ {
select->option+=select->step; if(select->option + select->step >= select->max_value)
if(select->option >= select->max_value) if(select->option==select->max_value-1)
select->option=select->min_value; 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) void gui_select_prev(struct gui_select * select)
{ {
select->option-=select->step; if(select->option - select->step < select->min_value)
if(select->option < select->min_value) if(select->option==select->min_value)
select->option=select->max_value-1; 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) 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 :
case SELECT_INC | BUTTON_REPEAT : case SELECT_INC | BUTTON_REPEAT :
#ifdef SELECT_RC_INC
case SELECT_RC_INC :
case SELECT_RC_INC | BUTTON_REPEAT :
#endif
gui_select_next(select); gui_select_next(select);
moved=true; moved=true;
break; break;
case SELECT_DEC : case SELECT_DEC :
case SELECT_DEC | BUTTON_REPEAT : case SELECT_DEC | BUTTON_REPEAT :
#ifdef SELECT_RC_DEC
case SELECT_RC_DEC :
case SELECT_RC_DEC | BUTTON_REPEAT :
#endif
gui_select_prev(select); gui_select_prev(select);
moved=true; moved=true;
break; break;
case SELECT_OK : case SELECT_OK :
#ifdef SELECT_RC_OK
case SELECT_RC_OK :
#endif
#ifdef SELECT_RC_OK2
case SELECT_RC_OK2 :
#endif
#ifdef SELECT_OK2 #ifdef SELECT_OK2
case SELECT_OK2 : case SELECT_OK2 :
#endif #endif
gui_select_validate(select); gui_select_validate(select);
break; break;
case SELECT_CANCEL : case SELECT_CANCEL :
#ifdef SELECT_CANCEL2
case 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_select_cancel(select);
gui_syncselect_draw(select); gui_syncselect_draw(select);
sleep(HZ/2); sleep(HZ/2);

View file

@ -32,6 +32,13 @@
#define SELECT_CANCEL BUTTON_OFF #define SELECT_CANCEL BUTTON_OFF
#define SELECT_CANCEL2 BUTTON_MODE #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 #elif CONFIG_KEYPAD == RECORDER_PAD
#define SELECT_INC BUTTON_UP #define SELECT_INC BUTTON_UP
#define SELECT_DEC BUTTON_DOWN #define SELECT_DEC BUTTON_DOWN

View file

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