Subversion Repositories Kolibri OS

Rev

Rev 1792 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1792 Rev 9754
1
;---------------------------------------------------------------------
1
;---------------------------------------------------------------------
2
delete_file:
2
delete_file:
3
;    call progress_bar
3
;    call progress_bar
4
;    jmp  still
4
;    jmp  still
5
    mov  [confirmation_type],delete_type
5
    mov  [confirmation_type],delete_type
6
    call confirmation_action
6
    call confirmation_action
7
    cmp  [work_confirmation_yes],1
7
    cmp  [work_confirmation_yes],1
8
    jne  red  ;reload_dir
8
    jne  red  ;reload_dir
9
 
9
 
10
    xor  eax,eax
10
    xor  eax,eax
11
    mov  [files_counter],eax
11
    mov  [files_counter],eax
12
    mov  [directories_counter],eax
12
    mov  [directories_counter],eax
13
    mov  [files_size.low],eax
13
    mov  [files_size.low],eax
14
    mov  [files_size.high],eax
14
    mov  [files_size.high],eax
15
    call get_files_information
15
    call get_files_information
16
 
16
 
17
    call delete_marked_files
17
    call delete_marked_files
18
    cmp  [delete_marked_yes],1
18
    cmp  [delete_marked_yes],1
19
    je	 .end_1   ;reload_dir_all
19
    je	 .end_1   ;reload_dir_all
20
 
20
 
21
    xor  eax,eax
21
    xor  eax,eax
22
    xor  edx,edx
22
    xor  edx,edx
23
    cmp  [select_panel_counter],0
23
    cmp  [select_panel_counter],0
24
    jne  .right_1
24
    jne  .right_1
25
    mov  ax,[left_start_draw_cursor_line]
25
    mov  ax,[left_start_draw_cursor_line]
26
    mov  ebx,10
26
    mov  ebx,10
27
    div  ebx
27
    div  ebx
28
    mov  ebx,[left_start_draw_line]
28
    mov  ebx,[left_start_draw_line]
29
    add  ebx,eax
29
    add  ebx,eax
30
    imul ebx,304
30
    imul ebx,304
31
    add  ebx,[left_folder_data]
31
    add  ebx,[left_folder_data]
32
    call prepare_data_7
32
    call prepare_data_7
33
    mov   esi,read_folder_name	  ;read_folder.name
33
    mov   esi,read_folder_name	  ;read_folder.name
34
    jmp  .end
34
    jmp  .end
35
.right_1:
35
.right_1:
36
    mov  ax,[right_start_draw_cursor_line]
36
    mov  ax,[right_start_draw_cursor_line]
37
    mov  ebx,10
37
    mov  ebx,10
38
    div  ebx
38
    div  ebx
39
    mov  ebx,[right_start_draw_line]
39
    mov  ebx,[right_start_draw_line]
40
    add  ebx,eax
40
    add  ebx,eax
41
    imul ebx,304
41
    imul ebx,304
42
    add  ebx,[right_folder_data]
42
    add  ebx,[right_folder_data]
43
    call prepare_data_7
43
    call prepare_data_7
44
    mov   esi,read_folder_1_name   ;read_folder_1.name
44
    mov   esi,read_folder_1_name   ;read_folder_1.name
45
.end:
45
.end:
46
    mov   [error_pointer],ebx
46
    mov   [error_pointer],ebx
47
    mov   edi,file_name   ;delete_file_data.name
47
    mov   edi,file_name   ;delete_file_data.name
48
    call  copy_path_1
48
    call  copy_path_1
49
    test [ebx-40],byte 0x10
49
    test [ebx-40],byte 0x10
50
    jz	 @f
50
    jz	 @f
51
    push eax ebx
51
    push eax ebx
52
    xor  eax,eax
52
    xor  eax,eax
53
    mov  [current_progress_value],eax
53
    mov  [current_progress_value],eax
54
;    mov  [delete_marked_yes],al
54
;    mov  [delete_marked_yes],al
55
    mov  [draw_all_progressbar],1
55
    mov  [draw_all_progressbar],1
56
    call delete_dir
56
    call delete_dir
57
    pop  ebx eax
57
    pop  ebx eax
58
    jmp  .end_1
58
    jmp  .end_1
59
@@:
59
@@:
60
    call del_file
60
    call del_file
61
    test  eax,eax
61
    test  eax,eax
62
    jz	 .end_1
62
    jz	 .end_1
63
    call start_error_window_thread
63
    call start_error_window_thread
64
    jmp  reload_dir_all
64
    jmp  reload_dir_all
65
.end_1:
65
.end_1:
66
    cmp  [select_panel_counter],0
66
    cmp  [select_panel_counter],0
67
    jne  .right
67
    jne  .right
68
    call proc_read_left_folder
68
    call proc_read_left_folder
69
    jmp  red
69
    jmp  red
70
.right:
70
.right:
71
    call proc_read_right_folder
71
    call proc_read_right_folder
72
    jmp  red
72
    jmp  red
73
;---------------------------------------------------------------------
73
;---------------------------------------------------------------------
74
delete_marked_files:
74
delete_marked_files:
75
    mov  eax,[directories_counter]
75
    mov  eax,[directories_counter]
76
    add  eax,[files_counter]
76
    add  eax,[files_counter]
77
    mov  [max_progress_value],eax
77
    mov  [max_progress_value],eax
78
    
78
    
79
    xor  eax,eax
79
    xor  eax,eax
80
    mov  [current_progress_value],eax
80
    mov  [current_progress_value],eax
81
    mov  [delete_marked_yes],al
81
    mov  [delete_marked_yes],al
82
    mov  [draw_all_progressbar],1
82
    mov  [draw_all_progressbar],1
83
    
83
    
84
   cmp  [select_panel_counter],al
84
   cmp  [select_panel_counter],al
85
    jne  .right_1
85
    jne  .right_1
86
;    mov  eax,[left_marked_counter]
86
;    mov  eax,[left_marked_counter]
87
;    mov  [max_progress_value],eax
87
;    mov  [max_progress_value],eax
88
    mov  ebp,[left_folder_block]
88
    mov  ebp,[left_folder_block]
89
.start:
89
.start:
90
    mov  ebx,ebp
90
    mov  ebx,ebp
91
    dec  ebx
91
    dec  ebx
92
    imul ebx,304
92
    imul ebx,304
93
    add  ebx,[left_folder_data]
93
    add  ebx,[left_folder_data]
94
    add  ebx,32+40
94
    add  ebx,32+40
95
    cmp  [ebx+299-40],byte 0
95
    cmp  [ebx+299-40],byte 0
96
    je	 @f
96
    je	 @f
97
    cmp  [ebx],word '..'
97
    cmp  [ebx],word '..'
98
    jne  .continue
98
    jne  .continue
99
    cmp  [ebx+2],byte 0
99
    cmp  [ebx+2],byte 0
100
    je	 .continue_1
100
    je	 .continue_1
101
.continue:
101
.continue:
102
    mov  esi,read_folder_name	;read_folder.name
102
    mov  esi,read_folder_name	;read_folder.name
103
    call prepare_data_6
103
    call prepare_data_6
104
.continue_1:
104
.continue_1:
105
    mov  [delete_marked_yes],1
105
    mov  [delete_marked_yes],1
106
@@:
106
@@:
107
    dec  ebp
107
    dec  ebp
108
    jnz  .start
108
    jnz  .start
109
    cmp  [delete_marked_yes],0
109
    cmp  [delete_marked_yes],0
110
    je	 @f
110
    je	 @f
111
    mov  [left_start_draw_cursor_line],0
111
    mov  [left_start_draw_cursor_line],0
112
@@:
112
@@:
113
    ret
113
    ret
114
.right_1:
114
.right_1:
115
;    mov  eax,[right_marked_counter]
115
;    mov  eax,[right_marked_counter]
116
;    mov  [max_progress_value],eax
116
;    mov  [max_progress_value],eax
117
    mov  ebp,[right_folder_block]
117
    mov  ebp,[right_folder_block]
118
.start_1:
118
.start_1:
119
    mov  ebx,ebp
119
    mov  ebx,ebp
120
    dec  ebx
120
    dec  ebx
121
    imul ebx,304
121
    imul ebx,304
122
    add  ebx,[right_folder_data]
122
    add  ebx,[right_folder_data]
123
    add  ebx,32+40
123
    add  ebx,32+40
124
    cmp  [ebx+299-40],byte 0
124
    cmp  [ebx+299-40],byte 0
125
    je	 @f
125
    je	 @f
126
    cmp  [ebx],word '..'
126
    cmp  [ebx],word '..'
127
    jne  .continue_2
127
    jne  .continue_2
128
    cmp  [ebx+2],byte 0
128
    cmp  [ebx+2],byte 0
129
    je	 .continue_3
129
    je	 .continue_3
130
.continue_2:
130
.continue_2:
131
    mov   esi,read_folder_1_name   ;read_folder_1.name
131
    mov   esi,read_folder_1_name   ;read_folder_1.name
132
    call prepare_data_6
132
    call prepare_data_6
133
.continue_3:
133
.continue_3:
134
    mov  [delete_marked_yes],1
134
    mov  [delete_marked_yes],1
135
@@:
135
@@:
136
    dec  ebp
136
    dec  ebp
137
    jnz  .start_1
137
    jnz  .start_1
138
    cmp  [delete_marked_yes],0
138
    cmp  [delete_marked_yes],0
139
    je	 @f
139
    je	 @f
140
    mov  [right_start_draw_cursor_line],0
140
    mov  [right_start_draw_cursor_line],0
141
@@:
141
@@:
142
    ret
142
    ret
143
;---------------------------------------------------------------------
143
;---------------------------------------------------------------------
144
prepare_data_6:
144
prepare_data_6:
145
    mov   [error_pointer],ebx
145
    mov   [error_pointer],ebx
146
    mov  edi,file_name	 ;delete_file_data.name
146
    mov  edi,file_name	 ;delete_file_data.name
147
    call copy_path_1
147
    call copy_path_1
148
;    inc  [current_progress_value]
148
;    inc  [current_progress_value]
149
;    call progress_bar_delete
149
;    call progress_bar_delete
150
    test [ebx-40],byte 0x10
150
    test [ebx-40],byte 0x10
151
    jz	 @f
151
    jz	 @f
152
    call delete_dir
152
    call delete_dir
153
    jmp  .continue
153
    jmp  .continue
154
@@:
154
@@:
155
    inc  [current_progress_value]
155
    inc  [current_progress_value]
156
    call progress_bar_delete
156
    call progress_bar_delete
157
    call del_file
157
    call del_file
158
    test eax,eax
158
    test eax,eax
159
    jz	 .continue  ;  .continue_1
159
    jz	 .continue  ;  .continue_1
160
    call start_error_window_thread
160
    call start_error_window_thread
161
    add  esp,8
161
    add  esp,8
162
.continue:
162
.continue:
163
    ret
163
    ret
164
;---------------------------------------------------------------------
164
;---------------------------------------------------------------------
165
prepare_data_7:
165
prepare_data_7:
166
    add  ebx,32+40
166
    add  ebx,32+40
167
    cmp  [ebx],word '..'
167
    cmp  [ebx],word '..'
168
    jne  .continue
168
    jne  .continue
169
    cmp  [ebx+2],byte 0
169
    cmp  [ebx+2],byte 0
170
    jne  .continue
170
    jne  .continue
171
    add  esp,4
171
    add  esp,4
172
    jmp  reload_dir
172
    jmp  reload_dir
173
.continue:
173
.continue:
174
    ret
174
    ret
175
;---------------------------------------------------------------------
175
;---------------------------------------------------------------------
176
delete_dir:
176
delete_dir:
177
    pusha
177
    pusha
178
    mov   [recursive_pointer],0
178
    mov   [recursive_pointer],0
179
    mov   eax,[appl_memory]
179
    mov   eax,[appl_memory]
180
    mov   [appl_memory_old],eax
180
    mov   [appl_memory_old],eax
181
.1:
181
.1:
182
    mov  [read_delete_dir_data.size],0
182
    mov  [read_delete_dir_data.size],0
183
    mov  [read_delete_dir_data.return],delete_dir_data
183
    mov  [read_delete_dir_data.return],delete_dir_data
184
    call read_delete_dir
184
    call read_delete_dir
185
    test eax,eax
185
    test eax,eax
186
    jz	 @f
186
    jz	 @f
187
    mov   [error_pointer],file_name
187
    mov   [error_pointer],file_name
188
    call start_error_window_thread
188
    call start_error_window_thread
189
    popa
189
    popa
190
    add  esp,8+4
190
    add  esp,8+4
191
    ret
191
    jmp  still
192
@@:
192
@@:
193
    mov  eax,[delete_dir_data+8]
193
    mov  eax,[delete_dir_data+8]
194
    cmp  eax,2
194
    test eax,eax
195
    ja	 @f
195
    jnz  @f
196
    inc  [current_progress_value]
196
    inc  [current_progress_value]
197
    call progress_bar_delete
197
    call progress_bar_delete
198
    call del_file
198
    call del_file
199
    test eax,eax
199
    test eax,eax
200
    jz	 .end
200
    jz	 .end
201
    mov   [error_pointer],file_name
201
    mov   [error_pointer],file_name
202
    call start_error_window_thread
202
    call start_error_window_thread
203
    popa
203
    popa
204
    add  esp,8+4
204
    add  esp,8+4
205
    ret
205
    jmp  still
206
@@:
206
@@:
207
    imul  eax,304
207
    imul  eax,304
208
    add   eax,32
208
    add   eax,32
209
    mov   ebx,eax
209
    mov   ebx,eax
210
    add   ebx,[appl_memory_old]
210
    add   ebx,[appl_memory_old]
211
    cmp   ebx,[appl_memory]
211
    cmp   ebx,[appl_memory]
212
    jbe   @f
212
    jbe   @f
213
    mov   ecx,[appl_memory]
213
    mov   ecx,[appl_memory]
214
    mov   ecx,ebx
214
    mov   ecx,ebx
215
    mov   [appl_memory],ecx
215
    mov   [appl_memory],ecx
216
    mcall 64,1
216
    mcall 64,1
217
@@:
217
@@:
218
    mov  eax,[delete_dir_data+8]
218
    mov  eax,[delete_dir_data+8]
219
    mov  [read_delete_dir_data.size],eax
219
    mov  [read_delete_dir_data.size],eax
220
    mov   eax,[appl_memory_old]
220
    mov   eax,[appl_memory_old]
221
    mov  [read_delete_dir_data.return],eax
221
    mov  [read_delete_dir_data.return],eax
222
    call read_delete_dir
222
    call read_delete_dir
223
    test eax,eax
223
    test eax,eax
224
    jz	 @f
224
    jz	 @f
225
    mov   [error_pointer],file_name
225
    mov   [error_pointer],file_name
226
    call start_error_window_thread
226
    call start_error_window_thread
227
    popa
227
    popa
228
    add  esp,8+4
228
    add  esp,8+4
229
    ret
229
    jmp  still
230
@@:
230
@@:
231
    call delete_dir_1
231
    call delete_dir_1
232
    jc	.1
232
    jc	.1
233
.end:
233
.end:
234
    call  return_delete_path
234
    call  return_delete_path
235
    dec   [recursive_pointer]
235
    dec   [recursive_pointer]
236
    cmp   [recursive_pointer],0
236
    cmp   [recursive_pointer],0
237
    jge	  .1
237
    jge	  .1
238
@@:
238
@@:
239
    mov   ecx,[appl_memory_old]
239
    mov   ecx,[appl_memory_old]
240
    cmp   [appl_memory],ecx
240
    cmp   [appl_memory],ecx
241
    je	  @f
241
    je	  @f
242
    mov   [appl_memory],ecx
242
    mov   [appl_memory],ecx
243
    mcall 64,1
243
    mcall 64,1
244
@@:
244
@@:
245
    popa
245
    popa
246
    ret
246
    ret
247
;---------------------------------------------------------------------
247
;---------------------------------------------------------------------
248
delete_dir_1:
248
delete_dir_1:
249
    mov  ebp,[appl_memory_old]
249
    mov  ebp,[appl_memory_old]
250
    mov  ebp,[ebp+8]
250
    mov  ebp,[ebp+8]
251
.start:
251
.start:
-
 
252
    test ebp,ebp
-
 
253
    jz   .continue_4
252
    mov  ebx,ebp
254
    mov  ebx,ebp
253
    dec  ebx
255
    dec  ebx
254
    imul ebx,304
256
    imul ebx,304
255
    add  ebx,[appl_memory_old]
257
    add  ebx,[appl_memory_old]
256
    add  ebx,32+40
258
    add  ebx,32+40
257
    cmp  [ebx],byte '.'
259
    cmp  [ebx],byte '.'
258
    jne  @f
260
    jne  @f
259
    cmp  [ebx+1],byte 0
261
    cmp  [ebx+1],byte 0
260
    je	 .continue_4
262
    je	 .continue_4
261
@@:
263
@@:
262
    cmp  [ebx],word '..'
264
    cmp  [ebx],word '..'
263
    jne  .continue
265
    jne  .continue
264
    cmp  [ebx+2],byte 0
266
    cmp  [ebx+2],byte 0
265
    je	 .continue_4
267
    je	 .continue_4
266
.continue:
268
.continue:
267
    mov  esi,file_name
269
    mov  esi,file_name
268
    inc  [recursive_pointer]
270
    inc  [recursive_pointer]
269
    call copy_path_2
271
    call copy_path_2
270
    test [ebx-40],byte 0x10
272
    test [ebx-40],byte 0x10
271
    jnz  .continue_3
273
    jnz  .continue_3
272
@@:
274
@@:
273
    inc  [current_progress_value]
275
    inc  [current_progress_value]
274
    call progress_bar_delete
276
    call progress_bar_delete
275
    call del_file
277
    call del_file
276
    test eax,eax
278
    test eax,eax
277
    jz	 .continue_1
279
    jz	 .continue_1
278
    mov   [error_pointer],file_name
280
    mov   [error_pointer],file_name
279
    call start_error_window_thread
281
    call start_error_window_thread
280
    add  esp,4
282
    add  esp,4
281
    popa
283
    popa
282
    add  esp,8+4
284
    add  esp,8+4
283
    ret
285
    ret
284
.continue_1:
286
.continue_1:
285
    dec  [recursive_pointer]
287
    dec  [recursive_pointer]
286
    call return_delete_path
288
    call return_delete_path
287
    dec  ebp
289
    dec  ebp
288
    jnz  .start
290
    jnz  .start
289
    
291
    
290
.continue_4:
292
.continue_4:
291
    inc  [current_progress_value]
293
    inc  [current_progress_value]
292
    call progress_bar_delete
294
    call progress_bar_delete
293
    call del_file
295
    call del_file
294
    test eax,eax
296
    test eax,eax
295
    jz	 .continue_2
297
    jz	 .continue_2
296
    call start_error_window_thread
298
    call start_error_window_thread
297
    add  esp,4
299
    add  esp,4
298
    popa
300
    popa
299
    add  esp,8+4
301
    add  esp,8+4
300
    ret
302
    ret
301
.continue_2:        
303
.continue_2:
302
    clc
304
    clc
303
    ret
305
    ret
304
.continue_3:
306
.continue_3:
305
    stc
307
    stc
306
    ret
308
    ret
307
;---------------------------------------------------------------------
309
;---------------------------------------------------------------------
308
return_delete_path:
310
return_delete_path:
309
    mov  edi,file_name
311
    mov  edi,file_name
310
@@:
312
@@:
311
    inc  edi
313
    inc  edi
312
    cmp  [edi],byte 0
314
    cmp  [edi],byte 0
313
    jne  @r
315
    jne  @r
314
    dec  edi
316
    dec  edi
315
@@:
317
@@:
316
    dec  edi
318
    dec  edi
317
    cmp  [edi],byte '/'
319
    cmp  [edi],byte '/'
318
    jne  @r
320
    jne  @r
319
    cmp  edi,file_name
321
    cmp  edi,file_name
320
    jbe  @f
322
    jbe  @f
321
    mov  [edi],byte 0
323
    mov  [edi],byte 0
322
@@:
324
@@:
323
    ret
325
    ret
324
;---------------------------------------------------------------------
326
;---------------------------------------------------------------------
325
copy_path_2:
327
copy_path_2:
326
    xor   eax,eax
328
    xor   eax,eax
327
@@:
329
@@:
328
    cld
330
    cld
329
    lodsb
331
    lodsb
330
    test  al,al
332
    test  al,al
331
    jnz   @b
333
    jnz   @b
332
    mov   edi,esi
334
    mov   edi,esi
333
    mov   [edi-1],byte '/'
335
    mov   [edi-1],byte '/'
334
    mov   esi,ebx
336
    mov   esi,ebx
335
@@:
337
@@:
336
    cld
338
    cld
337
    lodsb
339
    lodsb
338
    stosb
340
    stosb
339
    test  al,al
341
    test  al,al
340
    jnz   @b
342
    jnz   @b
341
    ret
343
    ret
342
;---------------------------------------------------------------------
344
;---------------------------------------------------------------------