static enum color do_fourth_band_menu(void) { int band_selection = 0; enum color band_color_selection = 0; MENUITEM_STRINGLIST(colors_menu_fourth, "Fourth band colour:", NULL, "Gold", "Brown", "Red", "Silver", "(none)"); band_selection = rb->do_menu(&colors_menu_fourth, &band_selection, NULL, false); switch(band_selection) { case 0: /* Gold */ band_color_selection = RES_GOLD; break; case 1: /* Brown */ band_color_selection = RES_BROWN; break; case 2: /* Red */ band_color_selection = RES_RED; break; case 3: /* Silver */ band_color_selection = RES_SILVER; break; case 4: /* (none) */ band_color_selection = RES_NONE; break; default: band_color_selection = RES_INVALID; break; } return band_color_selection; }
void set_frameskip(void) { MENUITEM_STRINGLIST(smenu, "Frameskip", NULL, "0", "1", "2", "3", "4", "5"); switch(rb->do_menu(&smenu, NULL, NULL, false)) { case 0: FrameSkip = 0; return; case 1: FrameSkip = 1; return; case 2: FrameSkip = 2; return; case 3: FrameSkip = 3; return; case 4: FrameSkip = 4; return; case 5: FrameSkip = 5; return; default: return; } }
/************************************ * General settings. Reset, save, etc ***********************************/ void menu_general_settings(void){ int selection=0, result=0; MENUITEM_STRINGLIST(menu,"General Settings",NULL, "Hour Format","Date Format","Show Counter", "Reset Settings","Save Settings Now", "Save On Exit","Backlight Settings", "Idle Poweroff (temporary)"); while(result>=0){ result=rb->do_menu(&menu, &selection, NULL, false); switch(result){ case 0: rb->set_option("Hour format", &clock_settings.general.hour_format, INT, hour_format_text, 2, NULL); break; case 1: rb->set_option("Date format", &clock_settings.general.date_format, INT, date_format_text, 4, NULL); break; case 2: rb->set_option("Show Counter", &clock_settings.general.show_counter, BOOL, noyes_text, 2, NULL); break; case 3: confirm_reset(); break; case 4: save_settings_wo_gui(); rb->splash(HZ, "Settings saved"); break; case 5: rb->set_option("Save On Exit", &clock_settings.general.save_settings, BOOL, noyes_text, 2, NULL); /* if we no longer save on exit, we better save now to remember that */ if(!clock_settings.general.save_settings) save_settings_wo_gui(); break; case 6: rb->set_option("Backlight Settings", &clock_settings.general.backlight, INT, backlight_settings_text, 3, NULL); apply_backlight_setting(clock_settings.general.backlight); break; case 7: rb->set_option("Idle Poweroff (temporary)", &clock_settings.general.idle_poweroff, BOOL, idle_poweroff_text, 2, NULL); break; } } }
static int plugins_menu(void* param) { (void)param; MENUITEM_STRINGLIST(plugins_menu_items, ID2P(LANG_PLUGINS), NULL, ID2P(LANG_PLUGIN_GAMES), ID2P(LANG_PLUGIN_APPS), ID2P(LANG_PLUGIN_DEMOS)); const char *folder; int retval = GO_TO_PREVIOUS; int selection = 0, current = 0; while (retval == GO_TO_PREVIOUS) { selection = do_menu(&plugins_menu_items, ¤t, NULL, false); switch (selection) { case 0: folder = PLUGIN_GAMES_DIR; break; case 1: folder = PLUGIN_APPS_DIR; break; case 2: folder = PLUGIN_DEMOS_DIR; break; default: return selection; } retval = rockbox_browse(folder, SHOW_PLUGINS); } return retval; }
/*************** * Select a mode, returs true when the mode has been selected * (we go back to clock display then) **************/ bool menu_mode_selector(void){ MENUITEM_STRINGLIST(menu,"Mode Selector",NULL, "Analog", "Digital", "Binary"); if(rb->do_menu(&menu, &clock_settings.mode, NULL, false) >=0) return(true); return(false); }
static void tidy_lcd_menu(void) { int selection = 0; struct simplelist_info list; MENUITEM_STRINGLIST(menu, "Disktidy Menu", NULL, "Start Cleaning", "Files to Clean", "Quit"); for(;;) switch(rb->do_menu(&menu, &selection, NULL, false)) { default: user_abort = true; case 0: return; /* start cleaning */ case 1: rb->simplelist_info_init(&list, "Files to Clean", tidy_type_count, NULL); list.get_icon = get_icon; list.get_name = get_name; list.action_callback = list_action_callback; rb->simplelist_show_list(&list); break; } }
/********************** * Analog settings menu *********************/ void menu_analog_settings(void) { int selection=0, result=0; MENUITEM_STRINGLIST(menu,"Analog Mode Settings",NULL,"Show Date", "Show Second Hand","Show Border"); while(result>=0){ result=rb->do_menu(&menu, &selection, NULL, false); switch(result){ case 0: rb->set_option("Show Date", &clock_settings.analog.show_date, BOOL, noyes_text, 2, NULL); break; case 1: rb->set_option("Show Second Hand", &clock_settings.analog.show_seconds, BOOL, noyes_text, 2, NULL); break; case 2: rb->set_option("Show Border", &clock_settings.analog.show_border, BOOL, noyes_text, 2, NULL); break; } } }
static int chopMenu(int menunum) { int result = 0; int res = 0; bool menu_quit = false; static const struct opt_items levels[2] = { { "Normal", -1 }, { "Steep", -1 }, }; MENUITEM_STRINGLIST(menu,"Chopper Menu",chopMenuCb, "Resume Game","Start New Game", "Level","Playback Control","Quit"); _ingame = (menunum!=0); #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground(LCD_WHITE); rb->lcd_set_background(LCD_BLACK); #elif LCD_DEPTH == 2 rb->lcd_set_foreground(LCD_BLACK); rb->lcd_set_background(LCD_WHITE); #endif rb->lcd_clear_display(); rb->button_clear_queue(); while (!menu_quit) { switch(rb->do_menu(&menu, &result, NULL, false)) { case 0: /* Resume Game */ menu_quit=true; res = -1; break; case 1: /* Start New Game */ menu_quit=true; chopper_load(true); res = -1; break; case 2: rb->set_option("Level", &iLevelMode, INT, levels, 2, NULL); break; case 3: playback_control(NULL); break; case 4: menu_quit=true; res = PLUGIN_OK; break; case MENU_ATTACHED_USB: menu_quit=true; res = PLUGIN_USB_CONNECTED; break; } } rb->lcd_clear_display(); return res; }
static void game_init(void) { int selection = 0; static const struct opt_items type_options[] = { { "Type A", -1 }, { "Type B", -1 }, }; MENUITEM_STRINGLIST(menu, "Snake2 Menu", NULL, "Start New Game", "Game Type", "Select Maze", "Speed", "High Scores", "Playback Control", "Quit"); rb->button_clear_queue(); dead = 0; apple = 0; score = 0; applecount = 0; while (1) { switch (rb->do_menu(&menu, &selection, NULL, false)) { case 0: speed = level*20; return; case 1: rb->set_option("Game Type", &game_type, INT, type_options, 2, NULL); break; case 2: select_maze(); if(quit) return; break; case 3: rb->set_int("Speed", "", UNIT_INT, &level, NULL, 1, 1, 10, NULL); break; case 4: highscore_show(-1, highscores, NUM_SCORES, true); break; case 5: playback_control(NULL); break; case 6: quit = 1; return; case MENU_ATTACHED_USB: quit = 2; return; default: break; } } }
static enum color do_third_band_menu(void) { int band_selection = 0; enum color band_color_selection = 0; MENUITEM_STRINGLIST(colors_menu_third, "Third band colour:", NULL, "Black", "Brown", "Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Grey", "White", "Silver", "Gold"); band_selection = rb->do_menu(&colors_menu_third, &band_selection, NULL, false); switch(band_selection) { case 0: /* Black */ band_color_selection = RES_BLACK; break; case 1: /* Brown */ band_color_selection = RES_BROWN; break; case 2: /* Red */ band_color_selection = RES_RED; break; case 3: /* Orange */ band_color_selection = RES_ORANGE; break; case 4: /* Yellow */ band_color_selection= RES_YELLOW; break; case 5: /* Green */ band_color_selection = RES_GREEN; break; case 6: /* Blue */ band_color_selection = RES_BLUE; break; case 7: /* Violet */ band_color_selection = RES_VIOLET; break; case 8: /* Grey */ band_color_selection = RES_GREY; break; case 9: /* White */ band_color_selection = RES_WHITE; break; case 10: /* Silver */ band_color_selection = RES_SILVER; break; case 11: /* Gold */ band_color_selection= RES_GOLD; break; default: band_color_selection = RES_INVALID; break; } return band_color_selection; }
static int clix_menu(struct clix_game_state_t* state, bool ingame) { rb->button_clear_queue(); int choice = 0; bool leave_menu=false; int ret=0; _ingame = ingame; MENUITEM_STRINGLIST (main_menu, "Clix Menu", clix_menu_cb, "Resume Game", "Start New Game", "Help", "High Scores", "Playback Control", "Quit"); while (!leave_menu) { switch (rb->do_menu(&main_menu, &choice, NULL, false)) { case 0: leave_menu=true; ret = 0; break; case 1: clix_init(state); leave_menu=true; ret = 0; break; case 2: if (clix_help()) { leave_menu=true; ret = 1; } break; case 3: highscore_show(-1, highscores, NUM_SCORES, true); break; case 4: playback_control(NULL); break; case 5: case MENU_ATTACHED_USB: leave_menu=true; ret = 1; break; default: break; } } return ret; }
static void do_options_menu (void) { int selection; bool done = false; MENUITEM_STRINGLIST (options_menu, "Options Menu", NULL, "Show Child Variations?", "Disable Idle Poweroff?", "Idle Autosave Time", "Automatically Show Comments?"); while (!done) { selection = rb->do_menu (&options_menu, &selection, NULL, false); switch (selection) { case OMENU_SHOW_VARIATIONS: rb->set_bool("Draw Variations?", &draw_variations); clear_marks_display (); set_all_marks_sgf (); if (draw_variations) { mark_child_variations_sgf (); } break; case OMENU_DISABLE_POWEROFF: rb->set_bool("Disable Idle Poweroff?", &disable_shutdown); break; case OMENU_AUTOSAVE_TIME: rb->set_int("Idle Autosave Time", "minutes", UNIT_INT, &autosave_time, NULL, 1, 0, MAX_AUTOSAVE, &autosave_formatter); autosave_counter = 0; break; case OMENU_AUTO_COMMENT: rb->set_bool("Auto Show Comments?", &auto_show_comments); break; case GO_TO_ROOT: case GO_TO_PREVIOUS: case MENU_ATTACHED_USB: default: done = true; break; }; } }
/* welcome screen where player can chose mine percentage */ enum minesweeper_status menu( void ) { int selection = 0, result = MINESWEEPER_QUIT; bool menu_quit = false; MENUITEM_STRINGLIST( menu, "Minesweeper Menu", NULL, "Play Minesweeper", "Mine Percentage", "Number of Rows", "Number of Columns", "Playback Control", "Quit" ); #ifdef HAVE_LCD_COLOR rb->lcd_set_foreground( rb->global_settings->fg_color ); rb->lcd_set_background( rb->global_settings->bg_color ); #endif while( !menu_quit ) { switch( rb->do_menu( &menu, &selection, NULL, false ) ) { case 0: result = MINESWEEPER_WIN; /* start playing */ menu_quit = true; break; case 1: rb->set_int( "Mine Percentage", "%", UNIT_INT, &percent, NULL, 1, 2, 98, NULL ); break; case 2: rb->set_int( "Number of Rows", "", UNIT_INT, &height, NULL, 1, 1, MAX_HEIGHT, NULL ); break; case 3: rb->set_int( "Number of Columns", "", UNIT_INT, &width, NULL, 1, 1, MAX_WIDTH, NULL ); break; case 4: playback_control( NULL ); break; default: result = MINESWEEPER_QUIT; /* quit program */ menu_quit = true; break; } } return result; }
enum plugin_status plugin_start(const void* nothing) { (void)nothing; rb->lcd_clear_display(); rb->lcd_update(); int main_menu_selection = 0; bool menuquit = false; display = rb->screens[0]; rb->viewport_set_defaults(&screen_vp,0); rb->viewport_set_defaults(&text_vp,0); rb->viewport_set_defaults(&bitmap_vp,0); #ifndef USE_TEXT_ONLY bitmap_vp.y = RESISTOR_BMP_Y + screen_vp.y; bitmap_vp.height = BMPHEIGHT_resistor; text_vp.y = bitmap_vp.y + bitmap_vp.height; text_vp.height = screen_vp.height - text_vp.y; #endif MENUITEM_STRINGLIST(main_menu, "Resistor Code Calculator:", NULL, "Colours -> Resistance", "Resistance -> Colours", "LED resistor calculator", "Help", "Exit"); while (!menuquit) { display->set_viewport(&screen_vp); main_menu_selection = rb->do_menu(&main_menu, &main_menu_selection, NULL, false); switch(main_menu_selection) { case 0: color_to_resistance(); break; case 1: resistance_to_color(); break; case 2: led_resistance_calc(); break; case 3: display_helpfile(); break; case 4: menuquit = true; break; case MENU_ATTACHED_USB: return PLUGIN_USB_CONNECTED; } } return PLUGIN_OK; }
void sound_onoff(void) { MENUITEM_STRINGLIST(smenu, "Sound", NULL, "On", "Off"); switch(rb->do_menu(&smenu, NULL, NULL, false)) { case 0: sound_on = true; return; case 1: sound_on = false; return; default: return; } }
void video_menu(void) { MENUITEM_STRINGLIST(smenu, "Video", NULL, "Display Size", "Frameskip"); switch(rb->do_menu(&smenu, NULL, NULL, false)) { case 0: set_display_mode(); break; case 1: set_frameskip(); break; default: break; } }
static int rockblox_menu(void) { int selected = 0; MENUITEM_STRINGLIST(main_menu, "Rockblox Menu", rockblox_menu_cb, "Resume Game", "Start New Game", "Help", "High Scores", "Playback Control", "Quit without Saving", "Quit"); rb->button_clear_queue(); while (true) { switch (rb->do_menu(&main_menu, &selected, NULL, false)) { case 0: if(resume_file) rb->remove(RESUME_FILE); init_rockblox(true); return 0; case 1: init_rockblox(false); return 0; case 2: if (rockblox_help()) return 1; break; case 3: highscore_show(-1, highscores, NUM_SCORES, true); break; case 4: if (playback_control(NULL)) return 1; break; case 5: return 1; case 6: if (resume) { rb->splash(HZ*1, "Saving game ..."); dump_resume(); } return 1; case MENU_ATTACHED_USB: return 1; default: return 1; break; } } }
/*********** * Main menu **********/ bool main_menu(void){ int selection=0; bool done = false; bool exit_clock=false; MENUITEM_STRINGLIST(menu,"Clock Menu",NULL,"View Clock","Mode Selector", "Mode Settings","General Settings","Playback Control", "Quit"); while(!done){ switch(rb->do_menu(&menu, &selection, NULL, false)){ case 0: done = true; break; case 1: done=menu_mode_selector(); break; case 2: switch(clock_settings.mode){ case ANALOG: menu_analog_settings();break; case DIGITAL: menu_digital_settings();break; case BINARY: /* no settings */;break; } break; case 3: menu_general_settings(); break; case 4: playback_control(NULL); break; case 5: exit_clock = true; done = true; break; default: done=true; break; } } return(exit_clock); }
/***************************************************************************** * plugin entry point. ******************************************************************************/ enum plugin_status plugin_start(const void* parameter) { enum plugin_status rc = PLUGIN_CONTINUE; int selection = 0; (void)parameter; rb->lcd_clear_display(); #if LCD_DEPTH > 1 rb->lcd_set_backdrop(NULL); #endif rb->lcd_setfont(FONT_SYSFIXED); remote_control_setcolors(); MENUITEM_STRINGLIST(menu, "Remote Control", NULL, "Desktop", "Presentation", "Media Player", "Quit"); while(rc == PLUGIN_CONTINUE) { switch (rb->do_menu(&menu, &selection, NULL, false)) { case 0: /* Desktop */ rc = menu_desktop(); break; case 1: /* Presentation */ rc = menu_presentation(); break; case 2: /* Media Player */ rc = menu_media_player(); break; case 3: /* Quit */ case GO_TO_PREVIOUS: rc = PLUGIN_OK; break; case MENU_ATTACHED_USB: rc = PLUGIN_USB_CONNECTED; break; default: break; } } rb->lcd_setfont(FONT_UI); return rc; }
static int menu_media_player(void) { int selection = 0; MENUITEM_STRINGLIST(menu, "Media Player", NULL, "Play", "Stop", "Next", "Previous", "Volume Up", "Volume Down", "Mute"); while(1) { int id = HID_CONSUMER_USAGE_UNASSIGNED; switch (rb->do_menu(&menu, &selection, NULL, false)) { case 0: /* Play */ id = HID_CONSUMER_USAGE_PLAY_PAUSE; break; case 1: /* Stop */ id = HID_CONSUMER_USAGE_STOP; break; case 2: /* Next */ id = HID_CONSUMER_USAGE_SCAN_NEXT_TRACK; break; case 3: /* Previous */ id = HID_CONSUMER_USAGE_SCAN_PREVIOUS_TRACK; break; case 4: /* Volume Up */ id = HID_CONSUMER_USAGE_VOLUME_INCREMENT; break; case 5: /* Volume Down */ id = HID_CONSUMER_USAGE_VOLUME_DECREMENT; break; case 6: /* Mute */ id = HID_CONSUMER_USAGE_MUTE; break; case MENU_ATTACHED_USB: return PLUGIN_USB_CONNECTED; case GO_TO_PREVIOUS: return PLUGIN_CONTINUE; default: break; } if (id != HID_CONSUMER_USAGE_UNASSIGNED) rb->usb_hid_send(HID_USAGE_PAGE_CONSUMER, id); } }
static int menu_presentation(void) { int selection = 0; MENUITEM_STRINGLIST(menu, "Presentation", NULL, "Next Slide", "Prev Slide", "Start Slideshow", "Leave Slideshow", "Black Screen", "White Screen"); while(1) { int id = HID_GENERIC_DESKTOP_UNDEFINED; switch (rb->do_menu(&menu, &selection, NULL, false)) { case 0: /* Next Slide */ id = HID_KEYBOARD_N; break; case 1: /* Prev Slide */ id = HID_KEYBOARD_P; break; case 2: /* Start Slideshow */ id = HID_KEYBOARD_F5; break; case 3: /* Leave Slideshow */ id = HID_KEYBOARD_ESCAPE; break; case 4: /* Black Screen */ id = HID_KEYBOARD_DOT; break; case 5: /* White Screen */ id = HID_KEYBOARD_COMMA; break; case MENU_ATTACHED_USB: return PLUGIN_USB_CONNECTED; case GO_TO_PREVIOUS: return PLUGIN_CONTINUE; default: break; } if (id != HID_GENERIC_DESKTOP_UNDEFINED) rb->usb_hid_send(HID_USAGE_PAGE_KEYBOARD_KEYPAD, id); } }
void set_display_mode(void) { MENUITEM_STRINGLIST(smenu, "Display Size", NULL, "Stretch", "Centered", "Half Size"); switch(rb->do_menu(&smenu, NULL, NULL, false)) { case 0: DisplaySize = scale; return; case 1: DisplaySize = center; return; case 2: DisplaySize = half; return; default: return; } }
static int snake_game_menu(void) { MENUITEM_STRINGLIST(main_menu,"Snake Menu",snake_menu_cb, "Resume Game", "Start New Game", "Snake Speed", "High Score", "Playback Control", "Quit"); int selected = 0; rb->button_clear_queue(); while (true) { switch (rb->do_menu(&main_menu, &selected, NULL, false)) { case 0: snake_redraw(); return 0; case 1: snake_game_init(); return 0; case 2: rb->set_int("Snake Speed", "", UNIT_INT, &level, NULL, 1, 1, 9, NULL); break; case 3: highscore_show(-1, highscores, NUM_SCORES, true); rb->lcd_setfont(FONT_UI); break; case 4: playback_control(NULL); break; case 5: return 1; case MENU_ATTACHED_USB: return 1; default: break; } } }
void menu(void) { MENUITEM_STRINGLIST(menu, "Menu", NULL, "Start Button", "Load", "Save", "Video", "Sound", "Quit", "MENU function"); switch (rb->do_menu(&menu, NULL, NULL, false)) { case 0: dwPad1 |= 1 << 3; case 1: load(); break; case 2: save(); break; case 3: video_menu(); break; case 4: sound_onoff(); break; case 5: dwSystem|=PAD_SYS_QUIT; quit=1; break; case 6: if (NES_BUTTON_B == BUTTON_MENU ) { NES_BUTTON_B = BUTTON_NONE; NES_BUTTON_UP = BUTTON_MENU; break; } else { NES_BUTTON_UP = BUTTON_NONE; NES_BUTTON_B = BUTTON_MENU; } default: break; } return; }
static int menu_desktop(void) { int selection = 0; MENUITEM_STRINGLIST(menu, "Desktop", NULL, "Escape", "Windows", "F10", "Page Up", "Page Down"); while(1) { int id = HID_GENERIC_DESKTOP_UNDEFINED; switch (rb->do_menu(&menu, &selection, NULL, false)) { case 0: /* Escape */ id = HID_KEYBOARD_ESCAPE; break; case 1: /* Windows */ /* Not sure whether this is the right key */ id = HID_KEYBOARD_LEFT_GUI; break; case 2: /* F10 */ id = HID_KEYBOARD_F10; break; case 3: /* Page Up */ id = HID_KEYBOARD_PAGE_UP; break; case 4: /* Page Down */ id = HID_KEYBOARD_PAGE_DOWN; break; case MENU_ATTACHED_USB: return PLUGIN_USB_CONNECTED; case GO_TO_PREVIOUS: return PLUGIN_CONTINUE; default: break; } if (id != HID_GENERIC_DESKTOP_UNDEFINED) rb->usb_hid_send(HID_USAGE_PAGE_KEYBOARD_KEYPAD, id); } }
/*********************** * Digital settings menu **********************/ void menu_digital_settings(void){ int selection=0, result=0; MENUITEM_STRINGLIST(menu,"Digital Mode Settings",NULL,"Show Seconds", "Blinking Colon"); while(result>=0){ result=rb->do_menu(&menu, &selection, NULL, false); switch(result){ case 0: rb->set_option("Show Seconds", &clock_settings.digital.show_seconds, BOOL, noyes_text, 2, NULL); break; case 1: rb->set_option("Blinking Colon", &clock_settings.digital.blinkcolon, BOOL, noyes_text, 2, NULL); break; } } }
unsigned tv_display_menu(void) { unsigned result = TV_MENU_RESULT_EXIT_MENU; MENUITEM_STRINGLIST(menu, "Viewer Menu", NULL, "Return", "Viewer Options", "Show Playback Menu", "Select Bookmark", "Global Settings", "Quit"); switch (rb->do_menu(&menu, NULL, NULL, false)) { case 0: /* return */ break; case 1: /* change settings */ tv_copy_preferences(&new_prefs); result = tv_options_menu(); tv_set_preferences(&new_prefs); break; case 2: /* playback control */ playback_control(NULL); break; case 3: /* select bookmark */ tv_select_bookmark(); result = TV_MENU_RESULT_MOVE_PAGE; break; case 4: /* change global settings */ if (!tv_load_global_settings(&new_prefs)) tv_set_default_preferences(&new_prefs); result = tv_options_menu(); tv_save_global_settings(&new_prefs); break; case 5: /* quit */ result = TV_MENU_RESULT_EXIT_PLUGIN; break; } return result; }
static int run_timer(int nr) { char buf[40]; char player_info[13]; long last_tick; bool done=false; int retval=CHCL_OK; long max_ticks=timer_holder[nr].total_time*HZ-timer_holder[nr].used_time; long ticks=0; bool round_time=false; show_pause_mode(chesspause); if (settings.round_time*HZ<max_ticks) { max_ticks=settings.round_time*HZ; round_time=true; } rb->snprintf(player_info, sizeof(player_info), "Player %d", nr+1); rb->lcd_puts(0, FIRST_LINE, (unsigned char *)player_info); last_tick=*rb->current_tick; while (!done) { int button; long now; if (ticks>=max_ticks) { if (round_time) rb->lcd_puts(0, FIRST_LINE+1, (unsigned char *)"ROUND UP!"); else rb->lcd_puts(0, FIRST_LINE+1, (unsigned char *)"TIME OUT!"); rb->backlight_on(); ticks = max_ticks; } else { now=*rb->current_tick; if (!chesspause) { ticks+=now-last_tick; if ((max_ticks-ticks)/HZ == 10) { /* Backlight on if 10 seconds remain */ rb->backlight_on(); } } last_tick=now; if (round_time) { rb->snprintf(buf, sizeof(buf), "%s/", show_time((max_ticks-ticks+HZ-1)/HZ)); /* Append total time */ rb->strcpy(&buf[rb->strlen(buf)], show_time((timer_holder[nr].total_time*HZ- timer_holder[nr].used_time- ticks+HZ-1)/HZ)); rb->lcd_puts(0, FIRST_LINE+1, (unsigned char *)buf); } else { rb->lcd_puts(0, FIRST_LINE+1, (unsigned char *)show_time((max_ticks-ticks+HZ-1)/HZ)); } } rb->lcd_update(); button = rb->button_get(false); switch (button) { /* OFF/ON key to exit */ case CHC_QUIT: return CHCL_CANCEL; /* Indicate exit */ /* PLAY = Stop/Start toggle */ case CHC_STARTSTOP: chesspause=!chesspause; show_pause_mode(chesspause); break; /* LEFT = Reset timer */ case CHC_RESET: ticks=0; break; /* MENU */ case CHC_MENU: { MENUITEM_STRINGLIST(menu, "Menu", NULL, "Delete player", "Restart round", "Set round time", "Set total time", "Playback Control"); int val, res; switch(rb->do_menu(&menu, NULL, NULL, false)) { case 0: /* delete player */ timer_holder[nr].hidden=true; retval = CHCL_NEXT; done=true; break; case 1: /* restart */ ticks=0; last_tick=*rb->current_tick; break; case 2: /* set round time */ val=(max_ticks-ticks)/HZ; res=chessclock_set_int("Round time", &val, 10, 0, MAX_TIME, FLAGS_SET_INT_SECONDS); if (res==CHCL_USB) { retval = CHCL_USB; done=true; } else if (res==CHCL_OK) { ticks=max_ticks-val*HZ; last_tick=*rb->current_tick; } break; case 3: /* set total time */ val=timer_holder[nr].total_time; res=chessclock_set_int("Total time", &val, 10, 0, MAX_TIME, FLAGS_SET_INT_SECONDS); if (res==CHCL_USB) { retval = CHCL_USB; done=true; } else if (res==CHCL_OK) { timer_holder[nr].total_time=val; } break; case 4: playback_control(NULL); break; case MENU_ATTACHED_USB: retval = CHCL_USB; done=true; break; } rb->lcd_clear_display(); show_pause_mode(chesspause); rb->lcd_puts(0, FIRST_LINE, (unsigned char *)player_info); } break; /* UP (RIGHT/+) = Scroll Lap timer up */ case CHC_SETTINGS_INC: retval = CHCL_NEXT; done = true; break; /* DOWN (LEFT/-) = Scroll Lap timer down */ case CHC_SETTINGS_DEC: retval = CHCL_PREV; done = true; break; default: if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { retval = CHCL_USB; done = true; } break; } rb->sleep(HZ/4); /* Sleep 1/4 of a second */ } timer_holder[nr].used_time+=ticks; return retval; }
static void resistance_to_color(void) { backlight_ignore_timeout(); int menu_selection; int menu_selection_tol; int button_press; int i; bool quit = false; char kbd_buffer [10]; int kbd_input_int; int temp; int in_resistance_int; int power_ten=0; int first_band_int = 0; int second_band_int = 0; enum color first_band; enum color second_band; enum color multiplier; enum color fourth_band = 0; enum color units_used = 0; char out_str[20]; for(i=0; i<=10; i++) { kbd_buffer[i] = 0; } /* This cleans out the mysterious garbage that appears */ rb->lcd_clear_display(); rb->splash(HZ/2, "Resistance to Colour"); MENUITEM_STRINGLIST(r_to_c_menu, "Select unit to use:", NULL, "Ohms", "Kiloohms (KOhms)", "Megaohms (MOhms)", "Gigaohms (GOhms)"); MENUITEM_STRINGLIST(r_to_c_menu_tol, "Tolerance to display:", NULL, "5%", "10%", "1%", "2%", "20%"); while(!quit) { int ret; ret=menu_selection = rb->do_menu(&r_to_c_menu, &menu_selection, NULL, false); if(ret<0) break; rb->kbd_input(kbd_buffer, sizeof(kbd_buffer)); /* As stated above somewhere, we (I) need to make a calculator-like keypad, that keyboard isn't all that fun to use. */ ret = rb->do_menu(&r_to_c_menu_tol, &menu_selection_tol, NULL, false); if(ret<0) break; switch(menu_selection_tol) { case 0: /* 5% */ fourth_band = RES_GOLD; break; case 1: /* 10% */ fourth_band = RES_SILVER; break; case 2: /* 1% */ fourth_band = RES_BROWN; break; case 3: /* 2% */ fourth_band = RES_RED; break; case 4: /* 20% */ fourth_band = RES_NONE; break; } kbd_input_int = rb->atoi(kbd_buffer); in_resistance_int = kbd_input_int; switch(menu_selection) { case 0: power_ten=0; units_used = RES_BLACK; break; case 1: /* KOhms */ power_ten=3; units_used = RES_ORANGE; break; case 2: /* MOhms */ power_ten=6; units_used = RES_BLUE; break; case 3: /* GOhms */ power_ten=9; units_used = RES_WHITE; break; } temp=kbd_input_int; while(temp>=100) { temp/=10; power_ten++; } first_band_int=temp/10; second_band_int=temp%10; first_band = get_band_rtoc(first_band_int); second_band = get_band_rtoc(second_band_int); multiplier = get_band_rtoc(power_ten); if( first_band == RES_INVALID || second_band == RES_INVALID || multiplier == RES_INVALID) { rb->splashf(HZ, "%d %s can not be represented", in_resistance_int,band_data[units_used].unit); return; } rb->lcd_clear_display(); lineno = INITIAL_TEXT_Y; #ifndef USE_TEXT_ONLY draw_resistor(first_band, second_band, multiplier, fourth_band); #endif draw_resistor_text(first_band, second_band, multiplier, fourth_band); rb->snprintf(out_str, sizeof(out_str), "Input: %d %s", in_resistance_int, band_data[units_used].unit); display->set_viewport(&text_vp); rb->lcd_puts_scroll(r_to_c_out_str_x, lineno++, out_str); rb->lcd_update(); button_press = rb->button_get(true); switch(button_press) { case PLA_SELECT: break; default: quit = true; backlight_use_settings(); break; } } display->set_viewport(&text_vp); rb->lcd_stop_scroll(); display->set_viewport(&screen_vp); rb->lcd_clear_display(); }
/* ------------------------------------------------------------------------*/ static int select_bookmark(const char* bookmark_file_name, bool show_dont_resume, char** selected_bookmark) { struct bookmark_list* bookmarks; struct gui_synclist list; int item = 0; int action; size_t size; bool exit = false; bool refresh = true; int ret = BOOKMARK_FAIL; bookmarks = plugin_get_buffer(&size); bookmarks->buffer_size = size; bookmarks->show_dont_resume = show_dont_resume; bookmarks->filename = bookmark_file_name; bookmarks->start = 0; bookmarks->show_playlist_name = strcmp(bookmark_file_name, RECENT_BOOKMARK_FILE) == 0; gui_synclist_init(&list, &get_bookmark_info, (void*) bookmarks, false, 2, NULL); if(global_settings.talk_menu) gui_synclist_set_voice_callback(&list, bookmark_list_voice_cb); gui_synclist_set_title(&list, str(LANG_BOOKMARK_SELECT_BOOKMARK), Icon_Bookmark); while (!exit) { if (refresh) { int count = get_bookmark_count(bookmark_file_name); bookmarks->total_count = count; if (bookmarks->total_count < 1) { /* No more bookmarks, delete file and exit */ splash(HZ, ID2P(LANG_BOOKMARK_LOAD_EMPTY)); remove(bookmark_file_name); *selected_bookmark = NULL; return BOOKMARK_FAIL; } if (bookmarks->show_dont_resume) { count++; item++; } gui_synclist_set_nb_items(&list, count * 2); if (item >= count) { /* Selected item has been deleted */ item = count - 1; gui_synclist_select_item(&list, item * 2); } buffer_bookmarks(bookmarks, bookmarks->start); gui_synclist_draw(&list); cond_talk_ids_fq(VOICE_EXT_BMARK); gui_synclist_speak_item(&list); refresh = false; } list_do_action(CONTEXT_BOOKMARKSCREEN, HZ / 2, &list, &action, LIST_WRAP_UNLESS_HELD); item = gui_synclist_get_sel_pos(&list) / 2; if (bookmarks->show_dont_resume) { item--; } if (action == ACTION_STD_CONTEXT) { MENUITEM_STRINGLIST(menu_items, ID2P(LANG_BOOKMARK_CONTEXT_MENU), NULL, ID2P(LANG_BOOKMARK_CONTEXT_RESUME), ID2P(LANG_BOOKMARK_CONTEXT_DELETE)); static const int menu_actions[] = { ACTION_STD_OK, ACTION_BMS_DELETE }; int selection = do_menu(&menu_items, NULL, NULL, false); refresh = true; if (selection >= 0 && selection <= (int) (sizeof(menu_actions) / sizeof(menu_actions[0]))) { action = menu_actions[selection]; } } switch (action) { case ACTION_STD_OK: if (item >= 0) { talk_shutup(); *selected_bookmark = bookmarks->items[item - bookmarks->start]; return BOOKMARK_SUCCESS; } exit = true; ret = BOOKMARK_SUCCESS; break; case ACTION_TREE_WPS: case ACTION_STD_CANCEL: exit = true; break; case ACTION_BMS_DELETE: if (item >= 0) { const char *lines[]={ ID2P(LANG_REALLY_DELETE) }; const char *yes_lines[]={ ID2P(LANG_DELETING) }; const struct text_message message={lines, 1}; const struct text_message yes_message={yes_lines, 1}; if(gui_syncyesno_run(&message, &yes_message, NULL)==YESNO_YES) { delete_bookmark(bookmark_file_name, item); bookmarks->reload = true; } refresh = true; } break; default: if (default_event_handler(action) == SYS_USB_CONNECTED) { ret = BOOKMARK_USB_CONNECTED; exit = true; } break; } } talk_shutup(); *selected_bookmark = NULL; return ret; }