This commit is contained in:
Martin Rotter 2015-05-07 08:01:12 +02:00
parent 7b34434195
commit f96c70b71d
6 changed files with 48 additions and 16 deletions

View File

@ -7,6 +7,7 @@ Added:
Fixed:
<ul>
<li>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)</li>
<li>Fixed solarized skin. (issue #111)</li>
<li>Keyboard shorcuts and toolbar editors now have alphabetically sorted actions. Toolbar editor switched from drag/drop to buttons. (issue
#110)</li>

View File

@ -48,6 +48,7 @@
#include <QColorDialog>
#include <QFileDialog>
#include <QKeyEvent>
#include <QDir>
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() {

View File

@ -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";

View File

@ -177,6 +177,9 @@ namespace Downloads {
KEY RemovePolicy;
VALUE(int) RemovePolicyDef;
KEY TargetExplicitDirectory;
VALUE(QString) TargetExplicitDirectoryDef;
KEY ItemUrl;
KEY ItemLocation;
KEY ItemDone;

View File

@ -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();
}
}

View File

@ -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);