Subversion Repositories Kolibri OS

Rev

Rev 9732 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1792 yogev_ezra 1
files_information:
3833 mario79 2
	xor	eax,eax
3
	mov	[alt_flag],al
4
	mov	[files_counter],eax
5
	mov	[directories_counter],eax
6
	mov	[files_size.low],eax
7
	mov	[files_size.high],eax
8
	call	get_files_information
9
	call	start_files_information_thread
10
	jmp	still
11
;------------------------------------------------------------------------------
1792 yogev_ezra 12
start_files_information_thread:
3833 mario79 13
	mcall	9,procinfo,-1
14
	mov	eax,[ebx+46]
15
	shr	eax,1
16
	add	eax,[ebx+38]
9464 leency 17
	sub	eax,INF_WINH/2
3833 mario79 18
	mov	[files_information_window_y+2],ax
19
	mov	eax,[ebx+42]
20
	shr	eax,1
21
	add	eax,[ebx+34]
9464 leency 22
	sub	eax,INF_WINW/2
3833 mario79 23
	mov	[files_information_window_x+2],ax
24
	mcall	51,1,thread_files_information_start,thread_stack
25
	ret
26
;------------------------------------------------------------------------------
1792 yogev_ezra 27
draw_files_information_window:
3833 mario79 28
	mcall	12,1
9464 leency 29
	mcall	0,[files_information_window_x],[files_information_window_y],0x33ffffcc,,infowin_title
30
	mov	edx,INF_DATAX shl 16+INF_DATAY+INF_LINEH
3833 mario79 31
	mov	ebx,0x800a0000
32
	mov	esi,0x10000000
33
	cmp	[inf_marked_yes],1
34
	je	.continue_4
35
 
36
	cmp	[nesting_direction],1
37
	je	@f
38
 
9464 leency 39
	add	edx,INF_LINEH
3833 mario79 40
;--------------------------------------
1792 yogev_ezra 41
.continue_4:
3833 mario79 42
; show files counter
43
	mcall	47,,[files_counter]
44
;--------------------------------------
1792 yogev_ezra 45
@@:
3833 mario79 46
	cmp	[inf_marked_yes],1
47
	je	.continue_2
48
 
49
	cmp	[nesting_direction],0
50
	je	.continue_2
51
 
52
	cmp	[directories_counter],0
53
	je	@f
54
;--------------------------------------
1792 yogev_ezra 55
.continue_2:
3833 mario79 56
; show directories counter
9464 leency 57
	add	edx,INF_LINEH
3833 mario79 58
	mcall	,,[directories_counter]
59
;--------------------------------------
1792 yogev_ezra 60
@@:
3833 mario79 61
; show file or directory size
9464 leency 62
	add	edx,INF_LINEH
9691 sober_dev 63
	mcall	47,0xc0140001,files_size
3833 mario79 64
;--------------------------------------
65
	mov	ebp,date.create
66
	call	show_date_and_time_of_files_information
67
;--------------------------------------
68
	mov	ebp,date.change
69
	call	show_date_and_time_of_files_information
70
;--------------------------------------
71
	mov	ebp,date.access
72
	call	show_date_and_time_of_files_information
73
;--------------------------------------
74
	cmp	[select_panel_counter],0
75
	jne	.right_1
76
 
77
	mov	edx,read_folder_name
78
	jmp	@f
79
;--------------------------------------
1792 yogev_ezra 80
.right_1:
3833 mario79 81
	mov	edx,read_folder_1_name
82
;--------------------------------------
1792 yogev_ezra 83
@@:
9464 leency 84
	mcall	4,,0x90000000,	;file_name
85
	mcall	,<10,INF_DATAY>,0x90000000,type_location
3833 mario79 86
	cmp	[inf_marked_yes],1
87
	je	.continue
88
 
9464 leency 89
	mcall	,,0x90000000,type_name
3833 mario79 90
	mov	ecx,0x90000000
91
	cmp	[nesting_direction],1
92
	je	@f
93
 
9464 leency 94
	mcall	,<10,INF_DATAY+INF_LINEH>,,type_dir_name
3833 mario79 95
	jmp	.continue
96
;--------------------------------------
1792 yogev_ezra 97
@@:
9464 leency 98
	mcall	,<10,INF_DATAY+INF_LINEH>,,type_file_name
3833 mario79 99
;--------------------------------------
1792 yogev_ezra 100
.continue:
3833 mario79 101
	cmp	[inf_marked_yes],1
102
	je	.continue_3
103
 
104
	cmp	[nesting_direction],1
105
	je	@f
106
;--------------------------------------
1792 yogev_ezra 107
.continue_3:
9464 leency 108
	add	ebx,INF_LINEH
3833 mario79 109
	mcall	,,,type_files
110
;--------------------------------------
1792 yogev_ezra 111
@@:
3833 mario79 112
	cmp	[inf_marked_yes],1
113
	je	.continue_1
114
 
115
	cmp	[nesting_direction],0
116
	je	.continue_1
117
 
118
	cmp	[directories_counter],0
119
	je	@f
120
;--------------------------------------
1792 yogev_ezra 121
.continue_1:
9464 leency 122
	add	ebx,INF_LINEH
3833 mario79 123
	mcall	,,,type_dir
124
;--------------------------------------
1792 yogev_ezra 125
@@:
9464 leency 126
	add	ebx,INF_LINEH
3833 mario79 127
	mcall	,,,type_size
9464 leency 128
	add	ebx,INF_LINEH
3833 mario79 129
	mcall	,,,type_create
9464 leency 130
	add	ebx,INF_LINEH
3833 mario79 131
	mcall	,,,type_change
9464 leency 132
	add	ebx,INF_LINEH
3833 mario79 133
	mcall	,,,type_access
9464 leency 134
	sub	ebx,INF_LINEH*2
135
	add	ebx,115 shl 16
136
	mcall	,,0x90000000,type_limiters_data_time
137
	add	ebx,INF_LINEH
3833 mario79 138
	mcall
9464 leency 139
	add	ebx,INF_LINEH
3833 mario79 140
	mcall
141
 
142
	mcall	12,2
143
	ret
144
;------------------------------------------------------------------------------
145
show_date_and_time_of_files_information:
146
; show date
9464 leency 147
	add	edx,INF_LINEH
3833 mario79 148
	push	edx
149
	movzx	ecx,byte [ebp+0]
150
	mcall	,0x00020000
9464 leency 151
	add	edx,23 shl 16
3833 mario79 152
	movzx	ecx,byte [ebp+1]
153
	mcall
154
	add	edx,23 shl 16
155
	movzx	ecx,word [ebp+2]
156
	mcall	,0x00040000
157
	sub	ebp,12
158
; show time
9464 leency 159
	add	edx,41 shl 16
3833 mario79 160
	movzx	ecx,byte [ebp+2]
161
	mcall	,0x00020000
162
	add	edx,24 shl 16
163
	movzx	ecx,byte [ebp+1]
164
	mcall
165
	add	edx,23 shl 16
166
	movzx	ecx,byte [ebp+0]
167
	mcall
168
	pop	edx
169
	ret
170
;------------------------------------------------------------------------------
1792 yogev_ezra 171
thread_files_information_start:
172
.red:
3833 mario79 173
	call	draw_files_information_window
174
;--------------------------------------
1792 yogev_ezra 175
.still:
3833 mario79 176
	mcall	10
177
	cmp	eax,1
178
	je	.red
179
 
180
	cmp	eax,2
181
	je	.key
182
 
183
	cmp	eax,3
184
	je	.button
185
 
186
	jmp	.still
187
;--------------------------------------
1792 yogev_ezra 188
.key:
3833 mario79 189
	mcall	2
190
;--------------------------------------
1792 yogev_ezra 191
.button:
3833 mario79 192
	mcall	-1
193
	jmp	.still
194
;------------------------------------------------------------------------------
1792 yogev_ezra 195
; деление 64-битного числа divident на 16-битное число divisor.
196
; Частное помещается в 64-битную переменную quotent,
197
; а остаток - в 16-битную переменную modulo
198
Division_64bit:
3833 mario79 199
    	mov	ax,[ebp+6]
200
    	xor	dx,dx
201
    	mov	bx,[divisor]
202
	div	bx
203
    	mov	[quotent+6],ax
204
    	mov	ax,[ebp+4]
205
	div	bx
206
    	mov	[quotent+4],ax
207
    	mov	ax,[ebp+2]
208
	div	bx
209
    	mov	[quotent+2],ax
210
    	mov	ax,[ebp]
211
	div	bx
212
    	mov	[quotent],ax
213
;    	mov	[modulo],dx
1792 yogev_ezra 214
        ret
3833 mario79 215
;--------------------------------------
1792 yogev_ezra 216
;divident:
217
;      rb 8
218
divisor:
219
      rb 2
220
quotent:
221
      rb 8
222
;modulo:
223
;      rb 2
3833 mario79 224
;------------------------------------------------------------------------------
1792 yogev_ezra 225
copy_type_name:
3833 mario79 226
	push	esi
227
	mov	esi,ebx
228
	mov	edi,type_name
229
	cld
230
;--------------------------------------
1792 yogev_ezra 231
@@:
3833 mario79 232
	lodsb
233
	stosb
234
	test	al,al
235
	jnz	@b
236
 
237
	pop	esi
238
	ret
239
;------------------------------------------------------------------------------
1792 yogev_ezra 240
get_files_information:
3833 mario79 241
	call	get_information_marked_files
242
	cmp	[inf_marked_yes],1
243
	je	.end_2
244
 
245
	xor	eax,eax
246
	xor	edx,edx
247
	cmp	[select_panel_counter],0
248
	jne	.right_1
249
 
250
	mov	ax,[left_start_draw_cursor_line]
251
	mov	ebx,10
252
	div	ebx
253
	mov	ebx,[left_start_draw_line]
254
	add	ebx,eax
255
	imul	ebx,304
256
	add	ebx,[left_folder_data]
257
	call	prepare_data_8
258
	mov	esi,read_folder_name
259
	jmp	.end
260
;--------------------------------------
1792 yogev_ezra 261
.right_1:
3833 mario79 262
	mov	ax,[right_start_draw_cursor_line]
263
	mov	ebx,10
264
	div	ebx
265
	mov	ebx,[right_start_draw_line]
266
	add	ebx,eax
267
	imul	ebx,304
268
	add	ebx,[right_folder_data]
269
	call	prepare_data_8
270
	mov	esi,read_folder_1_name
271
;--------------------------------------
1792 yogev_ezra 272
.end:
3833 mario79 273
	mov	[error_pointer],ebx
274
;--------------------------------------
275
	push	eax ebx
276
	sub	ebx,40
277
; время создания файла
278
	mov	eax,[ebx+8]
279
	mov	[time.create],eax
280
; дата создания файла
281
	mov	eax,[ebx+12]
282
	mov	[date.create],eax
283
; время последнего доступа (чтение или запись)
284
	mov	eax,[ebx+16]
285
	mov	[time.access],eax
286
; дата последнего доступа
287
	mov	eax,[ebx+20]
288
	mov	[date.access],eax
289
; время последней модификации
290
	mov	eax,[ebx+24]
291
	mov	[time.change],eax
292
; дата последней модификации
293
	mov	eax,[ebx+28]
294
	mov	[date.change],eax
295
	pop	ebx eax
296
;--------------------------------------
297
	call	copy_type_name
298
	mov	edi,file_name
299
	call	copy_path_1
300
 
301
	test	[ebx-40],byte 0x10
302
	jz	@f
303
 
304
	push	eax ebx
305
	call	get_inf_dir
306
	mov	[nesting_direction],0
307
	pop	ebx eax
308
	dec	[directories_counter]
309
	jmp	.end_2
310
;--------------------------------------
1792 yogev_ezra 311
@@:
3833 mario79 312
	mov	[nesting_direction],1
313
	call	get_file_size
314
	test	eax,eax
315
	jz	.end_1
316
 
317
	call	start_error_window_thread
318
	add	esp,4
319
	jmp	reload_dir_all
320
;--------------------------------------
1792 yogev_ezra 321
.end_1:
3833 mario79 322
	mov	eax,[file_features_temp_area+32]
323
	add	[files_size.low],eax
324
	mov	eax,[file_features_temp_area+32+4]
325
	adc	[files_size.high],eax
326
;--------------------------------------
1792 yogev_ezra 327
.end_2:
3833 mario79 328
	ret
329
;------------------------------------------------------------------------------
1792 yogev_ezra 330
get_information_marked_files:
3833 mario79 331
	xor	eax,eax
332
	mov	[inf_marked_yes],al
333
	cmp	[select_panel_counter],al
334
	jne	.right_1
335
 
336
	mov	ebp,[left_folder_block]
337
;--------------------------------------
1792 yogev_ezra 338
.start:
3833 mario79 339
	mov	ebx,ebp
340
	dec	ebx
341
	imul	ebx,304
342
	add	ebx,[left_folder_data]
343
	add	ebx,32+40
344
	cmp	[ebx+299-40],byte 0
345
	je	@f
346
 
347
	cmp	[ebx],word '..'
348
	jne	.continue
349
 
350
	cmp	[ebx+2],byte 0
351
	je	.continue_1
352
;--------------------------------------
1792 yogev_ezra 353
.continue:
3833 mario79 354
	mov	esi,read_folder_name
355
	call	prepare_data_9
356
;--------------------------------------
1792 yogev_ezra 357
.continue_1:
3833 mario79 358
	mov	[inf_marked_yes],1
359
;--------------------------------------
1792 yogev_ezra 360
@@:
3833 mario79 361
	dec	ebp
362
	jnz	.start
363
 
364
	ret
365
;--------------------------------------
1792 yogev_ezra 366
.right_1:
3833 mario79 367
	mov	ebp,[right_folder_block]
368
;--------------------------------------
1792 yogev_ezra 369
.start_1:
3833 mario79 370
	mov	ebx,ebp
371
	dec	ebx
372
	imul	ebx,304
373
	add	ebx,[right_folder_data]
374
	add	ebx,32+40
375
	cmp	[ebx+299-40],byte 0
376
	je	@f
377
 
378
	cmp	[ebx],word '..'
379
	jne	.continue_2
380
 
381
	cmp	[ebx+2],byte 0
382
	je	.continue_3
383
;--------------------------------------
1792 yogev_ezra 384
.continue_2:
3833 mario79 385
	mov	esi,read_folder_1_name
386
	call	prepare_data_9
387
;--------------------------------------
1792 yogev_ezra 388
.continue_3:
3833 mario79 389
	mov	[inf_marked_yes],1
390
;--------------------------------------
1792 yogev_ezra 391
@@:
3833 mario79 392
	dec	ebp
393
	jnz	.start_1
394
 
395
	ret
396
;------------------------------------------------------------------------------
1792 yogev_ezra 397
prepare_data_9:
3833 mario79 398
	mov	[error_pointer],ebx
399
	mov	edi,file_name
400
	call	copy_path_1
401
	test	[ebx-40],byte 0x10
402
	jz	@f
403
 
404
	call	get_inf_dir
405
	ret
406
;--------------------------------------
1792 yogev_ezra 407
@@:
3833 mario79 408
	inc	[files_counter]
409
	call	get_file_size
410
	test	eax,eax
411
	jz	.continue
412
 
413
	call	start_error_window_thread
414
	add	esp,8+4
415
	ret
416
;--------------------------------------
1792 yogev_ezra 417
.continue:
3833 mario79 418
	mov	eax,[file_features_temp_area+32]
419
	add	[files_size.low],eax
420
	mov	eax,[file_features_temp_area+32+4]
421
	adc	[files_size.high],eax
422
;--------------------------------------
1792 yogev_ezra 423
.continue_1:
3833 mario79 424
	ret
425
;------------------------------------------------------------------------------
1792 yogev_ezra 426
prepare_data_8:
3833 mario79 427
	add	ebx,32+40
428
	cmp	[ebx],word '..'
429
	jne	.continue
430
 
431
	cmp	[ebx+2],byte 0
432
	jne	.continue
433
 
434
	add	esp,4+4
9732 sober_dev 435
	cmp	[select_panel_counter],0
436
	jne	@f
437
 
438
	call	proc_read_left_folder
439
	jmp	red
3833 mario79 440
;--------------------------------------
9732 sober_dev 441
@@:
442
	call	proc_read_right_folder
443
	jmp	red
444
;--------------------------------------
1792 yogev_ezra 445
.continue:
3833 mario79 446
	ret
447
;------------------------------------------------------------------------------
1792 yogev_ezra 448
get_inf_dir:
3833 mario79 449
	mov	[nesting_direction],0
450
	pusha
451
	mov	[recursive_pointer],0
452
	mov	eax,[appl_memory]
453
	mov	[appl_memory_old],eax
454
;--------------------------------------
1792 yogev_ezra 455
.1:
3833 mario79 456
	mov	[read_delete_dir_data.size],0
457
	mov	[read_delete_dir_data.return],delete_dir_data
458
	call	read_delete_dir
459
	test	eax,eax
460
	jz	@f
461
 
462
	mov	[error_pointer],file_name
463
	call	start_error_window_thread
464
	popa
465
	add	esp,8+8
9754 sober_dev 466
	jmp	still
3833 mario79 467
;--------------------------------------
1792 yogev_ezra 468
@@:
3833 mario79 469
	mov	eax,[delete_dir_data+8]
470
	imul	eax,304
471
	add	eax,32
472
	mov	ebx,eax
473
	add	ebx,[appl_memory_old]
474
	cmp	ebx,[appl_memory]
475
	jbe	@f
476
 
477
	mov	ecx,[appl_memory]
478
	mov	ecx,ebx
479
	mov	[appl_memory],ecx
480
	mcall	64,1
481
;--------------------------------------
1792 yogev_ezra 482
@@:
3833 mario79 483
	mov	eax,[delete_dir_data+8]
484
	mov	[read_delete_dir_data.size],eax
485
	mov	eax,[appl_memory_old]
486
	mov	[read_delete_dir_data.return],eax
487
	call	read_delete_dir
488
	test	eax,eax
489
	jz	@f
490
 
491
	mov	[error_pointer],file_name
492
	call	start_error_window_thread
493
	popa
494
	add	esp,8+8
9754 sober_dev 495
	jmp	still
3833 mario79 496
;--------------------------------------
1792 yogev_ezra 497
@@:
3833 mario79 498
	cmp	[nesting_direction],0
499
	je	@f
500
 
501
	call	get_inf_dir_2
502
	jnc	.end
503
 
504
	dec	ebp
505
	push	ebp
506
	jmp	.1
507
;--------------------------------------
1792 yogev_ezra 508
@@:
3833 mario79 509
	call	get_inf_dir_1
510
	jnc	.end
511
	dec	ebp
512
	push	ebp
513
	jmp	.1
514
;--------------------------------------
1792 yogev_ezra 515
.end:
3833 mario79 516
	call	return_delete_path
517
	dec	[recursive_pointer]
518
	cmp	[recursive_pointer],0
519
	jge	.1
520
 
521
	mov	ecx,[appl_memory_old]
522
	cmp	[appl_memory],ecx
523
	je	@f
524
 
525
	mov	[appl_memory],ecx
526
	mcall	64,1
527
;--------------------------------------
1792 yogev_ezra 528
@@:
3833 mario79 529
	popa
530
	ret
531
;------------------------------------------------------------------------------
1792 yogev_ezra 532
get_inf_dir_2:
3833 mario79 533
	pop	eax
534
	pop	ebp
535
	push	eax
536
	jmp	get_inf_dir_1.start
537
;--------------------------------------
1792 yogev_ezra 538
get_inf_dir_1:
3833 mario79 539
	inc	[directories_counter]
540
	mov	ebp,[appl_memory_old]
541
	mov	ebp,[ebp+8]
542
;--------------------------------------
1792 yogev_ezra 543
.start:
9754 sober_dev 544
	test	ebp,ebp
545
	jz	.continue_4
3833 mario79 546
	mov	ebx,ebp
547
	dec	ebx
548
	imul	ebx,304
549
	add	ebx,[appl_memory_old]
550
	add	ebx,32+40
551
	cmp	[ebx],byte '.'
552
	jne	@f
553
 
554
	cmp	[ebx+1],byte 0
555
	je	.continue_4
556
;--------------------------------------
1792 yogev_ezra 557
@@:
3833 mario79 558
	cmp	[ebx],word '..'
559
	jne	.continue
560
 
561
	cmp	[ebx+2],byte 0
562
	je	.continue_4
563
;--------------------------------------
1792 yogev_ezra 564
.continue:
3833 mario79 565
	mov	esi,file_name
566
	inc	[recursive_pointer]
567
	call	copy_path_2
568
	test	[ebx-40],byte 0x10
569
	jnz	.continue_3
570
;--------------------------------------
1792 yogev_ezra 571
@@:
3833 mario79 572
	inc	[files_counter]
573
;--------------------------------------
1792 yogev_ezra 574
.continue_1:
3833 mario79 575
	mov	eax,[ebx+32-40]
576
	add	[files_size.low],eax
577
	mov	eax,[ebx+32+4-40]
578
	adc	[files_size.high],eax
579
	dec	[recursive_pointer]
580
	call	return_delete_path
581
	dec	ebp
582
	jnz	.start
583
;--------------------------------------
1792 yogev_ezra 584
.continue_4:
3833 mario79 585
	clc
586
	mov	[nesting_direction],1
587
	ret
588
;--------------------------------------
1792 yogev_ezra 589
.continue_3:
3833 mario79 590
	stc
591
	mov	[nesting_direction],0
592
	ret
593
;------------------------------------------------------------------------------
1792 yogev_ezra 594
;type_patch_test:
3833 mario79 595
;	pusha
596
;	mcall	5,200
597
;	mcall	13,<290,300>,<3,13>,0x0
598
;	mcall	4,<300,5>,0x80FFFFFF,file_name  ;[error_pointer]
599
;	mcall	47,0x160100,[recursive_pointer],<300,5>,0xffffff
600
;	mcall	47,0x160100,ebp,<300,5>,0xffffff
601
;	mcall	5,1
602
;	popa
603
;	ret
604
;temp_value_1	db '1',0
605
;temp_value_2	db '2',0
606
;temp_value_3	db '3',0
607
;temp_value_4	db '4',0
608
;temp_value_5	db '5',0
609
;------------------------------------------------------------------------------