From 442ba9f09a8ee18609361f3971b5da7f40eb5c35 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Tue, 10 Oct 2017 19:25:44 +0200 Subject: Split off DownloadsWidget into library Fixed bug with BookmarksWidget crashing the program on exit --- src/lib/downloads/downloadswidget.cpp | 86 +++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/lib/downloads/downloadswidget.cpp (limited to 'src/lib/downloads/downloadswidget.cpp') diff --git a/src/lib/downloads/downloadswidget.cpp b/src/lib/downloads/downloadswidget.cpp new file mode 100644 index 0000000..651e5a7 --- /dev/null +++ b/src/lib/downloads/downloadswidget.cpp @@ -0,0 +1,86 @@ +/******************************************************************************* + ** + ** smolbote: yet another qute browser + ** Copyright (C) 2017 Xian Nox + ** + ** This program is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** This program is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with this program. If not, see . + ** + ******************************************************************************/ + +#include "downloadswidget.h" +#include "ui_downloadsform.h" + +#include +#include +#include +#include +#include +#include "widgets/downloaditemwidget.h" + +DownloadsWidget::DownloadsWidget(const QString path, 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 = path; + + connect(ui->listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(showItemDetails(int))); +} + +DownloadsWidget::~DownloadsWidget() +{ + qDebug("Destroying DownloadsManager"); + + 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())); +} -- cgit v1.2.1