diff options
Diffstat (limited to 'src/lib/downloads/downloadswidget.cpp')
-rw-r--r-- | src/lib/downloads/downloadswidget.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/lib/downloads/downloadswidget.cpp b/src/lib/downloads/downloadswidget.cpp index af41397..dc7d5e2 100644 --- a/src/lib/downloads/downloadswidget.cpp +++ b/src/lib/downloads/downloadswidget.cpp @@ -17,7 +17,7 @@ #include "widgets/downloaditemwidget.h" DownloadsWidget::DownloadsWidget(const QString &downloadPath, QWidget *parent) : - QWidget(parent), + QDialog(parent), ui(new Ui::DownloadDialog) { // make sure this dialog does not get deleted on close @@ -25,11 +25,22 @@ DownloadsWidget::DownloadsWidget(const QString &downloadPath, QWidget *parent) : setWindowTitle(tr("Downloads")); ui->setupUi(this); - ui->filePath->setWordWrap(true); m_downloadPath = downloadPath; - connect(ui->listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(showItemDetails(int))); + connect(ui->listWidget, &QListWidget::currentItemChanged, this, [this](QListWidgetItem *current, QListWidgetItem *previous) { + DownloadItemWidget *currentWidget = qobject_cast<DownloadItemWidget*>(ui->listWidget->itemWidget(current)); + currentWidget->showDetails(); + currentWidget->adjustSize(); + current->setSizeHint(currentWidget->size()); + + DownloadItemWidget *previousWidget = qobject_cast<DownloadItemWidget*>(ui->listWidget->itemWidget(previous)); + if(previousWidget != nullptr) { + previousWidget->hideDetails(); + previousWidget->adjustSize(); + previous->setSizeHint(previousWidget->size()); + } + }); } DownloadsWidget::~DownloadsWidget() @@ -60,13 +71,8 @@ void DownloadsWidget::addDownload(QWebEngineDownloadItem *item) ui->listWidget->setItemWidget(listItem, form); item->accept(); - this->show(); -} -void DownloadsWidget::showItemDetails(int index) -{ - DownloadItemWidget *form = qobject_cast<DownloadItemWidget *>(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())); + ui->listWidget->setCurrentRow(rowIndex); + + this->show(); } |