summaryrefslogtreecommitdiffstats
path: root/src/webengine/api/qquickwebenginedownloaditem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine/api/qquickwebenginedownloaditem.cpp')
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/webengine/api/qquickwebenginedownloaditem.cpp b/src/webengine/api/qquickwebenginedownloaditem.cpp
index 3ccd27094..767ada58f 100644
--- a/src/webengine/api/qquickwebenginedownloaditem.cpp
+++ b/src/webengine/api/qquickwebenginedownloaditem.cpp
@@ -112,6 +112,7 @@ QQuickWebEngineDownloadItemPrivate::QQuickWebEngineDownloadItemPrivate(QQuickWeb
, downloadPaused(false)
, view(nullptr)
, downloadUrl(url)
+ , isCustomFileName(false)
{
}
@@ -420,6 +421,9 @@ QString QQuickWebEngineDownloadItem::mimeType() const
\qmlproperty string WebEngineDownloadItem::path
\obsolete
+ Use \l suggestedFileName, \l downloadDirectory, and
+ \l downloadFileName instead.
+
Holds the full target path where data is being downloaded to.
The path includes the file name. The default suggested path is the standard
@@ -500,7 +504,7 @@ QString QQuickWebEngineDownloadItem::downloadDirectory() const
return d->downloadDirectory;
}
-void QQuickWebEngineDownloadItem::setDownloadDirectory(QString directory)
+void QQuickWebEngineDownloadItem::setDownloadDirectory(const QString &directory)
{
Q_D(QQuickWebEngineDownloadItem);
if (d->downloadState != QQuickWebEngineDownloadItem::DownloadRequested) {
@@ -508,25 +512,31 @@ void QQuickWebEngineDownloadItem::setDownloadDirectory(QString directory)
return;
}
+ bool isPathChanged = false;
QString changeDirectory = d->downloadDirectory;
if (!directory.isEmpty() && changeDirectory != directory) {
changeDirectory = directory;
if (d->downloadDirectory != changeDirectory) {
d->downloadDirectory = changeDirectory;
- Q_EMIT pathChanged();
Q_EMIT downloadDirectoryChanged();
+ isPathChanged = true;
}
- QString newFileName = QFileInfo(d->profile->d_ptr->profileAdapter()->updateDownloadPath(d->downloadId,
- d->downloadDirectory,
- d->suggestedFileName)).fileName();
- if (d->downloadFileName != newFileName) {
- d->downloadFileName = newFileName;
- Q_EMIT pathChanged();
- Q_EMIT downloadFileNameChanged();
+ if (!d->isCustomFileName) {
+ QString newFileName = QFileInfo(d->profile->d_ptr->profileAdapter()->determineDownloadPath(d->downloadDirectory,
+ d->suggestedFileName,
+ d->startTime)).fileName();
+ if (d->downloadFileName != newFileName) {
+ d->downloadFileName = newFileName;
+ Q_EMIT downloadFileNameChanged();
+ isPathChanged = true;
+ }
}
}
+
+ if (isPathChanged)
+ Q_EMIT pathChanged();
}
/*!
@@ -548,7 +558,7 @@ QString QQuickWebEngineDownloadItem::downloadFileName() const
return d->downloadFileName;
}
-void QQuickWebEngineDownloadItem::setDownloadFileName(QString fileName)
+void QQuickWebEngineDownloadItem::setDownloadFileName(const QString &fileName)
{
Q_D(QQuickWebEngineDownloadItem);
if (d->downloadState != QQuickWebEngineDownloadItem::DownloadRequested) {
@@ -558,8 +568,9 @@ void QQuickWebEngineDownloadItem::setDownloadFileName(QString fileName)
if (d->downloadFileName != fileName && !fileName.isEmpty()) {
d->downloadFileName = fileName;
- Q_EMIT pathChanged();
+ d->isCustomFileName = true;
Q_EMIT downloadFileNameChanged();
+ Q_EMIT pathChanged();
}
}