diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index b1f56fad9..40efd9c6d 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -7,6 +7,7 @@ Added:
Fixed:
+- Target directory settings is now used for all kinds of downloading + when prompt for each download destination is set, then previously used folder is saved. (issue #108)
- Fixed solarized skin. (issue #111)
- Keyboard shorcuts and toolbar editors now have alphabetically sorted actions. Toolbar editor switched from drag/drop to buttons. (issue
#110)
diff --git a/src/gui/formsettings.cpp b/src/gui/formsettings.cpp
index 2d0c50867..71363175a 100755
--- a/src/gui/formsettings.cpp
+++ b/src/gui/formsettings.cpp
@@ -48,6 +48,7 @@
#include
#include
#include
+#include
FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_ui(new Ui::FormSettings) {
@@ -168,16 +169,16 @@ void FormSettings::onSkinSelected(QTreeWidgetItem *current,
}
void FormSettings::loadDownloads() {
- m_ui->m_txtDownloadsTargetDirectory->setText(qApp->settings()->value(GROUP(Downloads),
- SETTING(Downloads::TargetDirectory)).toString());
+ m_ui->m_txtDownloadsTargetDirectory->setText(QDir::toNativeSeparators(qApp->settings()->value(GROUP(Downloads),
+ SETTING(Downloads::TargetDirectory)).toString()));
m_ui->m_rbDownloadsAskEachFile->setChecked(qApp->settings()->value(GROUP(Downloads),
SETTING(Downloads::AlwaysPromptForFilename)).toBool());
}
void FormSettings::saveDownloads() {
qApp->settings()->setValue(GROUP(Downloads), Downloads::TargetDirectory, m_ui->m_txtDownloadsTargetDirectory->text());
- qApp->settings()->setValue(GROUP(Downloads), Downloads::AlwaysPromptForFilename,
- m_ui->m_rbDownloadsAskEachFile->isChecked());
+ qApp->settings()->setValue(GROUP(Downloads), Downloads::AlwaysPromptForFilename, m_ui->m_rbDownloadsAskEachFile->isChecked());
+ qApp->downloadManager()->setDownloadDirectory(m_ui->m_txtDownloadsTargetDirectory->text());
}
void FormSettings::selectDownloadsDirectory() {
diff --git a/src/miscellaneous/settings.cpp b/src/miscellaneous/settings.cpp
index a4d635a78..24ad992a1 100755
--- a/src/miscellaneous/settings.cpp
+++ b/src/miscellaneous/settings.cpp
@@ -162,6 +162,9 @@ DVALUE(QString) Downloads::TargetDirectoryDef = IOFactory::getSystemFold
DKEY Downloads::RemovePolicy = "remove_policy";
DVALUE(int) Downloads::RemovePolicyDef = DownloadManager::Never;
+KEY Downloads::TargetExplicitDirectory = "target_explicit_directory";
+VALUE(QString) Downloads::TargetExplicitDirectoryDef = IOFactory::getSystemFolder(SYSTEM_FOLDER_ENUM::DesktopLocation);
+
DKEY Downloads::ItemUrl = "download_%1_url";
DKEY Downloads::ItemLocation = "download_%1_location";
DKEY Downloads::ItemDone = "download_%1_done";
diff --git a/src/miscellaneous/settings.h b/src/miscellaneous/settings.h
index 4b1d16e40..56eb7cbfb 100755
--- a/src/miscellaneous/settings.h
+++ b/src/miscellaneous/settings.h
@@ -177,6 +177,9 @@ namespace Downloads {
KEY RemovePolicy;
VALUE(int) RemovePolicyDef;
+ KEY TargetExplicitDirectory;
+ VALUE(QString) TargetExplicitDirectoryDef;
+
KEY ItemUrl;
KEY ItemLocation;
KEY ItemDone;
diff --git a/src/network-web/downloadmanager.cpp b/src/network-web/downloadmanager.cpp
index 5b086a430..d1a129fc0 100644
--- a/src/network-web/downloadmanager.cpp
+++ b/src/network-web/downloadmanager.cpp
@@ -99,12 +99,15 @@ void DownloadItem::getFileName() {
}
QString download_directory = qApp->downloadManager()->downloadDirectory();
- QString default_filename = saveFileName(download_directory);
- QString chosen_filename = default_filename;
+ QString chosen_filename = saveFileName(download_directory);
+ QString filename_for_prompt = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetExplicitDirectory)).toString() +
+ QDir::separator() +
+ QFileInfo(chosen_filename).fileName();
if (m_requestFileName) {
+ // User must provide the path where he wants to save downloaded file in.
m_gettingFileName = true;
- chosen_filename = QFileDialog::getSaveFileName(this, tr("Select destination for downloaded file"), default_filename);
+ chosen_filename = QFileDialog::getSaveFileName(this, tr("Select destination for downloaded file"), filename_for_prompt);
m_gettingFileName = false;
if (chosen_filename.isEmpty()) {
@@ -118,6 +121,8 @@ void DownloadItem::getFileName() {
QFileInfo file_info = QFileInfo(chosen_filename);
+ qApp->settings()->setValue(GROUP(Downloads), Downloads::TargetExplicitDirectory,
+ QDir::toNativeSeparators(QFileInfo(chosen_filename).absolutePath()));
qApp->downloadManager()->setDownloadDirectory(file_info.absoluteDir().absolutePath());
m_ui->m_lblFilename->setText(file_info.fileName());
}
@@ -686,8 +691,8 @@ void DownloadManager::cleanup() {
void DownloadManager::setDownloadDirectory(const QString &directory) {
m_downloadDirectory = directory;
- if (!m_downloadDirectory.isEmpty() && !m_downloadDirectory.endsWith(QLatin1Char('/'))) {
- m_downloadDirectory += QLatin1Char('/');
+ if (!m_downloadDirectory.isEmpty() && !m_downloadDirectory.endsWith(QDir::separator())) {
+ m_downloadDirectory += QDir::separator();
}
}
diff --git a/src/network-web/webview.cpp b/src/network-web/webview.cpp
index 1efb75345..99af0972a 100755
--- a/src/network-web/webview.cpp
+++ b/src/network-web/webview.cpp
@@ -80,16 +80,35 @@ void WebView::openImageInNewTab() {
}
void WebView::saveCurrentPageToFile() {
- QString filter_html = tr("HTML web pages (*.html)");
+ QString selected_file;
- QString filter;
- QString selected_filter;
+ if (qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::AlwaysPromptForFilename)).toBool()) {
+ QString filter_html = tr("HTML web pages (*.html)");
- // Add more filters here.
- filter += filter_html;
+ QString filter;
+ QString selected_filter;
+ QString filename_for_prompt = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetExplicitDirectory)).toString() +
+ QDir::separator() + tr("source_page.html");
- QString selected_file = QFileDialog::getSaveFileName(this, tr("Select destination file for web page"),
- qApp->homeFolderPath(), filter, &selected_filter);
+ // Add more filters here.
+ filter += filter_html;
+ selected_file = QFileDialog::getSaveFileName(this, tr("Select destination file for web page"),
+ filename_for_prompt, filter, &selected_filter);
+
+ if (!selected_file.isEmpty()) {
+ qApp->settings()->setValue(GROUP(Downloads), Downloads::TargetExplicitDirectory,
+ QDir::toNativeSeparators(QFileInfo(selected_file).absolutePath()));
+ }
+ }
+ else {
+ selected_file = qApp->settings()->value(GROUP(Downloads), SETTING(Downloads::TargetDirectory)).toString();
+
+ if (!selected_file.endsWith(QDir::separator())) {
+ selected_file += QDir::separator();
+ }
+
+ selected_file += tr("source_page.html");
+ }
if (!selected_file.isEmpty()) {
QFile selected_file_handle(selected_file);