/* * 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 "widgets/downloaditemwidget.h" #include #include #include DownloadsWidget::DownloadsWidget(const QString &downloadPath, QWidget *parent) : QDialog(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); m_downloadPath = downloadPath; connect(ui->listWidget, &QListWidget::currentItemChanged, this, [this](QListWidgetItem *current, QListWidgetItem *previous) { DownloadItemWidget *currentWidget = qobject_cast(ui->listWidget->itemWidget(current)); currentWidget->showDetails(); currentWidget->setFixedWidth(ui->listWidget->viewport()->width()); currentWidget->adjustSize(); current->setSizeHint(currentWidget->size()); DownloadItemWidget *previousWidget = qobject_cast(ui->listWidget->itemWidget(previous)); if(previousWidget != nullptr) { previousWidget->hideDetails(); previousWidget->setFixedWidth(ui->listWidget->viewport()->width()); previousWidget->adjustSize(); previous->setSizeHint(previousWidget->size()); } }); } DownloadsWidget::~DownloadsWidget() { delete ui; } void DownloadsWidget::addDownload(QWebEngineDownloadItem *item) { this->show(); 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); ui->listWidget->setItemWidget(listItem, form); item->accept(); ui->listWidget->setCurrentRow(rowIndex); } void DownloadsWidget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); for(int i = 0; i < ui->listWidget->count(); ++i) { QWidget *w = ui->listWidget->itemWidget(ui->listWidget->item(i)); w->setFixedWidth(ui->listWidget->viewport()->width()); w->adjustSize(); ui->listWidget->item(i)->setSizeHint(w->size()); } }