#include #include #include #include #include "GUI_config_net.h" #include "GUI_config_net_serv_port.h" #include "GUI_keyboard.h" #include "GUI_common.h" #include "CORE_general.h" #include "gfx/all_gfx.h" /* Possible actions */ #define BACK 0 #define OK 1 /******** PRIVATE ********/ static void priv_load_sprites(u8 screen); static void priv_del_sprites(u8 screen); static u8 priv_touched(u8 icon); static u8 priv_selected(u8 icon); /*************************/ /* The connect menu process function */ void gui_config_net_serv_port(void){ static config_net_serv_port_state_t localstate = CONFIG_NET_SERV_PORT_INIT; static char tmp_serv_port[6] = {0,0,0,0,0,0}; switch(localstate){ case CONFIG_NET_SERV_PORT_INIT: PA_EasyBgLoad(DSCR, 3, BG_keyboard); keyboard_view(); priv_load_sprites(DSCR); sprintf(tmp_serv_port, "%d", tmpEnv->network.serv_base_port); localstate = CONFIG_NET_SERV_PORT_FADEIN; break; case CONFIG_NET_SERV_PORT_FADEIN: if(fadein(DSCR)) return; localstate = CONFIG_NET_SERV_PORT_SELECT; commons_move_in(); break; case CONFIG_NET_SERV_PORT_SELECT: keyboard_num_read(tmp_serv_port, sizeof(tmp_serv_port), 0); if(priv_selected(BACK)){ NetCfg.serv_port_has_changed = 0; Env.next_state = APP_CONFIG_NET; localstate = CONFIG_NET_SERV_PORT_MOVEOUT; } else if(priv_selected(OK)){ if( (atoi(tmp_serv_port) > 0) && (atoi(tmp_serv_port) <= 65535) ){ NetCfg.serv_port_has_changed = 1; tmpEnv->network.serv_base_port = atoi(tmp_serv_port); Env.next_state = APP_CONFIG_NET; localstate = CONFIG_NET_SERV_PORT_MOVEOUT; } } break; case CONFIG_NET_SERV_PORT_MOVEOUT: commons_move_out(); localstate = CONFIG_NET_SERV_PORT_FADEOUT; case CONFIG_NET_SERV_PORT_FADEOUT: if(fadeout(DSCR)) return; localstate = CONFIG_NET_SERV_PORT_CLEAR; break; case CONFIG_NET_SERV_PORT_CLEAR: keyboard_hide(); priv_del_sprites(DSCR); PA_DeleteBg(DSCR, 3); localstate = CONFIG_NET_SERV_PORT_INIT; Env.current_state = Env.next_state; break; } return; } /*------------------------------- Private -------------------------------*/ /* Private sprite loading */ static void priv_load_sprites(u8 screen){ buttons_init(BUTTON_BACK, BUTTON_OK); title_init(TITLE_SERV_PORT); return; } /* Private sprite deletting */ static void priv_del_sprites(u8 screen){ commons_delete(); return; } /* Private sprite touch Return 1 touched 0 not touched */ static u8 priv_touched(u8 icon){ switch(icon){ case BACK: return button_touch_l(); break; case OK: return button_touch_r(); break; } return 0; } /* Is the item selected? Return 1 selected 0 not selected */ static u8 priv_selected(u8 icon){ return priv_touched(icon); }