void DownloadManager::timerEvent(QTimerEvent* e) { QVector<QTime> remTimes; QVector<int> progresses; QVector<double> speeds; if (e->timerId() == m_timer.timerId()) { if (!ui->list->count()) { ui->speedLabel->clear(); setWindowTitle(tr("Download Manager")); return; } for (int i = 0; i < ui->list->count(); i++) { DownloadItem* downItem = qobject_cast<DownloadItem*>(ui->list->itemWidget(ui->list->item(i))); if (!downItem || (downItem && downItem->isCancelled()) || !downItem->isDownloading()) { continue; } progresses.append(downItem->progress()); remTimes.append(downItem->remainingTime()); speeds.append(downItem->currentSpeed()); } if (remTimes.isEmpty()) { return; } QTime remaining; foreach (const QTime &time, remTimes) { if (time > remaining) { remaining = time; } } int progress = 0; foreach (int prog, progresses) { progress += prog; } progress = progress / progresses.count(); double speed = 0.00; foreach (double spee, speeds) { speed += spee; } ui->speedLabel->setText(tr("%1% of %2 files (%3) %4 remaining").arg(QString::number(progress), QString::number(progresses.count()), DownloadItem::currentSpeedToString(speed), DownloadItem::remaingTimeToString(remaining))); setWindowTitle(tr("%1% - Download Manager").arg(progress)); #ifdef W7TASKBAR if (QtWin::isRunningWindows7()) { win7.setProgressValue(progress, 100); win7.setProgressState(win7.Normal); } #endif } QWidget::timerEvent(e); }
void DownloadManager::updateInfo() { QVector<QTime> remTimes; for (int i = 0; i < listWidget_->count(); i++) { DownloadItem* downItem = qobject_cast<DownloadItem*>(listWidget_->itemWidget(listWidget_->item(i))); if (!downItem || !downItem->isDownloading()) { continue; } remTimes.append(downItem->remainingTime()); } QTime remaining; foreach (const QTime &time, remTimes) { if (time > remaining) { remaining = time; } } QString info; if (remTimes.count()) info = QString("%1 (%2)").arg(remaining.toString("mm:ss")).arg(remTimes.count()); emit signalUpdateInfo(info); }
void DownloadManager::timerEvent(QTimerEvent* e) { QVector<QTime> remTimes; QVector<int> progresses; QVector<double> speeds; if (e->timerId() == m_timer.timerId()) { if (!ui->list->count()) { ui->speedLabel->clear(); setWindowTitle(tr("Download Manager")); #ifdef Q_OS_WIN if (m_taskbarButton) { m_taskbarButton->progress()->hide(); } #endif return; } for (int i = 0; i < ui->list->count(); i++) { DownloadItem* downItem = qobject_cast<DownloadItem*>(ui->list->itemWidget(ui->list->item(i))); if (!downItem || downItem->isCancelled() || !downItem->isDownloading()) { continue; } progresses.append(downItem->progress()); remTimes.append(downItem->remainingTime()); speeds.append(downItem->currentSpeed()); } if (remTimes.isEmpty()) { return; } QTime remaining; foreach (const QTime &time, remTimes) { if (time > remaining) { remaining = time; } } int progress = 0; foreach (int prog, progresses) { progress += prog; } progress = progress / progresses.count(); double speed = 0.00; foreach (double spee, speeds) { speed += spee; } #ifndef Q_OS_WIN ui->speedLabel->setText(tr("%1% of %2 files (%3) %4 remaining").arg(QString::number(progress), QString::number(progresses.count()), DownloadItem::currentSpeedToString(speed), DownloadItem::remaingTimeToString(remaining))); #endif setWindowTitle(tr("%1% - Download Manager").arg(progress)); #ifdef Q_OS_WIN if (m_taskbarButton) { m_taskbarButton->progress()->show(); m_taskbarButton->progress()->setValue(progress); } #endif } QWidget::timerEvent(e); }