summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem.cpp26
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem_p.h1
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem_p_p.h1
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem.cpp14
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem_p.h1
5 files changed, 29 insertions, 14 deletions
diff --git a/src/webengine/api/qquickwebenginedownloaditem.cpp b/src/webengine/api/qquickwebenginedownloaditem.cpp
index 6abd89910..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)
{
}
@@ -511,25 +512,31 @@ void QQuickWebEngineDownloadItem::setDownloadDirectory(const 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()->determineDownloadPath(d->downloadDirectory,
- d->suggestedFileName,
- d->startTime)).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();
}
/*!
@@ -561,8 +568,9 @@ void QQuickWebEngineDownloadItem::setDownloadFileName(const QString &fileName)
if (d->downloadFileName != fileName && !fileName.isEmpty()) {
d->downloadFileName = fileName;
- Q_EMIT pathChanged();
+ d->isCustomFileName = true;
Q_EMIT downloadFileNameChanged();
+ Q_EMIT pathChanged();
}
}
diff --git a/src/webengine/api/qquickwebenginedownloaditem_p.h b/src/webengine/api/qquickwebenginedownloaditem_p.h
index beb359622..e1b1b9040 100644
--- a/src/webengine/api/qquickwebenginedownloaditem_p.h
+++ b/src/webengine/api/qquickwebenginedownloaditem_p.h
@@ -169,6 +169,7 @@ public:
void setDownloadDirectory(const QString &directory);
QString downloadFileName() const;
void setDownloadFileName(const QString &fileName);
+ bool isCustomFileName;
Q_SIGNALS:
void stateChanged();
diff --git a/src/webengine/api/qquickwebenginedownloaditem_p_p.h b/src/webengine/api/qquickwebenginedownloaditem_p_p.h
index 1be6434ec..acd7fe806 100644
--- a/src/webengine/api/qquickwebenginedownloaditem_p_p.h
+++ b/src/webengine/api/qquickwebenginedownloaditem_p_p.h
@@ -87,6 +87,7 @@ public:
QString suggestedFileName;
QString downloadDirectory;
QString downloadFileName;
+ bool isCustomFileName;
void update(const QtWebEngineCore::ProfileAdapterClient::DownloadItemInfo &info);
void updateState(QQuickWebEngineDownloadItem::DownloadState newState);
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.cpp b/src/webenginewidgets/api/qwebenginedownloaditem.cpp
index fd7d90704..7366dbf59 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem.cpp
+++ b/src/webenginewidgets/api/qwebenginedownloaditem.cpp
@@ -170,6 +170,7 @@ QWebEngineDownloadItemPrivate::QWebEngineDownloadItemPrivate(QWebEngineProfilePr
, interruptReason(QWebEngineDownloadItem::NoReason)
, downloadUrl(url)
, downloadPaused(false)
+ , isCustomFileName(false)
, totalBytes(-1)
, receivedBytes(0)
, page(0)
@@ -594,14 +595,15 @@ void QWebEngineDownloadItem::setDownloadDirectory(const QString &directory)
if (d->downloadState != QWebEngineDownloadItem::DownloadRequested) {
qWarning("Setting the download directory is not allowed after the download has been accepted.");
return;
- }
+ }
if (!directory.isEmpty() && d->downloadDirectory != directory)
d->downloadDirectory = directory;
- d->downloadFileName = QFileInfo(d->profile->profileAdapter()->determineDownloadPath(d->downloadDirectory,
- d->suggestedFileName,
- d->startTime)).fileName();
+ if (!d->isCustomFileName)
+ d->downloadFileName = QFileInfo(d->profile->profileAdapter()->determineDownloadPath(d->downloadDirectory,
+ d->suggestedFileName,
+ d->startTime)).fileName();
}
/*!
@@ -634,8 +636,10 @@ void QWebEngineDownloadItem::setDownloadFileName(const QString &fileName)
return;
}
- if (!fileName.isEmpty())
+ if (!fileName.isEmpty()) {
d->downloadFileName = fileName;
+ d->isCustomFileName = true;
+ }
}
/*!
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem_p.h b/src/webenginewidgets/api/qwebenginedownloaditem_p.h
index 034684a00..04c6fadcc 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem_p.h
+++ b/src/webenginewidgets/api/qwebenginedownloaditem_p.h
@@ -82,6 +82,7 @@ public:
QString suggestedFileName;
QString downloadDirectory;
QString downloadFileName;
+ bool isCustomFileName;
qint64 totalBytes;
qint64 receivedBytes;