Subversion Repositories Kolibri OS

Rev

Rev 1792 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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