void check_password() { SHA1Context sha; char pass_sha1[20]; if (password_str_len <= 0) { if (restricted_screen_mode != RESTRICTED_SCREEN_FILTER_OPTION) filter_option_to_set = FILTER_OPTION_TO_SET_NONE; restricted_screen_mode = RESTRICTED_SCREEN_CHECK_PASSWORD; enter_password_screen(get_nls_text("enter_password")); } else { SHA1Reset(&sha); SHA1Input(&sha, (const unsigned char *) password_string, password_str_len); SHA1Result(&sha); memcpy(pass_sha1, sha.Message_Digest, 20); if (memcmp(pass_sha1, restriction_pass1, 20)) { password_str_len = 0; if (restricted_screen_mode != RESTRICTED_SCREEN_CHANGE_PASSWORD) restricted_screen_mode = RESTRICTED_SCREEN_CHECK_PASSWORD; enter_password_screen(get_nls_text("try_again")); } else { if (restricted_screen_mode == RESTRICTED_SCREEN_CHANGE_PASSWORD) { password_str_len = 0; keyboard_set_mode(KEYBOARD_PASSWORD_CHAR); enter_password_screen(get_nls_text("enter_new_password")); restricted_screen_mode = RESTRICTED_SCREEN_SET_PASSWORD; } else if (filter_option_to_set == FILTER_OPTION_TO_SET_ON) { restriction_filter_off = 0; save_password(1); last_display_mode = DISPLAY_MODE_ARTICLE; display_mode = DISPLAY_MODE_ARTICLE; display_retrieved_article(saved_idx_article); } else if (filter_option_to_set == FILTER_OPTION_TO_SET_OFF) { restriction_filter_off = 1; save_password(2); last_display_mode = DISPLAY_MODE_ARTICLE; display_mode = DISPLAY_MODE_ARTICLE; display_retrieved_article(saved_idx_article); } else { display_mode = DISPLAY_MODE_ARTICLE; display_retrieved_article(saved_idx_article); } } } }
void filter_on_off(void) { int i; unsigned char *pText; char str[256]; guilib_fb_lock(); memset(&framebuffer[(BLACK_SPACE_START - 6)* LCD_VRAM_WIDTH_PIXELS / 8], 0, 6 * LCD_VRAM_WIDTH_PIXELS / 8); memset(&framebuffer[BLACK_SPACE_START * LCD_VRAM_WIDTH_PIXELS / 8], 0xFF, (LCD_HEIGHT_LINES - BLACK_SPACE_START)* LCD_VRAM_WIDTH_PIXELS / 8); framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 136; i <= 155; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 165; i <= 184; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[185 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[185 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[185 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; pText = get_nls_text("set_filter"); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 10, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 30, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 50, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 70, str, strlen(str), 1); pText = get_nls_text("keep_filter_on"); render_string(SUBTITLE_FONT_IDX, -1, 137, pText, strlen(pText), 0); pText = get_nls_text("keep_filter_off"); render_string(SUBTITLE_FONT_IDX, -1, 166, pText, strlen(pText), 0); guilib_fb_unlock(); keyboard_set_mode(KEYBOARD_FILTER_ON_OFF); }
/* this is only called for the index page */ static void toggle_soft_keyboard(void) { //guilib_fb_lock(); int mode = keyboard_get_mode(); /* Set the keyboard mode to what we want to change to. */ if (mode == KEYBOARD_NONE || search_result_count()==0) { keyboard_set_mode(KEYBOARD_CHAR); if (mode == KEYBOARD_NONE) restore_search_list_page(); // search_reload_ex(); keyboard_paint(); } else { keyboard_set_mode(KEYBOARD_NONE); search_reload_ex(SEARCH_RELOAD_KEEP_RESULT); } //guilib_fb_unlock(); }
uint8_t model_save (char *name, float x, float y, int8_t button, float data, uint8_t action) { char tmp_str[200]; reset_buttons(); keyboard_set_callback(model_save_xml); if (strstr(ModelData[ModelActive].name, ".xml\0") > 0) { strncpy(tmp_str, ModelData[ModelActive].name, 199); } else { sprintf(tmp_str, "%s.xml", ModelData[ModelActive].name); } keyboard_set_text(tmp_str); keyboard_set_mode(setup.view_mode); return 0; }
void enter_password_screen(char *msg) { int i; unsigned char *pText; display_mode = DISPLAY_MODE_RESTRICTED; keyboard_set_mode(KEYBOARD_PASSWORD_CHAR); guilib_fb_lock(); keyboard_paint(); memset(&framebuffer[(BLACK_SPACE_START - 6)* LCD_VRAM_WIDTH_PIXELS / 8], 0, 6 * LCD_VRAM_WIDTH_PIXELS / 8); memset(&framebuffer[BLACK_SPACE_START * LCD_VRAM_WIDTH_PIXELS / 8], 0xFF, (LCD_HEIGHT_LINES - BLACK_SPACE_START - keyboard_height())* LCD_VRAM_WIDTH_PIXELS / 8); render_string(SUBTITLE_FONT_IDX, -1, 50, msg, strlen(msg), 1); framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 4] = 0xFC; memset(&framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 5], 0, 16); framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 21] = 0x07; framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 22] = 0x80; memset(&framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 23], 0, 2); framebuffer[82 * LCD_VRAM_WIDTH_PIXELS / 8 + 25] = 0x1F; for (i = 83; i <= 103; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 4] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 5], 0, 16); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 21] = 0x03; framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 22] = 0x00; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 23], 0, 2); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 25] = 0x0F; } framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 4] = 0xFC; memset(&framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 5], 0, 16); framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 21] = 0x07; framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 22] = 0x80; memset(&framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 23], 0, 2); framebuffer[104 * LCD_VRAM_WIDTH_PIXELS / 8 + 25] = 0x1F; pText = get_nls_text("ok"); render_string(SUBTITLE_FONT_IDX, 180, 85, pText, strlen(pText), 0); guilib_fb_unlock(); }
void edit_number(uint8_t mode, uint8_t type, void *ptr, float min, float max) { char tmp_str[1024]; show_number = mode; number_type = type; number_min = min; number_max = max; number_value_ptr = ptr; if (number_type == NUMBER_TYPE_UINT8) { uint8_t *value = (uint8_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_INT8) { int8_t *value = (int8_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_UINT16) { uint16_t *value = (uint16_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_INT16) { int16_t *value = (int16_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_UINT32) { uint32_t *value = (uint32_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_INT32) { int32_t *value = (int32_t *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%0.0f", number_value); } else if (number_type == NUMBER_TYPE_FLOAT) { float *value = (float *)number_value_ptr; number_value = (float) * value; sprintf(tmp_str, "%f", number_value); } keyboard_set_callback(edit_number_set); if (number_type == NUMBER_TYPE_FLOAT) { keyboard_set_number(tmp_str, 1); } else { keyboard_set_number(tmp_str, 0); } keyboard_set_mode(mode); }
static void handle_touch(struct wl_input_event *ev) { //int offset,offset_count, int article_link_number=-1; int enter_touch_y_pos_record; //int time_diff_search; int mode; struct keyboard_key * key; static int last_5_y[5]; static unsigned long last_5_y_time_ticks[5]; int i; DP(DBG_WL, ("%s() touch event @%d,%d val %d\n", __func__, ev->touch_event.x, ev->touch_event.y, ev->touch_event.value)); mode = keyboard_get_mode(); if (display_mode == DISPLAY_MODE_INDEX && (mode == KEYBOARD_CHAR || mode == KEYBOARD_NUM)) { article_buf_pointer = NULL; key = keyboard_get_data(ev->touch_event.x, ev->touch_event.y); if (ev->touch_event.value == 0) { keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_DELAY); // reset invert with delay enter_touch_y_pos_record = enter_touch_y_pos; enter_touch_y_pos = -1; touch_search = 0; press_delete_button = false; pre_key = NULL; if (key) { if (!touch_down_on_keyboard) { touch_down_on_keyboard = 0; touch_down_on_list = 0; goto out; } handle_search_key(key->key); } else { if (!touch_down_on_list || ev->touch_event.y < RESULT_START - RESULT_HEIGHT) { touch_down_on_keyboard = 0; touch_down_on_list = 0; goto out; } if(search_result_count()==0) goto out; //search_set_selection(last_selection); //search_open_article(last_selection); if(search_result_selected()>=0) { display_mode = DISPLAY_MODE_ARTICLE; last_display_mode = DISPLAY_MODE_INDEX; search_open_article(search_result_selected()); } } touch_down_on_keyboard = 0; touch_down_on_list = 0; } else { if(enter_touch_y_pos<0) //record first touch y pos enter_touch_y_pos = ev->touch_event.y; last_index_y_pos = ev->touch_event.y; start_search_time = ev->touch_event.ticks; last_delete_time = start_search_time; if (key) { if(key->key==8)//press "<" button { press_delete_button = true; } else if(key->key == -42) { mode = keyboard_get_mode(); if(mode == KEYBOARD_CHAR) keyboard_set_mode(KEYBOARD_NUM); else if(mode == KEYBOARD_NUM) keyboard_set_mode(KEYBOARD_CHAR); guilib_fb_lock(); keyboard_paint(); guilib_fb_unlock(); } if (!touch_down_on_keyboard && !touch_down_on_list) touch_down_on_keyboard = 1; if (pre_key && pre_key->key == key->key) goto out; if (touch_down_on_keyboard) { keyboard_key_invert(key); pre_key = key; } } else { if (!touch_down_on_keyboard && !touch_down_on_list) touch_down_on_list = 1; keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_DELAY); // reset invert with delay pre_key = NULL; if (!search_result_count()) goto out; if(touch_search == 0) { //last_search_y_pos = ev->touch_event.y; touch_search = 1; } else { if(search_result_selected()>=0 && abs(ev->touch_event.y-search_touch_pos_y_last)>5) { invert_selection(search_result_selected(),-1, RESULT_START, RESULT_HEIGHT); search_set_selection(-1); } goto out; } int new_selection; if((ev->touch_event.y - RESULT_START)<0) new_selection = -1; else new_selection = ((unsigned int)ev->touch_event.y - RESULT_START) / RESULT_HEIGHT; if (new_selection == search_result_selected()) goto out; unsigned int avail_count = keyboard_get_mode() == KEYBOARD_NONE ? NUMBER_OF_FIRST_PAGE_RESULTS : NUMBER_OF_RESULTS_KEYBOARD; avail_count = search_result_count() > avail_count ? avail_count : search_result_count(); if (new_selection >= avail_count) goto out; if (touch_down_on_keyboard) goto out; //invert_selection(search_result_selected(), new_selection, RESULT_START, RESULT_HEIGHT); invert_selection(-1, new_selection, RESULT_START, RESULT_HEIGHT); last_selection = new_selection ; search_set_selection(new_selection); search_touch_pos_y_last = ev->touch_event.y; } } } else if (display_mode == DISPLAY_MODE_HISTORY && mode == KEYBOARD_CLEAR_HISTORY) { key = keyboard_get_data(ev->touch_event.x, ev->touch_event.y); if (ev->touch_event.value == 0) { #ifdef INCLUDED_FROM_KERNEL delay_us(100000 * 2); #endif keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_NOW); enter_touch_y_pos_record = enter_touch_y_pos; enter_touch_y_pos = -1; touch_search = 0; press_delete_button = false; pre_key = NULL; if (key) { if (!touch_down_on_keyboard) { touch_down_on_keyboard = 0; touch_down_on_list = 0; goto out; } if (key->key == 'Y') { history_clear(); keyboard_set_mode(KEYBOARD_NONE); history_reload(); } else if (key->key == 'N') { keyboard_set_mode(KEYBOARD_NONE); guilib_fb_lock(); draw_clear_history(1); guilib_fb_unlock(); } } else { touch_down_on_keyboard = 0; touch_down_on_list = 0; goto out; } } else { if(enter_touch_y_pos<0) //record first touch y pos enter_touch_y_pos = ev->touch_event.y; last_index_y_pos = ev->touch_event.y; if (key) { if (!touch_down_on_keyboard) touch_down_on_keyboard = 1; if (pre_key && pre_key->key == key->key) goto out; if (touch_down_on_keyboard) { keyboard_key_invert(key); pre_key = key; } } else { touch_down_on_keyboard = 0; keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_DELAY); // reset invert with delay pre_key = NULL; } } } else if (display_mode == DISPLAY_MODE_RESTRICTED) { key = keyboard_get_data(ev->touch_event.x, ev->touch_event.y); if (ev->touch_event.value == 0) { if (key->key == 'Y' || key->key == 'N' || key->key == 'P') { #ifdef INCLUDED_FROM_KERNEL delay_us(100000 * 2); #endif keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_NOW); } else keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_DELAY); // reset invert with delay enter_touch_y_pos_record = enter_touch_y_pos; enter_touch_y_pos = -1; touch_search = 0; press_delete_button = false; pre_key = NULL; if (key) { if (!touch_down_on_keyboard) { touch_down_on_keyboard = 0; goto out; } handle_password_key(key->key); } touch_down_on_keyboard = 0; } else { if(enter_touch_y_pos<0) //record first touch y pos enter_touch_y_pos = ev->touch_event.y; last_index_y_pos = ev->touch_event.y; start_search_time = ev->touch_event.ticks; last_delete_time = start_search_time; if (key) { if(key->key==8)//press "<" button { press_delete_button = true; } else if(key->key == -42) { mode = keyboard_get_mode(); if(mode == KEYBOARD_PASSWORD_CHAR) keyboard_set_mode(KEYBOARD_PASSWORD_NUM); else if(mode == KEYBOARD_PASSWORD_NUM) keyboard_set_mode(KEYBOARD_PASSWORD_CHAR); guilib_fb_lock(); keyboard_paint(); guilib_fb_unlock(); } if (!touch_down_on_keyboard) touch_down_on_keyboard = 1; if (pre_key && pre_key->key == key->key) goto out; if (touch_down_on_keyboard) { keyboard_key_invert(key); pre_key = key; } } else { keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_NOW); pre_key = NULL; search_touch_pos_y_last = ev->touch_event.y; } } } else { if (ev->touch_event.value == 0) { unsigned long diff_ticks = 0; long diff_y = 0; for (i = 4; i > 0; i--) { if (last_5_y[i]) { diff_y = ev->touch_event.y - last_5_y[i]; diff_ticks = time_diff(ev->touch_event.ticks, last_5_y_time_ticks[i]); break; } } if (diff_ticks <= 0 || abs(article_moved_pixels) > SMOOTH_SCROLL_ACTIVATION_OFFSET_HIGH_THRESHOLD || abs(article_moved_pixels) < SMOOTH_SCROLL_ACTIVATION_OFFSET_LOW_THRESHOLD) finger_move_speed = 0; else { // Event timesing is not good for short period due to the events are queued without timestamp finger_move_speed = -(float)diff_y * ((float)seconds_to_ticks(1) / (float)diff_ticks); if (abs(finger_move_speed) > SMOOTH_SCROLL_ACTIVATION_SPPED_THRESHOLD) { if (finger_move_speed > 0) { if (display_mode == DISPLAY_MODE_ARTICLE) finger_move_speed = ARTICLE_SMOOTH_SCROLL_SPEED_FACTOR * (finger_move_speed - SMOOTH_SCROLL_ACTIVATION_SPPED_THRESHOLD); else finger_move_speed = LIST_SMOOTH_SCROLL_SPEED_FACTOR * (finger_move_speed - SMOOTH_SCROLL_ACTIVATION_SPPED_THRESHOLD); } else { if (display_mode == DISPLAY_MODE_ARTICLE) finger_move_speed = ARTICLE_SMOOTH_SCROLL_SPEED_FACTOR * (finger_move_speed + SMOOTH_SCROLL_ACTIVATION_SPPED_THRESHOLD); else finger_move_speed = LIST_SMOOTH_SCROLL_SPEED_FACTOR * (finger_move_speed + SMOOTH_SCROLL_ACTIVATION_SPPED_THRESHOLD); } } else finger_move_speed = 0; } if (finger_move_speed != 0) { time_scroll_article_last = ev->touch_event.ticks; } article_moved = false; if (finger_move_speed == 0 && b_show_scroll_bar) { b_show_scroll_bar = 0; show_scroll_bar(0); // clear scroll bar } article_scroll_pixel = INITIAL_ARTICLE_SCROLL_PIXEL; article_moved_pixels = 0; touch_y_last_unreleased = 0; start_move_time = 0; article_link_number = get_activated_article_link_number(); if(article_link_number>=0) { if (link_to_be_inverted >= 0) { if (link_currently_inverted >= 0) invert_link(link_currently_inverted); invert_link(link_to_be_inverted); } if (finger_move_speed == 0) { init_invert_link(); last_display_mode = display_mode; display_mode = DISPLAY_MODE_ARTICLE; open_article_link_with_link_number(article_link_number); } else { if (link_currently_inverted >= 0) invert_link(link_currently_inverted); init_invert_link(); } return; } reset_article_link_number(); article_touch_down_handled = 0; } else { finger_move_speed = 0; if(touch_y_last_unreleased == 0) { touch_y_last_unreleased = ev->touch_event.y; last_unreleased_time = ev->touch_event.ticks; reset_article_link_number(); article_moved_pixels = 0; last_5_y[0] = ev->touch_event.y; last_5_y_time_ticks[0] = ev->touch_event.ticks; for (i = 1; i < 5; i++) last_5_y[i] = 0; } else { article_moved_pixels += touch_y_last_unreleased - ev->touch_event.y; if(abs(touch_y_last_unreleased - ev->touch_event.y) >=article_scroll_pixel) { if (finger_move_speed == 0) display_article_with_pcf(touch_y_last_unreleased - ev->touch_event.y); touch_y_last_unreleased = ev->touch_event.y; for (i = 4; i >= 1; i--) { last_5_y[i] = last_5_y[i-1]; last_5_y_time_ticks[i] = last_5_y_time_ticks[i-1]; } last_5_y[0] = ev->touch_event.y; last_5_y_time_ticks[0] = ev->touch_event.ticks; b_show_scroll_bar = 1; article_scroll_pixel = 1; } else if (article_moved_pixels < article_scroll_pixel && time_diff(get_time_ticks(), last_unreleased_time) > seconds_to_ticks(0.075)) { article_moved_pixels = 0; touch_y_last_unreleased = ev->touch_event.y; last_unreleased_time = ev->touch_event.ticks; last_5_y[0] = ev->touch_event.y; last_5_y_time_ticks[0] = ev->touch_event.ticks; for (i = 1; i < 5; i++) last_5_y[i] = 0; } if (abs(article_moved_pixels) > ARTICLE_MOVED_THRESHOLD) { article_moved = true; reset_article_link_number(); } } if (!article_moved) { article_link_number =isArticleLinkSelected(ev->touch_event.x,ev->touch_event.y); if (article_link_number >= 0) set_article_link_number(article_link_number, ev->touch_event.ticks); else reset_article_link_number(); } if (!article_touch_down_handled) { article_touch_down_pos.x = ev->touch_event.x; article_touch_down_pos.y = ev->touch_event.y; article_touch_down_handled = 1; } } } out: return; }
static void handle_key_release(int keycode) { // static long idx_article = 0; static int first_time_random = 0; int mode; finger_move_speed = 0; keyboard_key_reset_invert(KEYBOARD_RESET_INVERT_NOW); // reset invert immediately DP(DBG_WL, ("O handle_key_release()\n")); mode = keyboard_get_mode(); if (keycode == WL_INPUT_KEY_POWER) { #ifdef INCLUDED_FROM_KERNEL if (history_list_save(HISTORY_SAVE_POWER_OFF)) { delay_us(200000); } #endif } else if (keycode == WL_INPUT_KEY_SEARCH) { article_buf_pointer = NULL; /* back to search */ if (display_mode == DISPLAY_MODE_INDEX) { toggle_soft_keyboard(); } else { search_set_selection(-1); display_mode = DISPLAY_MODE_INDEX; keyboard_set_mode(KEYBOARD_CHAR); repaint_search(); } } else if (keycode == WL_INPUT_KEY_HISTORY) { if (display_mode != DISPLAY_MODE_HISTORY) { article_buf_pointer = NULL; history_reload(); display_mode = DISPLAY_MODE_HISTORY; keyboard_set_mode(KEYBOARD_NONE); } else { if (keyboard_get_mode() == KEYBOARD_CLEAR_HISTORY) { keyboard_set_mode(KEYBOARD_NONE); guilib_fb_lock(); //keyboard_paint(); draw_clear_history(1); guilib_fb_unlock(); } else if (history_get_count() > 0) { keyboard_set_mode(KEYBOARD_CLEAR_HISTORY); guilib_fb_lock(); //keyboard_paint(); draw_clear_history(0); guilib_fb_unlock(); } } } else if (keycode == WL_INPUT_KEY_RANDOM) { if (first_time_random < 4) first_time_random++; if (first_time_random == 3) { first_time_random = 4; if (init_article_filter()) return; } article_buf_pointer = NULL; display_mode = DISPLAY_MODE_ARTICLE; last_display_mode = DISPLAY_MODE_INDEX; random_article(); } else if (display_mode == DISPLAY_MODE_INDEX) { article_buf_pointer = NULL; if (keycode == WL_KEY_RETURN) { int cur_selection = search_current_selection(); retrieve_article(cur_selection); #ifdef PROFILER_ON } else if (keycode == WL_KEY_HASH) { /* activate if you want to run performance tests */ /* perf_test(); */ malloc_status_simple(); prof_print(); #endif } else { handle_search_key(keycode); } } else if (display_mode == DISPLAY_MODE_ARTICLE) { article_buf_pointer = NULL; if (keycode == WL_KEY_BACKSPACE) { if (last_display_mode == DISPLAY_MODE_INDEX) { display_mode = DISPLAY_MODE_INDEX; repaint_search(); } else if (last_display_mode == DISPLAY_MODE_HISTORY) { display_mode = DISPLAY_MODE_HISTORY; history_reload(); } } } }
void first_time_password(int flag) { int i; unsigned char *pText; char str[256]; int width; guilib_fb_lock(); memset(&framebuffer[(BLACK_SPACE_START - 6)* LCD_VRAM_WIDTH_PIXELS / 8], 0, 6 * LCD_VRAM_WIDTH_PIXELS / 8); memset(&framebuffer[BLACK_SPACE_START * LCD_VRAM_WIDTH_PIXELS / 8], 0xFF, (LCD_HEIGHT_LINES - BLACK_SPACE_START)* LCD_VRAM_WIDTH_PIXELS / 8); framebuffer[149 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[149 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[149 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 150; i <= 168; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[169 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[169 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[169 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; if (flag) { pText = get_nls_text("protection"); width = extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 10, str, strlen(str), 1); width = extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 30, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 50, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 70, str, strlen(str), 1); } else { pText = get_nls_text("restricted"); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 10, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 30, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 50, str, strlen(str), 1); extract_str_fitting_width(&pText, str, LCD_BUF_WIDTH_PIXELS - LCD_LEFT_MARGIN, SUBTITLE_FONT_IDX); if (strlen(str)) render_string(SUBTITLE_FONT_IDX, LCD_LEFT_MARGIN, BLACK_SPACE_START + 70, str, strlen(str), 1); } pText = get_nls_text("set_password"); render_string(SUBTITLE_FONT_IDX, -1, 151, pText, strlen(pText), 0); guilib_fb_unlock(); display_mode = DISPLAY_MODE_RESTRICTED; keyboard_set_mode(KEYBOARD_RESTRICTED); restricted_screen_mode = RESTRICTED_SCREEN_FIRST_TIME_PASSWORD; }
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; } }
void filter_option(void) { int i; unsigned char *pText; display_mode = DISPLAY_MODE_RESTRICTED; keyboard_set_mode(KEYBOARD_FILTER_OPTION); restricted_screen_mode = RESTRICTED_SCREEN_FILTER_OPTION; guilib_fb_lock(); memset(&framebuffer[(BLACK_SPACE_START - 6)* LCD_VRAM_WIDTH_PIXELS / 8], 0, 6 * LCD_VRAM_WIDTH_PIXELS / 8); memset(&framebuffer[BLACK_SPACE_START * LCD_VRAM_WIDTH_PIXELS / 8], 0xFF, (LCD_HEIGHT_LINES - BLACK_SPACE_START)* LCD_VRAM_WIDTH_PIXELS / 8); pText = get_nls_text("filter_options"); render_string(TITLE_FONT_IDX, -1, 60, pText, strlen(pText), 1); framebuffer[106 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[106 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[106 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 107; i <= 126; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[127 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[127 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[127 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[135 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 136; i <= 155; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[156 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[164 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; for (i = 165; i <= 185; i++) { framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xF8; memset(&framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[i * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x1F; } framebuffer[186 * LCD_VRAM_WIDTH_PIXELS / 8 + 1] = 0xFC; memset(&framebuffer[186 * LCD_VRAM_WIDTH_PIXELS / 8 + 2], 0, 26); framebuffer[186 * LCD_VRAM_WIDTH_PIXELS / 8 + 28] = 0x3F; pText = get_nls_text("turn_filter_on"); render_string(SUBTITLE_FONT_IDX, -1, 108, pText, strlen(pText), 0); pText = get_nls_text("turn_filter_off"); render_string(SUBTITLE_FONT_IDX, -1, 137, pText, strlen(pText), 0); pText = get_nls_text("change_password"); render_string(SUBTITLE_FONT_IDX, -1, 166, pText, strlen(pText), 0); guilib_fb_unlock(); keyboard_set_mode(KEYBOARD_FILTER_OPTION); }
static uint8_t model_ip_edit (char *name, float x, float y, int8_t button, float data, uint8_t action) { keyboard_set_callback(model_ip_set); keyboard_set_text(ModelData[ModelActive].netip); keyboard_set_mode(setup.view_mode); return 0; }