| 92 | } |
| 93 | |
| 94 | void CFrmDownload::slotUpdateWidget() |
| 95 | { |
| 96 | if(!m_pDownload) return; |
| 97 | qreal totalBytes = m_pDownload->totalBytes(); |
| 98 | qreal receivedBytes = m_pDownload->receivedBytes(); |
| 99 | qreal bytesPerSecond = 0; // Initialized to 0 for a reasonable default value |
| 100 | int remaining = 0; |
| 101 | QString szRemaining; |
| 102 | // Check for division by zero |
| 103 | if (m_timeAdded.elapsed() != 0) |
| 104 | bytesPerSecond = receivedBytes / m_timeAdded.elapsed() * 1000; |
| 105 | |
| 106 | remaining = (totalBytes - receivedBytes) / bytesPerSecond + 1; |
| 107 | if(remaining >= 0) { |
| 108 | QTime tm(0, 0, 0); |
| 109 | szRemaining = tm.addSecs(remaining).toString("hh:mm:ss"); |
| 110 | qDebug(log) << "Remaining:" << remaining << tm << szRemaining; |
| 111 | } |
| 112 | |
| 113 | auto state = m_pDownload->state(); |
| 114 | switch (state) { |
| 115 | case QWebEngineDownloadRequest::DownloadRequested: |
| 116 | ui->progressBar->setDisabled(false); |
| 117 | m_pDownload->accept(); |
| 118 | break; |
| 119 | case QWebEngineDownloadRequest::DownloadInProgress: |
| 120 | if (totalBytes > 0) { |
| 121 | ui->progressBar->setValue(qRound(100 * receivedBytes / totalBytes)); |
| 122 | ui->progressBar->setDisabled(false); |
| 123 | ui->progressBar->setFormat( |
| 124 | tr("%p% - %1 of %2 downloaded - %3/s - time left: %4") |
| 125 | .arg(CStats::Convertbytes(receivedBytes), CStats::Convertbytes(totalBytes), |
| 126 | CStats::Convertbytes(bytesPerSecond), szRemaining)); |
| 127 | } else { |
| 128 | ui->progressBar->setValue(0); |
| 129 | ui->progressBar->setDisabled(false); |
| 130 | ui->progressBar->setFormat( |
| 131 | tr("unknown size - %1 downloaded - %2/s") |
| 132 | .arg(CStats::Convertbytes(receivedBytes), CStats::Convertbytes(bytesPerSecond))); |
| 133 | } |
| 134 | break; |
| 135 | case QWebEngineDownloadRequest::DownloadCompleted: |
| 136 | ui->progressBar->setValue(100); |
| 137 | ui->progressBar->setDisabled(true); |
| 138 | ui->progressBar->setFormat( |
| 139 | tr("completed - %1 downloaded - %2/s") |
| 140 | .arg(CStats::Convertbytes(receivedBytes), CStats::Convertbytes(bytesPerSecond))); |
| 141 | break; |
| 142 | case QWebEngineDownloadRequest::DownloadCancelled: |
| 143 | ui->progressBar->setValue(0); |
| 144 | ui->progressBar->setDisabled(true); |
| 145 | ui->progressBar->setFormat( |
| 146 | tr("cancelled - %1 downloaded - %2/s") |
| 147 | .arg(CStats::Convertbytes(receivedBytes), CStats::Convertbytes(bytesPerSecond))); |
| 148 | break; |
| 149 | case QWebEngineDownloadRequest::DownloadInterrupted: |
| 150 | ui->progressBar->setValue(0); |
| 151 | ui->progressBar->setDisabled(true); |