forked from KolibriOS/kolibrios
Box_Lib - FileBrowser search for a file by the first letter
git-svn-id: svn://kolibrios.org@3830 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5216d87d96
commit
c2cdcf0144
@ -1,6 +1,6 @@
|
||||
;*****************************************************************************
|
||||
; File Browser control for Kolibri OS
|
||||
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
|
||||
; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
@ -87,13 +87,15 @@ fb_mouse_keys_tick equ dword [edi+162] ;dword
|
||||
fb_start_draw_cursor_line_2 equ word [edi+166] ;dword
|
||||
fb_all_redraw equ dword [edi+168] ;dword
|
||||
fb_selected_BDVK_adress equ dword [edi+172] ;dword
|
||||
fb_key_action equ dword [edi+176] ;dword
|
||||
fb_key_action equ word [edi+176] ;word
|
||||
fb_key_action_num equ word [edi+178] ;word
|
||||
fb_name_temp_area equ dword [edi+180] ;dword
|
||||
fb_max_name_temp_size equ dword [edi+184] ;dword
|
||||
fb_display_name_max_length equ dword [edi+188] ;dword
|
||||
fb_draw_panel_selection_flag equ dword [edi+192] ;dword
|
||||
fb_mouse_pos_old equ dword [edi+196] ;dword
|
||||
fb_marked_counter equ dword [edi+200] ;dword
|
||||
fb_keymap_pointer equ dword [edi+204] ;dword
|
||||
;---------------------------------------------------------------------
|
||||
fb_draw_panel:
|
||||
pusha
|
||||
@ -182,7 +184,7 @@ fb_draw_panel_selection:
|
||||
mov fb_start_draw_cursor_line,cx
|
||||
mov ebx,fb_size_x
|
||||
add cx,fb_start_y
|
||||
.1:
|
||||
;.1:
|
||||
shl ecx,16
|
||||
mov cx,fb_line_size_y
|
||||
mov edx,fb_select_color
|
||||
@ -1134,13 +1136,15 @@ fb_prepare_selected_BDVK_adress:
|
||||
; 9 - Mark All
|
||||
; 10 - Unmark All
|
||||
; 11 - Invert Mark
|
||||
; 12 - Search with key
|
||||
;*****************************************************************************
|
||||
;*****************************************************************************
|
||||
fb_key:
|
||||
pusha
|
||||
mov edi,dword [esp+36]
|
||||
;-------------------------------------------------------
|
||||
mov eax,fb_key_action
|
||||
xor eax,eax
|
||||
mov ax,fb_key_action
|
||||
shl eax,2
|
||||
add eax,dword fb_key_table
|
||||
cmp eax,fb_key_table.end
|
||||
@ -1396,6 +1400,115 @@ fb_key:
|
||||
mov fb_temp_counter,2
|
||||
jmp .mark_all_1
|
||||
;-------------------------------------------------------
|
||||
; * bit 0 (mask 1): left Shift is pressed
|
||||
; * bit 1 (mask 2): right Shift is pressed
|
||||
; * bit 2 (mask 4): left Ctrl is pressed
|
||||
; * bit 3 (mask 8): right Ctrl is pressed
|
||||
; * bit 4 (mask 0x10): left Alt is pressed
|
||||
; * bit 5 (mask 0x20): right Alt is pressed
|
||||
; * bit 6 (mask 0x40): CapsLock is on
|
||||
; * bit 7 (mask 0x80): NumLock is on
|
||||
; * bit 8 (mask 0x100): ScrollLock is on
|
||||
; * bit 9 (mask 0x200): left Win is pressed
|
||||
; * bit 10 (mask 0x400): right Win is pressed
|
||||
;-------------------------------------------------------
|
||||
.search_with_key:
|
||||
mcall 66,3
|
||||
test al,11b
|
||||
jnz .shift_layout
|
||||
|
||||
test al,110000b
|
||||
jnz .alt_layout
|
||||
|
||||
mov ecx,1 ; Normal
|
||||
jmp .get_keyboard_layout
|
||||
|
||||
.shift_layout:
|
||||
mov ecx,2 ; Shift
|
||||
jmp .get_keyboard_layout
|
||||
|
||||
.alt_layout:
|
||||
mov ecx,3 ; Alt
|
||||
.get_keyboard_layout:
|
||||
mcall 26,2,,fb_keymap_pointer
|
||||
xor eax,eax
|
||||
mov ax,fb_key_action_num
|
||||
add eax,fb_keymap_pointer
|
||||
mov al,[eax]
|
||||
and eax,0xff
|
||||
call fb_char_todown
|
||||
mov ah,al
|
||||
xor esi,esi
|
||||
push eax
|
||||
movzx eax,fb_start_draw_cursor_line
|
||||
movzx ebx,fb_line_size_y
|
||||
xor edx,edx
|
||||
div ebx
|
||||
add si,ax ;fb_start_draw_cursor_line
|
||||
pop eax
|
||||
add esi,fb_start_draw_line
|
||||
mov ecx,esi
|
||||
xor ebx,ebx
|
||||
inc ecx
|
||||
cmp ecx,fb_folder_block
|
||||
ja .reset_data
|
||||
|
||||
.first_entry:
|
||||
imul esi,304
|
||||
add esi,fb_folder_data
|
||||
add esi,40+32
|
||||
@@:
|
||||
add esi,304
|
||||
mov al,[esi]
|
||||
call fb_char_todown
|
||||
cmp ah,al
|
||||
je .match
|
||||
|
||||
inc ecx
|
||||
cmp ecx,fb_folder_block
|
||||
jb @b
|
||||
|
||||
.reset_data:
|
||||
xor esi,esi
|
||||
|
||||
dec esi
|
||||
cmp ebx,2
|
||||
jae .exit_fb
|
||||
|
||||
xor ecx,ecx
|
||||
inc ebx
|
||||
jmp .first_entry
|
||||
|
||||
.match:
|
||||
mov fb_start_draw_line,ecx
|
||||
mov eax,fb_folder_block
|
||||
mov ebx,fb_max_panel_line
|
||||
sub eax,ebx
|
||||
jbe .1
|
||||
|
||||
cmp eax,ecx
|
||||
jbe @f
|
||||
|
||||
xor ecx,ecx
|
||||
jmp .2
|
||||
@@:
|
||||
mov fb_start_draw_line,eax
|
||||
mov eax,fb_folder_block
|
||||
sub eax,ecx
|
||||
|
||||
mov ecx,fb_max_panel_line
|
||||
sub ecx,eax
|
||||
jmp .2
|
||||
|
||||
.1:
|
||||
xor eax,eax
|
||||
mov fb_start_draw_line,eax
|
||||
.2:
|
||||
movzx eax,fb_line_size_y
|
||||
imul ecx,eax
|
||||
mov fb_start_draw_cursor_line,cx
|
||||
call fb_draw_panel_2
|
||||
;-------------------------------------------------------
|
||||
.exit_fb:
|
||||
call fb_prepare_selected_BDVK_adress
|
||||
file_browser_exit
|
||||
@ -1413,19 +1526,20 @@ fb_key_table:
|
||||
dd fb_key.mark_all ; 9
|
||||
dd fb_key.unmark_all ; 10
|
||||
dd fb_key.invert_mark ; 11
|
||||
dd fb_key.search_with_key ; 12
|
||||
.end:
|
||||
dd 0
|
||||
;-------------------------------------------------------
|
||||
fb_draw_panel_3:
|
||||
mov eax,2
|
||||
mov fb_all_redraw,eax
|
||||
jmp @f
|
||||
jmp fb_draw_panel_2.1
|
||||
fb_draw_panel_2:
|
||||
xor eax,eax
|
||||
inc eax
|
||||
mov fb_all_redraw,eax
|
||||
call fb_draw_panel_selection
|
||||
@@:
|
||||
.1:
|
||||
call fb_draw_folder_data
|
||||
xor eax,eax
|
||||
mov fb_all_redraw,eax
|
||||
|
Loading…
Reference in New Issue
Block a user