Browse Source

Merge pull request #16531 from glassez/save-path

Correctly handle changing of global save path
adaptive-webui-19844
Vladimir Golovnev 3 years ago committed by GitHub
parent
commit
213b18e33b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 52
      src/base/bittorrent/session.cpp
  2. 5
      src/base/bittorrent/torrentimpl.cpp
  3. 1
      src/base/bittorrent/torrentimpl.h
  4. 2
      src/gui/optionsdialog.ui

52
src/base/bittorrent/session.cpp

@ -613,7 +613,7 @@ void Session::setDownloadPathEnabled(const bool enabled) @@ -613,7 +613,7 @@ void Session::setDownloadPathEnabled(const bool enabled)
{
m_isDownloadPathEnabled = enabled;
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->handleDownloadPathChanged();
torrent->handleCategoryOptionsChanged();
}
}
@ -2531,30 +2531,58 @@ void Session::setSavePath(const Path &path) @@ -2531,30 +2531,58 @@ void Session::setSavePath(const Path &path)
if (newPath == m_savePath)
return;
m_savePath = newPath;
if (isDisableAutoTMMWhenDefaultSavePathChanged())
{
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
{
const QString &categoryName = it.key();
const CategoryOptions &categoryOptions = it.value();
if (categoryOptions.savePath.isRelative())
affectedCatogories.insert(categoryName);
}
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->setAutoTMMEnabled(false);
}
else
{
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->handleCategoryOptionsChanged();
{
if (affectedCatogories.contains(torrent->category()))
torrent->setAutoTMMEnabled(false);
}
}
m_savePath = newPath;
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->handleCategoryOptionsChanged();
}
void Session::setDownloadPath(const Path &path)
{
const Path newPath = (path.isAbsolute() ? path : (savePath() / Path("temp") / path));
if (newPath != m_downloadPath)
if (newPath == m_downloadPath)
return;
if (isDisableAutoTMMWhenDefaultSavePathChanged())
{
m_downloadPath = newPath;
QSet<QString> affectedCatogories {{}}; // includes default (unnamed) category
for (auto it = m_categories.cbegin(); it != m_categories.cend(); ++it)
{
const QString &categoryName = it.key();
const CategoryOptions &categoryOptions = it.value();
const CategoryOptions::DownloadPathOption downloadPathOption =
categoryOptions.downloadPath.value_or(CategoryOptions::DownloadPathOption {isDownloadPathEnabled(), downloadPath()});
if (downloadPathOption.enabled && downloadPathOption.path.isRelative())
affectedCatogories.insert(categoryName);
}
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->handleDownloadPathChanged();
{
if (affectedCatogories.contains(torrent->category()))
torrent->setAutoTMMEnabled(false);
}
}
m_downloadPath = newPath;
for (TorrentImpl *const torrent : asConst(m_torrents))
torrent->handleCategoryOptionsChanged();
}
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))

5
src/base/bittorrent/torrentimpl.cpp

@ -1644,11 +1644,6 @@ void TorrentImpl::handleStateUpdate(const lt::torrent_status &nativeStatus) @@ -1644,11 +1644,6 @@ void TorrentImpl::handleStateUpdate(const lt::torrent_status &nativeStatus)
updateStatus(nativeStatus);
}
void TorrentImpl::handleDownloadPathChanged()
{
adjustStorageLocation();
}
void TorrentImpl::handleMoveStorageJobFinished(const bool hasOutstandingJob)
{
m_session->handleTorrentNeedSaveResumeData(this);

1
src/base/bittorrent/torrentimpl.h

@ -233,7 +233,6 @@ namespace BitTorrent @@ -233,7 +233,6 @@ namespace BitTorrent
void handleAlert(const lt::alert *a);
void handleStateUpdate(const lt::torrent_status &nativeStatus);
void handleDownloadPathChanged();
void handleCategoryOptionsChanged();
void handleAppendExtensionToggled();
void saveResumeData();

2
src/gui/optionsdialog.ui

@ -1015,7 +1015,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually</s @@ -1015,7 +1015,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually</s
<item row="2" column="0">
<widget class="QLabel" name="labelCategoryDefaultPathChanged">
<property name="text">
<string>When Default Save Path changed:</string>
<string>When Default Save/Incomplete Path changed:</string>
</property>
</widget>
</item>

Loading…
Cancel
Save