aboutsummaryrefslogtreecommitdiff
path: root/src/downloadmanagerwidget.cpp
diff options
context:
space:
mode:
authorLibravatar Mubashshir <ahm@jadupc.com>2023-03-07 21:11:06 +0600
committerLibravatar Mubashshir <ahm@jadupc.com>2023-03-07 21:11:06 +0600
commitd830bfc8ce7c6763d074beafdde7cab1835d31f9 (patch)
tree179f81f3b42779b1f6fb69deed6b69dab39f4f89 /src/downloadmanagerwidget.cpp
downloadwhatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.tar.gz
whatsie-d830bfc8ce7c6763d074beafdde7cab1835d31f9.zip
Import Upstream version 4.12.0upstream/4.12.0
Diffstat (limited to 'src/downloadmanagerwidget.cpp')
-rw-r--r--src/downloadmanagerwidget.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/downloadmanagerwidget.cpp b/src/downloadmanagerwidget.cpp
new file mode 100644
index 0000000..2d75287
--- /dev/null
+++ b/src/downloadmanagerwidget.cpp
@@ -0,0 +1,58 @@
+#include "downloadmanagerwidget.h"
+
+#include "downloadwidget.h"
+
+#include <QFileDialog>
+#include <QStandardPaths>
+#include <QWebEngineDownloadItem>
+
+DownloadManagerWidget::DownloadManagerWidget(QWidget *parent)
+ : QWidget(parent), m_numDownloads(0) {
+ setupUi(this);
+}
+
+void DownloadManagerWidget::downloadRequested(
+ QWebEngineDownloadItem *download) {
+ Q_ASSERT(download &&
+ download->state() == QWebEngineDownloadItem::DownloadRequested);
+ QString path =
+ settings
+ .value("defaultDownloadLocation",
+ QStandardPaths::writableLocation(
+ QStandardPaths::DownloadLocation) +
+ QDir::separator() + QApplication::applicationName())
+ .toString();
+ QDir d;
+ d.mkpath(path);
+
+ download->setDownloadFileName(path + QDir::separator() +
+ download->downloadFileName());
+ download->accept();
+ add(new DownloadWidget(download));
+ show();
+}
+
+void DownloadManagerWidget::add(DownloadWidget *downloadWidget) {
+ connect(downloadWidget, &DownloadWidget::removeClicked, this,
+ &DownloadManagerWidget::remove);
+ m_itemsLayout->insertWidget(0, downloadWidget, 0, Qt::AlignTop);
+ if (m_numDownloads++ == 0)
+ m_zeroItemsLabel->hide();
+}
+
+void DownloadManagerWidget::remove(DownloadWidget *downloadWidget) {
+ m_itemsLayout->removeWidget(downloadWidget);
+ downloadWidget->deleteLater();
+ if (--m_numDownloads == 0)
+ m_zeroItemsLabel->show();
+}
+
+void DownloadManagerWidget::on_open_download_dir_clicked() {
+ utils::desktopOpenUrl(settings
+ .value("defaultDownloadLocation",
+ QStandardPaths::writableLocation(
+ QStandardPaths::DownloadLocation) +
+ QDir::separator() +
+ QApplication::applicationName())
+ .toString());
+}