| 270 | } |
| 271 | |
| 272 | void DownloadManager::pauseAll() |
| 273 | { |
| 274 | |
| 275 | // first loop: pause all downloads |
| 276 | for (int i = 0; i < m_ActiveDownloads.count(); ++i) { |
| 277 | if (m_ActiveDownloads[i]->m_State < STATE_READY) { |
| 278 | pauseDownload(i); |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | ::Sleep(100); |
| 283 | |
| 284 | bool done = false; |
| 285 | QTime startTime = QTime::currentTime(); |
| 286 | // further loops: busy waiting for all downloads to complete. This could be neater... |
| 287 | while (!done && (startTime.secsTo(QTime::currentTime()) < 5)) { |
| 288 | QCoreApplication::processEvents(); |
| 289 | done = true; |
| 290 | foreach (DownloadInfo* info, m_ActiveDownloads) { |
| 291 | if ((info->m_State < STATE_CANCELED) || |
| 292 | (info->m_State == STATE_FETCHINGFILEINFO) || |
| 293 | (info->m_State == STATE_FETCHINGMODINFO) || |
| 294 | (info->m_State == STATE_FETCHINGMODINFO_MD5)) { |
| 295 | done = false; |
| 296 | break; |
| 297 | } |
| 298 | } |
| 299 | if (!done) { |
| 300 | ::Sleep(100); |
| 301 | } |
| 302 | } |
| 303 | } |
| 304 | |
| 305 | void DownloadManager::setOutputDirectory(const QString& outputDirectory, |
| 306 | const bool refresh) |