From 627043323780810ad826b0c98ffba1d42e9177ac Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sat, 5 Aug 2017 23:11:40 +0300 Subject: [PATCH] Fix explicit Torrent Management Mode in Add New Torrent dialog. Closes #5602. --- src/base/bittorrent/addtorrentparams.h | 1 + src/base/bittorrent/session.cpp | 4 +--- src/base/bittorrent/torrenthandle.cpp | 7 +++++++ src/gui/addnewtorrentdialog.cpp | 4 ++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/base/bittorrent/addtorrentparams.h b/src/base/bittorrent/addtorrentparams.h index 32269e868..6976746f5 100644 --- a/src/base/bittorrent/addtorrentparams.h +++ b/src/base/bittorrent/addtorrentparams.h @@ -51,5 +51,6 @@ namespace BitTorrent bool ignoreShareLimits = false; bool skipChecking = false; TriStateBool createSubfolder; + TriStateBool useAutoTMM; }; } diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 8aa5d4ade..616de4500 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1855,9 +1855,7 @@ bool Session::addTorrent(const TorrentInfo &torrentInfo, const AddTorrentParams bool Session::addTorrent_impl(AddTorrentData addData, const MagnetUri &magnetUri, TorrentInfo torrentInfo, const QByteArray &fastresumeData) { - addData.savePath = normalizeSavePath( - addData.savePath, - ((!addData.resumed && isAutoTMMDisabledByDefault()) ? defaultSavePath() : "")); + addData.savePath = normalizeSavePath(addData.savePath, ""); if (!addData.category.isEmpty()) { if (!m_categories.contains(addData.category) && !addCategory(addData.category)) { diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index 60f5149c1..4a95ee9ea 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -120,6 +120,13 @@ AddTorrentData::AddTorrentData(const AddTorrentParams ¶ms) , ratioLimit(params.ignoreShareLimits ? TorrentHandle::NO_RATIO_LIMIT : TorrentHandle::USE_GLOBAL_RATIO) , seedingTimeLimit(params.ignoreShareLimits ? TorrentHandle::NO_SEEDING_TIME_LIMIT : TorrentHandle::USE_GLOBAL_SEEDING_TIME) { + bool useAutoTMM = (params.useAutoTMM == TriStateBool::Undefined + ? !Session::instance()->isAutoTMMDisabledByDefault() + : params.useAutoTMM == TriStateBool::True); + if (useAutoTMM) + savePath = ""; + else if (savePath.trimmed().isEmpty()) + savePath = Session::instance()->defaultSavePath(); } // TorrentState diff --git a/src/gui/addnewtorrentdialog.cpp b/src/gui/addnewtorrentdialog.cpp index d32bac4c6..bcbfb6537 100644 --- a/src/gui/addnewtorrentdialog.cpp +++ b/src/gui/addnewtorrentdialog.cpp @@ -624,11 +624,15 @@ void AddNewTorrentDialog::accept() QString savePath = ui->savePath->selectedPath(); if (ui->comboTTM->currentIndex() != 1) { // 0 is Manual mode and 1 is Automatic mode. Handle all non 1 values as manual mode. + m_torrentParams.useAutoTMM = TriStateBool::False; m_torrentParams.savePath = savePath; saveSavePathHistory(); if (ui->defaultSavePathCheckBox->isChecked()) BitTorrent::Session::instance()->setDefaultSavePath(savePath); } + else { + m_torrentParams.useAutoTMM = TriStateBool::True; + } setEnabled(!ui->never_show_cb->isChecked());