From 1db5ea9fe9ca588852397a7d05d49267b0258e29 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 15 Mar 2018 17:30:45 +0100 Subject: Add pause/resume/cancel buttons to download --- lib/downloads/widgets/downloaditemwidget.cpp | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'lib/downloads/widgets/downloaditemwidget.cpp') diff --git a/lib/downloads/widgets/downloaditemwidget.cpp b/lib/downloads/widgets/downloaditemwidget.cpp index 0de17c2..26a9a05 100644 --- a/lib/downloads/widgets/downloaditemwidget.cpp +++ b/lib/downloads/widgets/downloaditemwidget.cpp @@ -8,7 +8,6 @@ #include "downloaditemwidget.h" #include "ui_downloaditemform.h" - #include DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *parent) @@ -18,6 +17,15 @@ DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *pa m_item = item; ui->setupUi(this); + { + // pause/resume icons + QIcon pauseIcon; + pauseIcon.addPixmap(style()->standardPixmap(QStyle::SP_MediaPlay), QIcon::Normal, QIcon::Off); + pauseIcon.addPixmap(style()->standardPixmap(QStyle::SP_MediaPause), QIcon::Normal, QIcon::On); + ui->pause_toolButton->setIcon(pauseIcon); + + ui->abort_toolButton->setIcon(style()->standardIcon(QStyle::SP_MediaStop)); + } ui->url_label->setContent(item->url().toString()); ui->detailsWidget->hide(); @@ -27,6 +35,15 @@ DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *pa connect(item, &QWebEngineDownloadItem::stateChanged, this, &DownloadItemWidget::updateState); connect(item, &QWebEngineDownloadItem::downloadProgress, this, &DownloadItemWidget::updateProgress); connect(item, &QWebEngineDownloadItem::finished, this, &DownloadItemWidget::updateFinished); + + connect(ui->abort_toolButton, &QToolButton::clicked, item, &QWebEngineDownloadItem::cancel); + connect(ui->pause_toolButton, &QToolButton::clicked, item, [item](bool clicked) { + if(clicked) { + item->pause(); + } else { + item->resume(); + } + }); } DownloadItemWidget::~DownloadItemWidget() @@ -71,18 +88,28 @@ void DownloadItemWidget::updateState(QWebEngineDownloadItem::DownloadState state switch(state) { case QWebEngineDownloadItem::DownloadRequested: ui->status_label->setText(tr("Requested")); + ui->pause_toolButton->setEnabled(true); + ui->abort_toolButton->setEnabled(true); break; case QWebEngineDownloadItem::DownloadInProgress: ui->status_label->setText(tr("In progress")); + ui->pause_toolButton->setEnabled(true); + ui->abort_toolButton->setEnabled(true); break; case QWebEngineDownloadItem::DownloadCompleted: ui->status_label->setText(tr("Completed")); + ui->pause_toolButton->setEnabled(false); + ui->abort_toolButton->setEnabled(false); break; case QWebEngineDownloadItem::DownloadCancelled: ui->status_label->setText(tr("Cancelled")); + ui->pause_toolButton->setEnabled(false); + ui->abort_toolButton->setEnabled(false); break; case QWebEngineDownloadItem::DownloadInterrupted: ui->status_label->setText(tr("Interrupted")); + ui->pause_toolButton->setEnabled(false); + ui->abort_toolButton->setEnabled(false); break; default: break; -- cgit v1.2.1