mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 07:18:08 +00:00
Merge pull request #8922 from glassez/save-path
Add option to remember last used save path. Closes #7323
This commit is contained in:
commit
e2da7928b1
@ -70,6 +70,7 @@ namespace
|
|||||||
const QString KEY_TOPLEVEL = SETTINGS_KEY("TopLevel");
|
const QString KEY_TOPLEVEL = SETTINGS_KEY("TopLevel");
|
||||||
const QString KEY_SAVEPATHHISTORY = SETTINGS_KEY("SavePathHistory");
|
const QString KEY_SAVEPATHHISTORY = SETTINGS_KEY("SavePathHistory");
|
||||||
const char KEY_SAVEPATHHISTORYLENGTH[] = SETTINGS_KEY("SavePathHistoryLength");
|
const char KEY_SAVEPATHHISTORYLENGTH[] = SETTINGS_KEY("SavePathHistoryLength");
|
||||||
|
const QString KEY_REMEMBERLASTSAVEPATH = SETTINGS_KEY("RememberLastSavePath");
|
||||||
|
|
||||||
// just a shortcut
|
// just a shortcut
|
||||||
inline SettingsStorage *settings()
|
inline SettingsStorage *settings()
|
||||||
@ -114,7 +115,9 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inP
|
|||||||
m_ui->comboTTM->blockSignals(false);
|
m_ui->comboTTM->blockSignals(false);
|
||||||
populateSavePathComboBox();
|
populateSavePathComboBox();
|
||||||
connect(m_ui->savePath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onSavePathChanged);
|
connect(m_ui->savePath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onSavePathChanged);
|
||||||
m_ui->defaultSavePathCheckBox->setVisible(false); // Default path is selected by default
|
|
||||||
|
const bool rememberLastSavePath = settings()->loadValue(KEY_REMEMBERLASTSAVEPATH, false).toBool();
|
||||||
|
m_ui->checkBoxRememberLastSavePath->setChecked(rememberLastSavePath);
|
||||||
|
|
||||||
if (m_torrentParams.createSubfolder == TriStateBool::True)
|
if (m_torrentParams.createSubfolder == TriStateBool::True)
|
||||||
m_ui->createSubfolderCheckBox->setChecked(true);
|
m_ui->createSubfolderCheckBox->setChecked(true);
|
||||||
@ -453,9 +456,7 @@ void AddNewTorrentDialog::updateDiskSpaceLabel()
|
|||||||
|
|
||||||
void AddNewTorrentDialog::onSavePathChanged(const QString &newPath)
|
void AddNewTorrentDialog::onSavePathChanged(const QString &newPath)
|
||||||
{
|
{
|
||||||
// Toggle default save path setting checkbox visibility
|
Q_UNUSED(newPath);
|
||||||
m_ui->defaultSavePathCheckBox->setChecked(false);
|
|
||||||
m_ui->defaultSavePathCheckBox->setVisible(QDir(newPath) != QDir(BitTorrent::Session::instance()->defaultSavePath()));
|
|
||||||
// Remember index
|
// Remember index
|
||||||
m_oldIndex = m_ui->savePath->currentIndex();
|
m_oldIndex = m_ui->savePath->currentIndex();
|
||||||
updateDiskSpaceLabel();
|
updateDiskSpaceLabel();
|
||||||
@ -586,18 +587,21 @@ void AddNewTorrentDialog::renameSelectedFile()
|
|||||||
|
|
||||||
void AddNewTorrentDialog::populateSavePathComboBox()
|
void AddNewTorrentDialog::populateSavePathComboBox()
|
||||||
{
|
{
|
||||||
QString defSavePath = BitTorrent::Session::instance()->defaultSavePath();
|
|
||||||
|
|
||||||
m_ui->savePath->clear();
|
m_ui->savePath->clear();
|
||||||
m_ui->savePath->addItem(defSavePath);
|
|
||||||
QDir defaultSaveDir(defSavePath);
|
|
||||||
// Load save path history
|
// Load save path history
|
||||||
foreach (const QString &savePath, settings()->loadValue(KEY_SAVEPATHHISTORY).toStringList())
|
const QStringList savePathHistory {settings()->loadValue(KEY_SAVEPATHHISTORY).toStringList()};
|
||||||
if (QDir(savePath) != defaultSaveDir)
|
for (const QString &savePath : savePathHistory)
|
||||||
m_ui->savePath->addItem(savePath);
|
m_ui->savePath->addItem(savePath);
|
||||||
|
|
||||||
|
const bool rememberLastSavePath {settings()->loadValue(KEY_REMEMBERLASTSAVEPATH, false).toBool()};
|
||||||
|
const QString defSavePath {BitTorrent::Session::instance()->defaultSavePath()};
|
||||||
|
|
||||||
if (!m_torrentParams.savePath.isEmpty())
|
if (!m_torrentParams.savePath.isEmpty())
|
||||||
setSavePath(m_torrentParams.savePath);
|
setSavePath(m_torrentParams.savePath);
|
||||||
|
else if (!rememberLastSavePath)
|
||||||
|
setSavePath(defSavePath);
|
||||||
|
// else last used save path will be selected since it is the first in the list
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddNewTorrentDialog::displayContentTreeMenu(const QPoint &)
|
void AddNewTorrentDialog::displayContentTreeMenu(const QPoint &)
|
||||||
@ -650,10 +654,11 @@ void AddNewTorrentDialog::accept()
|
|||||||
|
|
||||||
// Category
|
// Category
|
||||||
m_torrentParams.category = m_ui->categoryComboBox->currentText();
|
m_torrentParams.category = m_ui->categoryComboBox->currentText();
|
||||||
|
|
||||||
if (m_ui->defaultCategoryCheckbox->isChecked())
|
if (m_ui->defaultCategoryCheckbox->isChecked())
|
||||||
settings()->storeValue(KEY_DEFAULTCATEGORY, m_torrentParams.category);
|
settings()->storeValue(KEY_DEFAULTCATEGORY, m_torrentParams.category);
|
||||||
|
|
||||||
|
settings()->storeValue(KEY_REMEMBERLASTSAVEPATH, m_ui->checkBoxRememberLastSavePath->isChecked());
|
||||||
|
|
||||||
// Save file priorities
|
// Save file priorities
|
||||||
if (m_contentModel)
|
if (m_contentModel)
|
||||||
m_torrentParams.filePriorities = m_contentModel->model()->getFilePriorities();
|
m_torrentParams.filePriorities = m_contentModel->model()->getFilePriorities();
|
||||||
@ -666,8 +671,6 @@ void AddNewTorrentDialog::accept()
|
|||||||
m_torrentParams.useAutoTMM = TriStateBool::False;
|
m_torrentParams.useAutoTMM = TriStateBool::False;
|
||||||
m_torrentParams.savePath = savePath;
|
m_torrentParams.savePath = savePath;
|
||||||
saveSavePathHistory();
|
saveSavePathHistory();
|
||||||
if (m_ui->defaultSavePathCheckBox->isChecked())
|
|
||||||
BitTorrent::Session::instance()->setDefaultSavePath(savePath);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_torrentParams.useAutoTMM = TriStateBool::True;
|
m_torrentParams.useAutoTMM = TriStateBool::True;
|
||||||
@ -807,7 +810,6 @@ void AddNewTorrentDialog::TMMChanged(int index)
|
|||||||
m_ui->savePath->clear();
|
m_ui->savePath->clear();
|
||||||
QString savePath = BitTorrent::Session::instance()->categorySavePath(m_ui->categoryComboBox->currentText());
|
QString savePath = BitTorrent::Session::instance()->categorySavePath(m_ui->categoryComboBox->currentText());
|
||||||
m_ui->savePath->addItem(savePath);
|
m_ui->savePath->addItem(savePath);
|
||||||
m_ui->defaultSavePathCheckBox->setVisible(false);
|
|
||||||
m_ui->adv_button->setChecked(true);
|
m_ui->adv_button->setChecked(true);
|
||||||
m_ui->adv_button->setEnabled(false);
|
m_ui->adv_button->setEnabled(false);
|
||||||
showAdvancedSettings(true);
|
showAdvancedSettings(true);
|
||||||
|
@ -59,12 +59,12 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<widget class="FileSystemPathComboEdit" name="savePath" native="true"/>
|
<widget class="FileSystemPathComboEdit" name="savePath" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="defaultSavePathCheckBox">
|
<widget class="QCheckBox" name="checkBoxRememberLastSavePath">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set as default save path</string>
|
<string>Remember last used save path</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -393,7 +393,7 @@
|
|||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>savePath</tabstop>
|
<tabstop>savePath</tabstop>
|
||||||
<tabstop>defaultSavePathCheckBox</tabstop>
|
<tabstop>checkBoxRememberLastSavePath</tabstop>
|
||||||
<tabstop>never_show_cb</tabstop>
|
<tabstop>never_show_cb</tabstop>
|
||||||
<tabstop>adv_button</tabstop>
|
<tabstop>adv_button</tabstop>
|
||||||
<tabstop>startTorrentCheckBox</tabstop>
|
<tabstop>startTorrentCheckBox</tabstop>
|
||||||
|
Loading…
Reference in New Issue
Block a user