Browse Source

Consider explicitly specified parameters when resolving optional ones

PR #18955.
Closes #18951.
adaptive-webui-19844
Vladimir Golovnev 1 year ago committed by GitHub
parent
commit
c10f1f0ad2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 52
      src/base/bittorrent/sessionimpl.cpp
  2. 10
      src/gui/addnewtorrentdialog.cpp
  3. 22
      src/gui/addtorrentparamswidget.cpp

52
src/base/bittorrent/sessionimpl.cpp

@ -2611,50 +2611,30 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add @@ -2611,50 +2611,30 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add
const auto defaultSavePath = suggestedSavePath(loadTorrentParams.category, addTorrentParams.useAutoTMM);
const auto defaultDownloadPath = suggestedDownloadPath(loadTorrentParams.category, addTorrentParams.useAutoTMM);
loadTorrentParams.useAutoTMM = addTorrentParams.useAutoTMM.value_or(!isAutoTMMDisabledByDefault());
loadTorrentParams.useAutoTMM = addTorrentParams.useAutoTMM.value_or(
addTorrentParams.savePath.isEmpty() && addTorrentParams.downloadPath.isEmpty() && !isAutoTMMDisabledByDefault());
if (!addTorrentParams.useAutoTMM.has_value())
if (!loadTorrentParams.useAutoTMM)
{
// Default TMM settings
if (!loadTorrentParams.useAutoTMM)
{
loadTorrentParams.savePath = defaultSavePath;
if (isDownloadPathEnabled())
loadTorrentParams.downloadPath = (!defaultDownloadPath.isEmpty() ? defaultDownloadPath : downloadPath());
}
}
else
{
// Overridden TMM settings
if (addTorrentParams.savePath.isAbsolute())
loadTorrentParams.savePath = addTorrentParams.savePath;
else
loadTorrentParams.savePath = defaultSavePath / addTorrentParams.savePath;
if (!loadTorrentParams.useAutoTMM)
// if useDownloadPath isn't specified but downloadPath is explicitly set we prefer to use it
const bool useDownloadPath = addTorrentParams.useDownloadPath.value_or(!addTorrentParams.downloadPath.isEmpty() || isDownloadPathEnabled());
if (useDownloadPath)
{
if (addTorrentParams.savePath.isAbsolute())
loadTorrentParams.savePath = addTorrentParams.savePath;
else
loadTorrentParams.savePath = defaultSavePath / addTorrentParams.savePath;
// Overridden "Download path" settings
if (!addTorrentParams.useDownloadPath.has_value())
if (addTorrentParams.downloadPath.isAbsolute())
{
// Default "Download path" settings
if (isDownloadPathEnabled())
loadTorrentParams.downloadPath = (!defaultDownloadPath.isEmpty() ? defaultDownloadPath : downloadPath());
loadTorrentParams.downloadPath = addTorrentParams.downloadPath;
}
else if (addTorrentParams.useDownloadPath.value())
else
{
// Overridden "Download path" settings
if (addTorrentParams.downloadPath.isAbsolute())
{
loadTorrentParams.downloadPath = addTorrentParams.downloadPath;
}
else
{
const Path basePath = (!defaultDownloadPath.isEmpty() ? defaultDownloadPath : downloadPath());
loadTorrentParams.downloadPath = basePath / addTorrentParams.downloadPath;
}
const Path basePath = (!defaultDownloadPath.isEmpty() ? defaultDownloadPath : downloadPath());
loadTorrentParams.downloadPath = basePath / addTorrentParams.downloadPath;
}
}
}

10
src/gui/addnewtorrentdialog.cpp

@ -860,6 +860,16 @@ void AddNewTorrentDialog::accept() @@ -860,6 +860,16 @@ void AddNewTorrentDialog::accept()
m_torrentParams.downloadPath = downloadPath;
updatePathHistory(KEY_DOWNLOADPATHHISTORY, downloadPath, savePathHistoryLength());
}
else
{
m_torrentParams.downloadPath = Path();
}
}
else
{
m_torrentParams.savePath = Path();
m_torrentParams.downloadPath = Path();
m_torrentParams.useDownloadPath = std::nullopt;
}
setEnabled(!m_ui->checkBoxNeverShow->isChecked());

22
src/gui/addtorrentparamswidget.cpp

@ -48,12 +48,28 @@ namespace @@ -48,12 +48,28 @@ namespace
Q_ASSERT(data.userType() == QMetaType::Bool);
return data.toBool();
}
BitTorrent::AddTorrentParams cleanParams(BitTorrent::AddTorrentParams params)
{
if (!params.useAutoTMM.has_value() || params.useAutoTMM.value())
{
params.savePath = Path();
params.downloadPath = Path();
params.useDownloadPath = std::nullopt;
}
if (!params.useDownloadPath.has_value() || !params.useDownloadPath.value())
{
params.downloadPath = Path();
}
return params;
}
}
AddTorrentParamsWidget::AddTorrentParamsWidget(BitTorrent::AddTorrentParams addTorrentParams, QWidget *parent)
: QWidget(parent)
, m_ui {new Ui::AddTorrentParamsWidget}
, m_addTorrentParams {std::move(addTorrentParams)}
{
m_ui->setupUi(this);
@ -110,7 +126,7 @@ AddTorrentParamsWidget::AddTorrentParamsWidget(BitTorrent::AddTorrentParams addT @@ -110,7 +126,7 @@ AddTorrentParamsWidget::AddTorrentParamsWidget(BitTorrent::AddTorrentParams addT
miscParamsLayout->addWidget(m_ui->stopConditionWidget);
miscParamsLayout->addWidget(m_ui->addToQueueTopWidget);
populate();
setAddTorrentParams(std::move(addTorrentParams));
}
AddTorrentParamsWidget::~AddTorrentParamsWidget()
@ -126,7 +142,7 @@ void AddTorrentParamsWidget::setAddTorrentParams(BitTorrent::AddTorrentParams ad @@ -126,7 +142,7 @@ void AddTorrentParamsWidget::setAddTorrentParams(BitTorrent::AddTorrentParams ad
BitTorrent::AddTorrentParams AddTorrentParamsWidget::addTorrentParams() const
{
return m_addTorrentParams;
return cleanParams(m_addTorrentParams);
}
void AddTorrentParamsWidget::populate()

Loading…
Cancel
Save