KFM - display the date of creation, change, and access on the window of properties file/directory (Alt + Enter)

git-svn-id: svn://kolibrios.org@3833 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2013-07-24 19:54:47 +00:00
parent ab10e61dba
commit b055f3351c
4 changed files with 609 additions and 459 deletions

View File

@ -2,9 +2,35 @@
align 4
files_counter rd 1
directories_counter rd 1
files_size:
.low rd 1
.high rd 1
;Ôîđěŕň âđĺěĺíč:
; * +0: byte: ńĺęóíäű
; * +1: byte: ěčíóňű
; * +2: byte: ÷ŕńű
; * +3: byte: çŕđĺçĺđâčđîâŕíî (0)
; * íŕďđčěĺđ, 23.59.59 çŕďčńűâŕĺňń˙ ęŕę (â hex) 3B 3B 17 00
time:
.create:
rd 1
.access:
rd 1
.change:
rd 1
;Ôîđěŕň äŕňű:
; * +0: byte: äĺíü
; * +1: byte: ěĺń˙ö
; * +2: word: ăîä
; * íŕďđčěĺđ, 25.11.1979 çŕďčńűâŕĺňń˙ ęŕę (â hex) 19 0B BB 07
date:
.create:
rd 1
.access:
rd 1
.change:
rd 1
;---------------------------------------------------------------------
open_param rd 1
;---------------------------------------------------------------------
@ -90,14 +116,12 @@ align 4
left_start_draw_line rd 1
left_folder_block rd 1
left_start_draw_cursor_line rw 1
;left_panel_clear_all rb 1
left_folder_block_1 rd 1
;---------------------------------------------------------------------
align 4
right_start_draw_line rd 1
right_folder_block rd 1
right_start_draw_cursor_line rw 1
;right_panel_clear_all rb 1
right_folder_block_1 rd 1
;---------------------------------------------------------------------
align 4
@ -197,10 +221,6 @@ type_name:
rb 512
;---------------------------------------------------------------------
align 4
type_size_string:
rb 32
;---------------------------------------------------------------------
align 4
type_files_string:
rb 16
;---------------------------------------------------------------------

View File

@ -6,14 +6,11 @@ files_information:
mov [files_size.low],eax
mov [files_size.high],eax
call get_files_information
mov eax,files_size
mov ebx,type_size_string
call decimal_string_20
call start_files_information_thread
jmp still
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
start_files_information_thread:
mcall 9, procinfo, -1
mcall 9,procinfo,-1
mov eax,[ebx+46]
shr eax,1
add eax,[ebx+38]
@ -26,135 +23,175 @@ start_files_information_thread:
mov [files_information_window_x+2],ax
mcall 51,1,thread_files_information_start,thread_stack
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
draw_files_information_window:
mcall 12, 1
mcall 0,[files_information_window_x] ,[files_information_window_y], 0x03ffffcc
mov edx,90 shl 16+50
mov ebx,0xa0000
mcall 12,1
mcall 0,[files_information_window_x],[files_information_window_y],0x03ffffcc
mov edx,100 shl 16+50
mov ebx,0x800a0000
mov esi,0x10000000
cmp [inf_marked_yes],1
je .continue_4
cmp [nesting_direction],1
je @f
add edx,15
;--------------------------------------
.continue_4:
mcall 47, ,[files_counter]
; show files counter
mcall 47,,[files_counter]
;--------------------------------------
@@:
cmp [inf_marked_yes],1
je .continue_2
cmp [nesting_direction],0
je .continue_2
cmp [directories_counter],0
je @f
;--------------------------------------
.continue_2:
; show directories counter
add edx,15
mcall 47, ,[directories_counter]
mcall ,,[directories_counter]
;--------------------------------------
@@:
; show file or directory size
add edx,15
mov ebx,edx
mcall 4, ,0x90000000,type_size_string
mcall 47,0x80140001,files_size
;--------------------------------------
mov ebp,date.create
call show_date_and_time_of_files_information
;--------------------------------------
mov ebp,date.change
call show_date_and_time_of_files_information
;--------------------------------------
mov ebp,date.access
call show_date_and_time_of_files_information
;--------------------------------------
cmp [select_panel_counter],0
jne .right_1
mov edx,read_folder_name
jmp @f
;--------------------------------------
.right_1:
mov edx,read_folder_1_name
;--------------------------------------
@@:
mcall 4,<75,35>,0x80000000, ;file_name
mcall 4,<10,35>,0x90000000,type_location
mcall ,<10,35>,0x90000000,type_location
cmp [inf_marked_yes],1
je .continue
mcall 4,<90,50>,0x80000000,type_name
mcall ,<90,50>,0x80000000,type_name
mov ecx,0x90000000
cmp [nesting_direction],1
je @f
mcall 4,<10,50>, ,type_dir_name
mcall ,<10,50>,,type_dir_name
jmp .continue
;--------------------------------------
@@:
mcall 4,<10,50>, ,type_file_name
mcall ,<10,50>,,type_file_name
;--------------------------------------
.continue:
cmp [inf_marked_yes],1
je .continue_3
cmp [nesting_direction],1
je @f
;--------------------------------------
.continue_3:
add ebx,15
mcall 4, , ,type_files
mcall ,,,type_files
;--------------------------------------
@@:
cmp [inf_marked_yes],1
je .continue_1
cmp [nesting_direction],0
je .continue_1
cmp [directories_counter],0
je @f
;--------------------------------------
.continue_1:
add ebx,15
mcall 4, , ,type_dir
mcall ,,,type_dir
;--------------------------------------
@@:
add ebx,15
mcall 4, , ,type_size
mcall 12, 2
mcall ,,,type_size
add ebx,15
mcall ,,,type_create
add ebx,15
mcall ,,,type_change
add ebx,15
mcall ,,,type_access
sub ebx,30
add ebx,107 shl 16
mcall ,,0x80000000,type_limiters_data_time
add ebx,15
mcall
add ebx,15
mcall
mcall 12,2
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
show_date_and_time_of_files_information:
; show date
add edx,15
push edx
movzx ecx,byte [ebp+0]
mcall ,0x00020000
add edx,24 shl 16
movzx ecx,byte [ebp+1]
mcall
add edx,23 shl 16
movzx ecx,word [ebp+2]
mcall ,0x00040000
sub ebp,12
; show time
add edx,37 shl 16
movzx ecx,byte [ebp+2]
mcall ,0x00020000
add edx,24 shl 16
movzx ecx,byte [ebp+1]
mcall
add edx,23 shl 16
movzx ecx,byte [ebp+0]
mcall
pop edx
ret
;------------------------------------------------------------------------------
thread_files_information_start:
.red:
call draw_files_information_window
;--------------------------------------
.still:
mcall 10
cmp eax,1
je .red
cmp eax,2
je .key
cmp eax,3
je .button
jmp .still
;--------------------------------------
.key:
mcall 2
;--------------------------------------
.button:
mcall -1
jmp .still
;---------------------------------------------------------------------
; ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ
; Âõîä:
; EAX - óêàçàòåëü íà ÷èñëî
; EBX - àäðåñ ñòðîêè
;---------------------------------------------------------------------
decimal_string_20:
push eax ebx ecx edx
mov [divisor],word 10
mov ebp,eax
xor ecx,ecx
; mov [ebx],byte '0'
; inc ebx
.p3:
xor edx,edx
push ebx
call Division_64bit
mov eax,[quotent]
mov [ebp],eax
mov eax,[quotent+4]
mov [ebp+4],eax
pop ebx
add edx,48
push edx
inc ecx
cmp [ebp],dword 0
jne .p3
cmp [ebp+4],dword 0
jne .p3
cmp ecx,19
jbe .p4
mov ecx,20
dec ebx
.p4:
pop edx
mov [ebx],dl
inc ebx
loop .p4
mov [ebx], byte 0
pop edx ecx ebx eax
ret
;----------------------------------------------------------
;------------------------------------------------------------------------------
; äåëåíèå 64-áèòíîãî ÷èñëà divident íà 16-áèòíîå ÷èñëî divisor.
; ×àñòíîå ïîìåùàåòñÿ â 64-áèòíóþ ïåðåìåííóþ quotent,
; à îñòàòîê - â 16-áèòíóþ ïåðåìåííóþ modulo
@ -175,7 +212,7 @@ Division_64bit:
mov [quotent],ax
; mov [modulo],dx
ret
;--------------------------------------
;divident:
; rb 8
divisor:
@ -184,28 +221,32 @@ quotent:
rb 8
;modulo:
; rb 2
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
copy_type_name:
push esi
mov esi,ebx
mov edi,type_name
@@:
cld
;--------------------------------------
@@:
lodsb
stosb
test al,al
jnz @b
pop esi
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_files_information:
call get_information_marked_files
cmp [inf_marked_yes],1
je .end_2
xor eax,eax
xor edx,edx
cmp [select_panel_counter],0
jne .right_1
mov ax,[left_start_draw_cursor_line]
mov ebx,10
div ebx
@ -216,6 +257,7 @@ get_files_information:
call prepare_data_8
mov esi,read_folder_name
jmp .end
;--------------------------------------
.right_1:
mov ax,[right_start_draw_cursor_line]
mov ebx,10
@ -226,42 +268,73 @@ get_files_information:
add ebx,[right_folder_data]
call prepare_data_8
mov esi,read_folder_1_name
;--------------------------------------
.end:
mov [error_pointer],ebx
;--------------------------------------
push eax ebx
sub ebx,40
; âðåìÿ ñîçäàíèÿ ôàéëà
mov eax,[ebx+8]
mov [time.create],eax
; äàòà ñîçäàíèÿ ôàéëà
mov eax,[ebx+12]
mov [date.create],eax
; âðåìÿ ïîñëåäíåãî äîñòóïà (÷òåíèå èëè çàïèñü)
mov eax,[ebx+16]
mov [time.access],eax
; äàòà ïîñëåäíåãî äîñòóïà
mov eax,[ebx+20]
mov [date.access],eax
; âðåìÿ ïîñëåäíåé ìîäèôèêàöèè
mov eax,[ebx+24]
mov [time.change],eax
; äàòà ïîñëåäíåé ìîäèôèêàöèè
mov eax,[ebx+28]
mov [date.change],eax
pop ebx eax
;--------------------------------------
call copy_type_name
mov edi,file_name
call copy_path_1
test [ebx-40],byte 0x10
jz @f
push eax ebx
call get_inf_dir
mov [nesting_direction],0
pop ebx eax
dec [directories_counter]
jmp .end_2
;--------------------------------------
@@:
mov [nesting_direction],1
call get_file_size
test eax,eax
jz .end_1
call start_error_window_thread
add esp,4
jmp reload_dir_all
;--------------------------------------
.end_1:
; inc [files_counter]
mov eax,[file_features_temp_area+32]
add [files_size.low],eax
mov eax,[file_features_temp_area+32+4]
adc [files_size.high],eax
;--------------------------------------
.end_2:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_information_marked_files:
xor eax,eax
mov [inf_marked_yes],al
cmp [select_panel_counter],al
jne .right_1
mov ebp,[left_folder_block]
;--------------------------------------
.start:
mov ebx,ebp
dec ebx
@ -270,21 +343,29 @@ get_information_marked_files:
add ebx,32+40
cmp [ebx+299-40],byte 0
je @f
cmp [ebx],word '..'
jne .continue
cmp [ebx+2],byte 0
je .continue_1
;--------------------------------------
.continue:
mov esi,read_folder_name
call prepare_data_9
;--------------------------------------
.continue_1:
mov [inf_marked_yes],1
;--------------------------------------
@@:
dec ebp
jnz .start
ret
;--------------------------------------
.right_1:
mov ebp,[right_folder_block]
;--------------------------------------
.start_1:
mov ebx,ebp
dec ebx
@ -293,72 +374,89 @@ get_information_marked_files:
add ebx,32+40
cmp [ebx+299-40],byte 0
je @f
cmp [ebx],word '..'
jne .continue_2
cmp [ebx+2],byte 0
je .continue_3
;--------------------------------------
.continue_2:
mov esi,read_folder_1_name
call prepare_data_9
;--------------------------------------
.continue_3:
mov [inf_marked_yes],1
;--------------------------------------
@@:
dec ebp
jnz .start_1
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
prepare_data_9:
mov [error_pointer],ebx
mov edi,file_name
call copy_path_1
test [ebx-40],byte 0x10
jz @f
call get_inf_dir
ret
;--------------------------------------
@@:
inc [files_counter]
call get_file_size
test eax,eax
jz .continue
call start_error_window_thread
add esp,8+4
ret
;--------------------------------------
.continue:
mov eax,[file_features_temp_area+32]
add [files_size.low],eax
mov eax,[file_features_temp_area+32+4]
adc [files_size.high],eax
;--------------------------------------
.continue_1:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
prepare_data_8:
add ebx,32+40
cmp [ebx],word '..'
jne .continue
cmp [ebx+2],byte 0
jne .continue
add esp,4+4
jmp reload_dir
;--------------------------------------
.continue:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_inf_dir:
mov [nesting_direction],0
pusha
mov [recursive_pointer],0
mov eax,[appl_memory]
mov [appl_memory_old],eax
;--------------------------------------
.1:
mov [read_delete_dir_data.size],0
mov [read_delete_dir_data.return],delete_dir_data
call read_delete_dir
test eax,eax
jz @f
mov [error_pointer],file_name
call start_error_window_thread
popa
add esp,8+8
ret
;--------------------------------------
@@:
mov eax,[delete_dir_data+8]
imul eax,304
@ -367,10 +465,12 @@ get_inf_dir:
add ebx,[appl_memory_old]
cmp ebx,[appl_memory]
jbe @f
mov ecx,[appl_memory]
mov ecx,ebx
mov [appl_memory],ecx
mcall 64,1
;--------------------------------------
@@:
mov eax,[delete_dir_data+8]
mov [read_delete_dir_data.size],eax
@ -379,48 +479,59 @@ get_inf_dir:
call read_delete_dir
test eax,eax
jz @f
mov [error_pointer],file_name
call start_error_window_thread
popa
add esp,8+8
ret
;--------------------------------------
@@:
cmp [nesting_direction],0
je @f
call get_inf_dir_2
jnc .end
dec ebp
push ebp
jmp .1
;--------------------------------------
@@:
call get_inf_dir_1
jnc .end
dec ebp
push ebp
jmp .1
;--------------------------------------
.end:
call return_delete_path
dec [recursive_pointer]
cmp [recursive_pointer],0
jge .1
mov ecx,[appl_memory_old]
cmp [appl_memory],ecx
je @f
mov [appl_memory],ecx
mcall 64,1
;--------------------------------------
@@:
popa
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_inf_dir_2:
pop eax
pop ebp
push eax
jmp get_inf_dir_1.start
;--------------------------------------
get_inf_dir_1:
inc [directories_counter]
mov ebp,[appl_memory_old]
mov ebp,[ebp+8]
;--------------------------------------
.start:
mov ebx,ebp
dec ebx
@ -429,21 +540,27 @@ get_inf_dir_1:
add ebx,32+40
cmp [ebx],byte '.'
jne @f
cmp [ebx+1],byte 0
je .continue_4
;--------------------------------------
@@:
cmp [ebx],word '..'
jne .continue
cmp [ebx+2],byte 0
je .continue_4
;--------------------------------------
.continue:
mov esi,file_name
inc [recursive_pointer]
call copy_path_2
test [ebx-40],byte 0x10
jnz .continue_3
;--------------------------------------
@@:
inc [files_counter]
;--------------------------------------
.continue_1:
mov eax,[ebx+32-40]
add [files_size.low],eax
@ -453,23 +570,24 @@ get_inf_dir_1:
call return_delete_path
dec ebp
jnz .start
;--------------------------------------
.continue_4:
clc
mov [nesting_direction],1
ret
;--------------------------------------
.continue_3:
stc
mov [nesting_direction],0
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
;type_patch_test:
; pusha
; mcall 5,200
; mcall 13,<290,300>,<3,13>,0x0
; mcall 4,<300, 5>,0x80FFFFFF,file_name ;[error_pointer]
; mcall 47,0x160100,[recursive_pointer],<300, 5>,0xffffff
; mcall 47,0x160100,ebp,<300, 5>,0xffffff
; mcall 4,<300,5>,0x80FFFFFF,file_name ;[error_pointer]
; mcall 47,0x160100,[recursive_pointer],<300,5>,0xffffff
; mcall 47,0x160100,ebp,<300,5>,0xffffff
; mcall 5,1
; popa
; ret
@ -478,4 +596,4 @@ get_inf_dir_1:
;temp_value_3 db '3',0
;temp_value_4 db '4',0
;temp_value_5 db '5',0
;---------------------------------------------------------------------
;------------------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
;*****************************************************************************
; KFM - Kolibri File Manager
; Copyright (c) 2006 - 2012, Marat Zakiyanov aka Mario79, aka Mario
; Copyright (c) 2006 - 2013, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
@ -25,7 +25,7 @@
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;*****************************************************************************
; KFM v0.47e 16.04.2012
; KFM v0.47g 24/07/2013
;---------------------------------------------------------------------
use32
org 0x0

View File

@ -1,4 +1,4 @@
header_text db 'Kolibri File Manager v0.47f 04/07/2013',0
header_text db 'Kolibri File Manager v0.47g 24/07/2013',0
;---------------------------------------------------------------------
fbutton_name:
.f1 db '1 Help',0
@ -155,11 +155,23 @@ type_files:
db 'Files:',0
;---------------------------------------------------------------------
type_dir:
db 'Dir.:',0
db 'Directories:',0
;---------------------------------------------------------------------
type_size:
db 'Size:',0
;---------------------------------------------------------------------
type_create:
db 'Create date:',0
;---------------------------------------------------------------------
type_change:
db 'Change date:',0
;---------------------------------------------------------------------
type_access:
db 'Access date:',0
;---------------------------------------------------------------------
type_limiters_data_time:
db '/ / : :',0
;---------------------------------------------------------------------
mouse_left_panel:
db 'Left ',0
mouse_right_panel:
@ -191,8 +203,8 @@ background_tile:
background_stretch:
db '\S '
;---------------------------------------------------------------------
files_information_window_x: dd 100 shl 16 + 250
files_information_window_y: dd 100 shl 16 + 300
files_information_window_x: dd 100 shl 16 + 300
files_information_window_y: dd 100 shl 16 + 200
;---------------------------------------------------------------------
error_window_x: dd 100 shl 16 + 250
error_window_y: dd 100 shl 16 + 80