#include #include #include #include #include "GUI_config_net.h" #include "GUI_config_net_serv_ip.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_ip(void){ static config_net_serv_ip_state_t localstate = CONFIG_NET_SERV_IP_INIT; static char tmp_serv_ip[16] = {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0}; switch(localstate){ case CONFIG_NET_SERV_IP_INIT: PA_EasyBgLoad(DSCR, 3, BG_keyboard); keyboard_view(); priv_load_sprites(DSCR); network_ip2str(tmp_serv_ip, sizeof(tmp_serv_ip), tmpEnv->network.serv_ip); localstate = CONFIG_NET_SERV_IP_FADEIN; break; case CONFIG_NET_SERV_IP_FADEIN: if(fadein(DSCR)) return; localstate = CONFIG_NET_SERV_IP_SELECT; commons_move_in(); break; case CONFIG_NET_SERV_IP_SELECT: keyboard_num_read(tmp_serv_ip, sizeof(tmp_serv_ip), 1); if(priv_selected(BACK)){ NetCfg.serv_ip_has_changed = 0; Env.next_state = APP_CONFIG_NET; localstate = CONFIG_NET_SERV_IP_MOVEOUT; } else if(priv_selected(OK)){ if( ntohl(inet_addr(tmp_serv_ip)) != -1 ){ NetCfg.serv_ip_has_changed = 1; tmpEnv->network.serv_ip.inaddr.s_addr = ntohl(inet_addr(tmp_serv_ip)); Env.next_state = APP_CONFIG_NET; localstate = CONFIG_NET_SERV_IP_MOVEOUT; } } break; case CONFIG_NET_SERV_IP_MOVEOUT: commons_move_out(); localstate = CONFIG_NET_SERV_IP_FADEOUT; case CONFIG_NET_SERV_IP_FADEOUT: if(fadeout(DSCR)) return; localstate = CONFIG_NET_SERV_IP_CLEAR; break; case CONFIG_NET_SERV_IP_CLEAR: keyboard_hide(); priv_del_sprites(DSCR); PA_DeleteBg(DSCR, 3); localstate = CONFIG_NET_SERV_IP_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_IP); 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); }