mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-18 14:38:04 -06:00
Correctly handle changing of global save paths
This commit is contained in:
committed by
GitHub
parent
b9ea6a5dc5
commit
5d161d2477
@@ -563,7 +563,7 @@ void Session::setDownloadPathEnabled(const bool enabled)
|
||||
{
|
||||
m_isDownloadPathEnabled = enabled;
|
||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||
torrent->handleDownloadPathChanged();
|
||||
torrent->handleCategoryOptionsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2452,18 +2452,27 @@ void Session::setSavePath(const QString &path)
|
||||
const QString resolvedPath = (QDir::isAbsolutePath(path) ? path : Utils::Fs::resolvePath(path, baseSavePath));
|
||||
if (resolvedPath == m_savePath) return;
|
||||
|
||||
m_savePath = resolvedPath;
|
||||
|
||||
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 (QDir::isRelativePath(categoryOptions.savePath))
|
||||
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 = resolvedPath;
|
||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||
torrent->handleCategoryOptionsChanged();
|
||||
}
|
||||
|
||||
void Session::setDownloadPath(const QString &path)
|
||||
@@ -2471,12 +2480,31 @@ void Session::setDownloadPath(const QString &path)
|
||||
const QString baseDownloadPath = specialFolderLocation(SpecialFolder::Downloads) + QLatin1String("/temp");
|
||||
const QString resolvedPath = (QDir::isAbsolutePath(path) ? path : Utils::Fs::resolvePath(path, baseDownloadPath));
|
||||
if (resolvedPath != m_downloadPath)
|
||||
return;
|
||||
|
||||
if (isDisableAutoTMMWhenDefaultSavePathChanged())
|
||||
{
|
||||
m_downloadPath = resolvedPath;
|
||||
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 && QDir::isRelativePath(downloadPathOption.path))
|
||||
affectedCatogories.insert(categoryName);
|
||||
}
|
||||
|
||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||
torrent->handleDownloadPathChanged();
|
||||
{
|
||||
if (affectedCatogories.contains(torrent->category()))
|
||||
torrent->setAutoTMMEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
m_downloadPath = resolvedPath;
|
||||
for (TorrentImpl *const torrent : asConst(m_torrents))
|
||||
torrent->handleCategoryOptionsChanged();
|
||||
}
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
|
||||
|
||||
Reference in New Issue
Block a user