From eca5159e12288e1b4ee7d2d52f0475ca6433a0eb Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 24 Aug 2018 15:13:47 +0200 Subject: Downloads: prevent download widget width from exceeding download list width Downloads: add open button --- lib/downloads/widgets/downloaditemwidget.cpp | 44 +++++++++++++++++----------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to 'lib/downloads/widgets/downloaditemwidget.cpp') diff --git a/lib/downloads/widgets/downloaditemwidget.cpp b/lib/downloads/widgets/downloaditemwidget.cpp index 3fe2ebd..927c58b 100644 --- a/lib/downloads/widgets/downloaditemwidget.cpp +++ b/lib/downloads/widgets/downloaditemwidget.cpp @@ -10,6 +10,24 @@ #include "ui_downloaditemform.h" #include #include +#include + +inline QString sizeString(int size) +{ + 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)); +} DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *parent) : QWidget(parent) @@ -31,6 +49,7 @@ DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *pa ui->url_label->setText(item->url().toString()); ui->path_label->setText(item->path()); + this->updateState(item->state()); connect(item, &QWebEngineDownloadItem::stateChanged, this, &DownloadItemWidget::updateState); connect(item, &QWebEngineDownloadItem::downloadProgress, this, &DownloadItemWidget::updateProgress); connect(item, &QWebEngineDownloadItem::finished, this, &DownloadItemWidget::updateFinished); @@ -43,6 +62,9 @@ DownloadItemWidget::DownloadItemWidget(QWebEngineDownloadItem *item, QWidget *pa item->resume(); } }); + connect(ui->open_toolButton, &QToolButton::clicked, item, [item]() { + QDesktopServices::openUrl(QUrl::fromLocalFile(item->path())); + }); } DownloadItemWidget::~DownloadItemWidget() @@ -50,23 +72,6 @@ DownloadItemWidget::~DownloadItemWidget() delete ui; } -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) { @@ -74,26 +79,31 @@ void DownloadItemWidget::updateState(QWebEngineDownloadItem::DownloadState state ui->status_label->setText(tr("Requested")); ui->pause_toolButton->setEnabled(true); ui->abort_toolButton->setEnabled(true); + ui->open_toolButton->setEnabled(false); break; case QWebEngineDownloadItem::DownloadInProgress: ui->status_label->setText(tr("In progress")); ui->pause_toolButton->setEnabled(true); ui->abort_toolButton->setEnabled(true); + ui->open_toolButton->setEnabled(false); break; case QWebEngineDownloadItem::DownloadCompleted: ui->status_label->setText(tr("Completed")); ui->pause_toolButton->setEnabled(false); ui->abort_toolButton->setEnabled(false); + ui->open_toolButton->setEnabled(true); break; case QWebEngineDownloadItem::DownloadCancelled: ui->status_label->setText(tr("Cancelled")); ui->pause_toolButton->setEnabled(false); ui->abort_toolButton->setEnabled(false); + ui->open_toolButton->setEnabled(false); break; case QWebEngineDownloadItem::DownloadInterrupted: ui->status_label->setText(tr("Interrupted")); ui->pause_toolButton->setEnabled(false); ui->abort_toolButton->setEnabled(false); + ui->open_toolButton->setEnabled(false); break; default: break; -- cgit v1.2.1