From 85d9f14aa8bac16ab341662c770b64a15c21628b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 3 Jan 2018 16:39:32 +0100 Subject: Changed from qbs to cmake --- lib/downloads/downloadswidget.cpp | 91 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 lib/downloads/downloadswidget.cpp (limited to 'lib/downloads/downloadswidget.cpp') diff --git a/lib/downloads/downloadswidget.cpp b/lib/downloads/downloadswidget.cpp new file mode 100644 index 0000000..f9a8f34 --- /dev/null +++ b/lib/downloads/downloadswidget.cpp @@ -0,0 +1,91 @@ +/* + * 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) : + 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()); + } +} -- cgit v1.2.1