From fba0a2c0a7a60c2cfd87ca12551872eeaaaaa29f Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 11 May 2015 06:53:27 +0200 Subject: [PATCH] No files are overwritten in "save all files to directory" mode. Inteligent fallback name is chosen instead. --- src/network-web/webview.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/network-web/webview.cpp b/src/network-web/webview.cpp index 99af0972a..17c54f4d7 100755 --- a/src/network-web/webview.cpp +++ b/src/network-web/webview.cpp @@ -81,6 +81,7 @@ void WebView::openImageInNewTab() { void WebView::saveCurrentPageToFile() { QString selected_file; + QString implicit_file_base_name = tr("source_page"); if (qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::AlwaysPromptForFilename)).toBool()) { QString filter_html = tr("HTML web pages (*.html)"); @@ -88,7 +89,7 @@ void WebView::saveCurrentPageToFile() { QString filter; QString selected_filter; QString filename_for_prompt = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetExplicitDirectory)).toString() + - QDir::separator() + tr("source_page.html"); + QDir::separator() + implicit_file_base_name + ".html"; // Add more filters here. filter += filter_html; @@ -101,13 +102,24 @@ void WebView::saveCurrentPageToFile() { } } else { - selected_file = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetDirectory)).toString(); + QString base_folder = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetDirectory)).toString(); - if (!selected_file.endsWith(QDir::separator())) { - selected_file += QDir::separator(); + if (!base_folder.endsWith(QDir::separator())) { + base_folder += QDir::separator(); } - selected_file += tr("source_page.html"); + selected_file = base_folder + implicit_file_base_name + ".html"; + + if (QFile::exists(selected_file)) { + int file_suffix = 0; + QString subsequent_file_name; + + do { + subsequent_file_name = base_folder + QString(implicit_file_base_name + "-%1.html").arg(file_suffix++); + } while (QFile::exists(subsequent_file_name)); + + selected_file = subsequent_file_name; + } } if (!selected_file.isEmpty()) {