/*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2024 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
*
#include <QShortcut>
#include <QStandardPaths>
-SaveDialog::SaveDialog(QWebEngineDownloadItem *downloadItemPointer)
+SaveDialog::SaveDialog(QWidget *parentWidgetPointer, QUrl &url, QString &mimeTypeString, int totalBytes, QString fileName, bool nativeDownloader) :
+ QDialog(parentWidgetPointer), downloadUrl(url), suggestedFileName(fileName)
{
// Set the dialog window title.
setWindowTitle(i18nc("The save dialog window title", "Save"));
QDialogButtonBox *dialogButtonBoxPointer = saveDialogUi.dialogButtonBox;
QPushButton *saveButtonPointer = dialogButtonBoxPointer->button(QDialogButtonBox::Save);
- // Get the URL and the suggested file name.
- downloadUrl = downloadItemPointer->url();
- suggestedFileName = downloadItemPointer->suggestedFileName();
- QString mimeTypeString = downloadItemPointer->mimeType();
-
// Get a MIME type database.
QMimeDatabase mimeDatabase;
mimeTypeLabelPointer->setText("<b>" + mimeTypeString + "</b>");
// Populate the download size label.
- if (downloadItemPointer->totalBytes() == -1) // The file size is unknown.
+ if (totalBytes == -1) // The file size is unknown.
sizeLabelPointer->setText(i18nc("Unknown download file size. The bold style should be preserved.", "<b>unknown</b>"));
else // The file size is known. Format it according to the locale.
- sizeLabelPointer->setText(ki18nc("Download file size. The bold style should be preserved.", "<b>%1 bytes</b>").subs(downloadItemPointer->totalBytes()).toString());
-
- // Connect the buttons.
- connect(saveButtonPointer, SIGNAL(clicked()), this, SLOT(showFileDialog()));
- connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(reject()));
+ sizeLabelPointer->setText(ki18nc("Download file size. The bold style should be preserved.", "<b>%1 bytes</b>").subs(totalBytes).toString());
// Create the keyboard shortcuts.
QShortcut *sShortcutPointer = new QShortcut(QKeySequence(i18nc("The save key shortcut.", "s")), this);
QShortcut *cShortcutPointer = new QShortcut(QKeySequence(i18nc("The close key shortcut.", "c")), this);
-
- // Connect the shortcuts.
- connect(sShortcutPointer, SIGNAL(activated()), this, SLOT(showFileDialog()));
+ QShortcut *quitShortcutPointer = new QShortcut(QKeySequence::Quit, this);
+
+ // Connect the save buttons.
+ if (nativeDownloader)
+ {
+ // Show the file picker for the native download.
+ connect(saveButtonPointer, SIGNAL(clicked()), this, SLOT(showFilePicker()));
+ connect(sShortcutPointer, SIGNAL(activated()), this, SLOT(showFilePicker()));
+ }
+ else
+ {
+ // Use WebEngine's downloader.
+ connect(saveButtonPointer, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(sShortcutPointer, SIGNAL(activated()), this, SLOT(accept()));
+ }
+
+ // Connect the cancel button.
+ connect(dialogButtonBoxPointer, SIGNAL(rejected()), this, SLOT(reject()));
connect(cShortcutPointer, SIGNAL(activated()), this, SLOT(reject()));
+ connect(quitShortcutPointer, SIGNAL(activated()), this, SLOT(reject()));
}
-void SaveDialog::showFileDialog()
+void SaveDialog::showFilePicker()
{
// Show the file picker dialog.
- emit showSaveFilePickerDialog(downloadUrl, suggestedFileName);
+ emit useNativeKdeDownloader(downloadUrl, suggestedFileName);
// Close the dialog.
reject();