bool Downloader::downloadFiles() { if(files.empty()) return true; setMarquee(true); if(getFileSizes() == OPERATION_STOPPED) { setMarquee(false); return false; } if(!openInternet()) { storeError(); setMarquee(false); return false; } sizeTimeTimer.start(500); updateStatus(msg("Starting download...")); if(!(filesSize == FILE_SIZE_UNKNOWN)) setMarquee(false); for(map<tstring, NetFile *>::iterator i = files.begin(); i != files.end(); i++) { NetFile *file = i->second; if(downloadCancelled) break; if(!file->downloaded) if(!downloadFile(file)) { closeInternet(); return false; } else downloadedFilesSize += file->bytesDownloaded; } closeInternet(); return true; }
bool Downloader::downloadFiles(bool useComponents) { if(ownMsgLoop) downloadCancelled = false; if(files.empty() && ftpDirs.empty()) return true; setMarquee(true); processFtpDirs(); if(getFileSizes() == OPERATION_STOPPED) { TRACE(_T("OPERATION_STOPPED")); setMarquee(false); return false; } TRACE(_T("filesSize: %d"), (DWORD)filesSize); if(!openInternet()) { storeError(); setMarquee(false); return false; } sizeTimeTimer.start(500); updateStatus(msg("Starting download...")); TRACE(_T("Starting file download cycle...")); if(!(filesSize == FILE_SIZE_UNKNOWN)) setMarquee(false); processMessages(); for(map<tstring, NetFile *>::iterator i = files.begin(); i != files.end(); i++) { NetFile *file = i->second; if(downloadCancelled) break; if(useComponents) if(!file->selected(components)) continue; if(!file->downloaded) { // If mirror was used in getFileSizes() function, check mirror first: if(file->mirrorUsed.length()) { NetFile newFile(file->mirrorUsed, file->name, file->size); if(downloadFile(&newFile)) { file->downloaded = newFile.downloaded; file->bytesDownloaded = newFile.bytesDownloaded; downloadedFilesSize += file->bytesDownloaded; continue; } } if(!downloadFile(file)) { TRACE(_T("File was not downloaded.")); if(checkMirrors(i->first, true)) downloadedFilesSize += file->bytesDownloaded; else { if(stopOnError) { closeInternet(); return false; } else { TRACE(_T("Ignoring file %s"), file->name.c_str()); } } } else downloadedFilesSize += file->bytesDownloaded; } processMessages(); } closeInternet(); return filesDownloaded(); }