/******************************************************************************* ** ** smolbote: yet another qute browser ** Copyright (C) 2017 Xian Nox ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ** ******************************************************************************/ #include "downloaditemwidget.h" #include "ui_downloaditemform.h" #include #include DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *parent) : QWidget(parent), ui(new Ui::DownloadItemForm) { m_item = item; ui->setupUi(this); ui->url_label->setText(item->url().toString()); connect(item, SIGNAL(stateChanged(QWebEngineDownloadItem::DownloadState)), this, SLOT(updateState(QWebEngineDownloadItem::DownloadState))); connect(item, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(updateProgress(qint64,qint64))); connect(item, SIGNAL(finished()), this, SLOT(updateFinished())); } DownloadItemWidget::~DownloadItemWidget() { delete ui; } QWebEngineDownloadItem *DownloadItemWidget::item() const { return m_item; } QString DownloadItemWidget::sizeString(int size) const { if(size < 1024) { return QString("%1 bytes").arg(size); } // KiB if(size < 1024 * 1024) { return QString("%1 kB").arg(size / 1024); } // MiB if(size < 1024 * 1024 * 1024) { return QString("%1 MB").arg(size / (1024 * 1024)); } // GiB return QString("%1 GB").arg(size / (1024 * 1024 * 1024)); } void DownloadItemWidget::updateState(QWebEngineDownloadItem::DownloadState state) { switch (state) { case QWebEngineDownloadItem::DownloadRequested: ui->status_label->setText(tr("Requested")); break; case QWebEngineDownloadItem::DownloadInProgress: ui->status_label->setText(tr("In progress")); break; case QWebEngineDownloadItem::DownloadCompleted: ui->status_label->setText(tr("Completed")); break; case QWebEngineDownloadItem::DownloadCancelled: ui->status_label->setText(tr("Cancelled")); break; case QWebEngineDownloadItem::DownloadInterrupted: ui->status_label->setText(tr("Interrupted")); break; default: break; } } void DownloadItemWidget::updateProgress(qint64 value, qint64 total) { ui->progressBar->setMaximum(total); ui->progressBar->setValue(value); ui->filesize_label->setText(QString("%1 / %2").arg(sizeString(value)).arg(sizeString(total))); } void DownloadItemWidget::updateFinished() { ui->progressBar->setMaximum(100); ui->progressBar->setValue(100); }