| 155 | namespace { |
| 156 | |
| 157 | void DoCopyDirectoryProgress(Explorer *exp, u64 &cur_done_size, const u64 total_size, const std::string &dir, const std::string &new_dir, CopyDirectoryFileStartCallback file_start_cb, CopyDirectoryFileProgressCallback file_prog_cb) { |
| 158 | const auto full_dir = exp->MakeFull(dir); |
| 159 | auto new_exp = GetExplorerForPath(new_dir); |
| 160 | const auto full_new_dir = new_exp->MakeFull(new_dir); |
| 161 | new_exp->CreateDirectory(full_new_dir); |
| 162 | |
| 163 | for(const auto ©_file_name: exp->GetFiles(full_dir)) { |
| 164 | const auto copy_file = full_dir + "/" + copy_file_name; |
| 165 | const auto new_file = full_new_dir + "/" + copy_file_name; |
| 166 | exp->CopyFileProgress(copy_file, new_file, [&](const size_t file_size) { |
| 167 | file_start_cb(file_size, copy_file, new_file); |
| 168 | }, [&](const size_t cur_rw_size) { |
| 169 | file_prog_cb(cur_rw_size); |
| 170 | }); |
| 171 | cur_done_size += exp->GetFileSize(copy_file); |
| 172 | } |
| 173 | |
| 174 | for(const auto ©_dir_name: exp->GetDirectories(full_dir)) { |
| 175 | const auto copy_dir = full_dir + "/" + copy_dir_name; |
| 176 | const auto new_dir = full_new_dir + "/" + copy_dir_name; |
| 177 | DoCopyDirectoryProgress(exp, cur_done_size, total_size, copy_dir, new_dir, file_start_cb, file_prog_cb); |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | } |
| 182 |
no test coverage detected