// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "downloadmanagerwidget.h" #include "browser.h" #include "browserwindow.h" #include "downloadwidget.h" #include #include #include DownloadManagerWidget::DownloadManagerWidget(QWidget *parent) : QWidget(parent) { setupUi(this); } void DownloadManagerWidget::downloadRequested(QWebEngineDownloadRequest *download) { Q_ASSERT(download && download->state() == QWebEngineDownloadRequest::DownloadRequested); QString path = QFileDialog::getSaveFileName(this, tr("Save as"), QDir(download->downloadDirectory()).filePath(download->downloadFileName())); if (path.isEmpty()) return; download->setDownloadDirectory(QFileInfo(path).path()); download->setDownloadFileName(QFileInfo(path).fileName()); download->accept(); add(new DownloadWidget(download)); show(); } void DownloadManagerWidget::add(DownloadWidget *downloadWidget) { connect(downloadWidget, &DownloadWidget::removeClicked, this, &DownloadManagerWidget::remove); m_itemsLayout->insertWidget(0, downloadWidget, 0, Qt::AlignTop); if (m_numDownloads++ == 0) m_zeroItemsLabel->hide(); } void DownloadManagerWidget::remove(DownloadWidget *downloadWidget) { m_itemsLayout->removeWidget(downloadWidget); downloadWidget->deleteLater(); if (--m_numDownloads == 0) m_zeroItemsLabel->show(); }