/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #include "downloadswidget.h" #include "ui_downloadsform.h" #include #include #include #include #include #include "widgets/downloaditemwidget.h" DownloadsWidget::DownloadsWidget(const QString &downloadPath, QWidget *parent) : QWidget(parent), ui(new Ui::DownloadDialog) { // make sure this dialog does not get deleted on close setAttribute(Qt::WA_DeleteOnClose, false); setWindowTitle(tr("Downloads")); ui->setupUi(this); ui->filePath->setWordWrap(true); m_downloadPath = downloadPath; connect(ui->listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(showItemDetails(int))); } DownloadsWidget::~DownloadsWidget() { delete ui; } void DownloadsWidget::addDownload(QWebEngineDownloadItem *item) { QString filepath = QFileDialog::getSaveFileName(this, tr("Save"), m_downloadPath + "/" + QFileInfo(item->path()).fileName()); if(filepath.isEmpty()) { // user cancelled the save dialog item->cancel(); return; } item->setPath(filepath); QListWidgetItem *listItem = new QListWidgetItem(); int rowIndex = ui->listWidget->count(); ui->listWidget->insertItem(rowIndex, listItem); DownloadItemWidget *form = new DownloadItemWidget(item, this); listItem->setSizeHint(form->size()); ui->listWidget->setItemWidget(listItem, form); item->accept(); this->show(); } void DownloadsWidget::showItemDetails(int index) { DownloadItemWidget *form = qobject_cast(ui->listWidget->itemWidget(ui->listWidget->item(index))); ui->mimeType_label->setText(form->item()->mimeType()); ui->filePath_label->setText(form->item()->path()); ui->fileSize_label->setText(QString("%1 bytes").arg(form->item()->totalBytes())); }