static void handle_search_key(char keycode) { int rc = 0; if (keycode == WL_KEY_BACKSPACE) { rc = search_remove_char(1); } else if (is_supported_search_char(keycode)) { rc = search_add_char(tolower(keycode)); } else { if(keycode == -42) // toggling keyboard will be handled at key down { rc = -1; } else { return; } } guilib_fb_lock(); //search_reload(); if (!rc) search_reload_ex(SEARCH_RELOAD_NORMAL); // keyboard_paint(); guilib_fb_unlock(); }
int search_string_cmp(char *title, char *search, int len) // assuming search consists of lowercase only { int rc = 0; char c = 0; while (!rc && len > 0) { c = *title; if (c && !is_supported_search_char(c)) { title++; } else { if ('A' <= c && c <= 'Z') c += 32; if (c == *search) { title++; search++; len--; } else if (c > *search) rc = 1; else rc = -1; } } return rc; }
void init_char_idx() { char c; int i; int idx = 1; memset(aCharIdx, 0, sizeof(aCharIdx)); for (i = 0; i < 128; i++) { c = (char)i; if (is_supported_search_char(c)) { if ('a' <= c && c <= 'z') aCharIdx[i] = aCharIdx[(int)'A' + (c - 'a')]; else aCharIdx[i] = idx++; } } }
int search_string_cmp(char *title, char *search, int len) // assuming search consists of lowercase only { int rc = 0; char c = 0; #if 0 // some debug message #ifdef WIKIPCF char temp[512]; memcpy(temp, search, len); temp[len] = '\0'; showMsg(3, "[%s][%s]\n", title, temp); #endif #endif while (!rc && len > 0) { c = *title; if (c && !is_supported_search_char(c)) { title++; } else { if ('A' <= c && c <= 'Z') c += 32; if (c == *search) { title++; search++; len--; } else if (c > *search) rc = 1; else rc = -1; } } return rc; }
void handle_password_key(char keycode) { switch (restricted_screen_mode) { case RESTRICTED_SCREEN_FIRST_TIME_PASSWORD: case RESTRICTED_SCREEN_SET_PASSWORD: case RESTRICTED_SCREEN_CONFIRM_PASSWORD: case RESTRICTED_SCREEN_CHECK_PASSWORD: case RESTRICTED_SCREEN_CHANGE_PASSWORD: if (keycode == 'Y') { if (restricted_screen_mode == RESTRICTED_SCREEN_FIRST_TIME_PASSWORD) { password_str_len = 0; keyboard_set_mode(KEYBOARD_PASSWORD_CHAR); enter_password_screen(get_nls_text("set_password")); restricted_screen_mode = RESTRICTED_SCREEN_SET_PASSWORD; } else if (restricted_screen_mode == RESTRICTED_SCREEN_SET_PASSWORD && password_str_len > 0) { restricted_screen_mode = RESTRICTED_SCREEN_CONFIRM_PASSWORD; strcpy(password1, password_string); password_str_len = 0; if (restriction_filter_off == -1) enter_password_screen(get_nls_text("re_enter_password")); else enter_password_screen(get_nls_text("re_enter_new_password")); } else if (restricted_screen_mode == RESTRICTED_SCREEN_CONFIRM_PASSWORD && password_str_len > 0) { if (strcmp(password1, password_string)) { password_str_len = 0; restricted_screen_mode = RESTRICTED_SCREEN_SET_PASSWORD; enter_password_screen(get_nls_text("passwords_not_match")); } else { restriction_filter_off = 0; save_password(1); restricted_screen_mode = RESTRICTED_SCREEN_FILTER_ON_OFF; filter_on_off(); } } else if (password_str_len > 0) { check_password(); } } else if (keycode == WL_KEY_BACKSPACE) { password_remove_char(); } else if (is_supported_search_char(keycode)) { password_add_char(tolower(keycode)); } break; case RESTRICTED_SCREEN_FILTER_ON_OFF: if (keycode == 'Y') { restriction_filter_off = 0; if (init_filtering) { init_filtering = 0; search_set_selection(-1); display_mode = DISPLAY_MODE_INDEX; keyboard_set_mode(wiki_default_keyboard()); repaint_search(); } else { display_mode = DISPLAY_MODE_ARTICLE; display_retrieved_article(saved_idx_article); } } else if (keycode == 'N') { restriction_filter_off = 1; save_password(2); if (init_filtering) { init_filtering = 0; search_set_selection(-1); display_mode = DISPLAY_MODE_INDEX; keyboard_set_mode(wiki_default_keyboard()); repaint_search(); } else { display_mode = DISPLAY_MODE_ARTICLE; display_retrieved_article(saved_idx_article); } } break; case RESTRICTED_SCREEN_FILTER_OPTION: if (keycode == 'Y') { filter_option_to_set = FILTER_OPTION_TO_SET_ON; password_str_len = 0; check_password(); } else if (keycode == 'N') { filter_option_to_set = FILTER_OPTION_TO_SET_OFF; password_str_len = 0; check_password(); } if (keycode == 'P') { password_str_len = 0; keyboard_set_mode(KEYBOARD_PASSWORD_CHAR); enter_password_screen(get_nls_text("enter_old_password")); restricted_screen_mode = RESTRICTED_SCREEN_CHANGE_PASSWORD; } break; default: break; } }