/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2005 by Kevin Ferrare * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "select.h" #include "lang.h" #include "textarea.h" #include "screen_access.h" #include "kernel.h" void gui_select_init_numeric(struct gui_select * select, const char * title, int init_value, int min_value, int max_value, int step, const char * unit, option_formatter *formatter) { select->canceled=false; select->validated=false; option_select_init_numeric(&select->options, title, init_value, min_value, max_value, step, unit, formatter); } void gui_select_init_items(struct gui_select * select, const char * title, int selected, const struct opt_items * items, int nb_items) { select->canceled=false; select->validated=false; option_select_init_items(&select->options, title, selected, items, nb_items); } void gui_select_draw(struct gui_select * select, struct screen * display) { char buffer[30]; const char * selected=option_select_get_text(&(select->options), buffer, sizeof buffer); #ifdef HAVE_LCD_BITMAP screen_set_xmargin(display, 0); #endif gui_textarea_clear(display); display->puts_scroll(0, 0, (unsigned char *)select->options.title); if(select->canceled) display->puts_scroll(0, 0, str(LANG_MENU_SETTING_CANCEL)); display->puts_scroll(0, 1, (unsigned char *)selected); gui_textarea_update(display); } void gui_syncselect_draw(struct gui_select * select) { int i; FOR_NB_SCREENS(i) gui_select_draw(select, &(screens[i])); } bool gui_syncselect_do_button(struct gui_select * select, int button) { switch(button) { case SELECT_INC | BUTTON_REPEAT : #ifdef SELECT_RC_INC case SELECT_RC_INC | BUTTON_REPEAT : #endif select->options.limit_loop = true; case SELECT_INC : #ifdef SELECT_RC_INC case SELECT_RC_INC : #endif option_select_next(&select->options); return(true); case SELECT_DEC | BUTTON_REPEAT : #ifdef SELECT_RC_DEC case SELECT_RC_DEC | BUTTON_REPEAT : #endif select->options.limit_loop = true; case SELECT_DEC : #ifdef SELECT_RC_DEC case SELECT_RC_DEC : #endif option_select_prev(&select->options); return(true); 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 select->validated=true; return(false); 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 select->canceled = true; gui_syncselect_draw(select); sleep(HZ/2); return(false); } return(false); }