mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-29 05:48:47 +03:00
Fix default save path for magnet. Closes #4105.
This commit is contained in:
parent
84f6a82d98
commit
e183c12bed
4 changed files with 40 additions and 40 deletions
|
@ -755,7 +755,7 @@ void Session::handleDownloadFailed(const QString &url, const QString &reason)
|
||||||
|
|
||||||
void Session::handleRedirectedToMagnet(const QString &url, const QString &magnetUri)
|
void Session::handleRedirectedToMagnet(const QString &url, const QString &magnetUri)
|
||||||
{
|
{
|
||||||
addTorrent_impl(m_downloadedTorrents.take(url), MagnetUri(magnetUri));
|
addTorrent_impl(addDataFromParams(m_downloadedTorrents.take(url)), MagnetUri(magnetUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::switchToAlternativeMode(bool alternative)
|
void Session::switchToAlternativeMode(bool alternative)
|
||||||
|
@ -767,7 +767,7 @@ void Session::switchToAlternativeMode(bool alternative)
|
||||||
void Session::handleDownloadFinished(const QString &url, const QString &filePath)
|
void Session::handleDownloadFinished(const QString &url, const QString &filePath)
|
||||||
{
|
{
|
||||||
emit downloadFromUrlFinished(url);
|
emit downloadFromUrlFinished(url);
|
||||||
addTorrent_impl(m_downloadedTorrents.take(url), MagnetUri(), TorrentInfo::loadFromFile(filePath));
|
addTorrent_impl(addDataFromParams(m_downloadedTorrents.take(url)), MagnetUri(), TorrentInfo::loadFromFile(filePath));
|
||||||
Utils::Fs::forceRemove(filePath); // remove temporary file
|
Utils::Fs::forceRemove(filePath); // remove temporary file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1001,7 +1001,7 @@ bool Session::addTorrent(QString source, const AddTorrentParams ¶ms)
|
||||||
|
|
||||||
// use common 2nd step of torrent addition
|
// use common 2nd step of torrent addition
|
||||||
libt::add_torrent_alert *alert = new libt::add_torrent_alert(handle, libt::add_torrent_params(), libt::error_code());
|
libt::add_torrent_alert *alert = new libt::add_torrent_alert(handle, libt::add_torrent_params(), libt::error_code());
|
||||||
m_addingTorrents.insert(hash, AddTorrentData(params));
|
m_addingTorrents.insert(hash, addDataFromParams(params));
|
||||||
handleAddTorrentAlert(alert);
|
handleAddTorrentAlert(alert);
|
||||||
delete alert;
|
delete alert;
|
||||||
return true;
|
return true;
|
||||||
|
@ -1022,10 +1022,10 @@ bool Session::addTorrent(QString source, const AddTorrentParams ¶ms)
|
||||||
m_downloadedTorrents[handler->url()] = params;
|
m_downloadedTorrents[handler->url()] = params;
|
||||||
}
|
}
|
||||||
else if (source.startsWith("magnet:", Qt::CaseInsensitive)) {
|
else if (source.startsWith("magnet:", Qt::CaseInsensitive)) {
|
||||||
return addTorrent_impl(params, MagnetUri(source));
|
return addTorrent_impl(addDataFromParams(params), MagnetUri(source));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return addTorrent_impl(params, MagnetUri(), TorrentInfo::loadFromFile(source));
|
return addTorrent_impl(addDataFromParams(params), MagnetUri(), TorrentInfo::loadFromFile(source));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1035,7 +1035,7 @@ bool Session::addTorrent(const TorrentInfo &torrentInfo, const AddTorrentParams
|
||||||
{
|
{
|
||||||
if (!torrentInfo.isValid()) return false;
|
if (!torrentInfo.isValid()) return false;
|
||||||
|
|
||||||
return addTorrent_impl(params, MagnetUri(), torrentInfo);
|
return addTorrent_impl(addDataFromParams(params), MagnetUri(), torrentInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a torrent to the BitTorrent session
|
// Add a torrent to the BitTorrent session
|
||||||
|
@ -1111,15 +1111,6 @@ bool Session::addTorrent_impl(AddTorrentData addData, const MagnetUri &magnetUri
|
||||||
p.max_connections = pref->getMaxConnecsPerTorrent();
|
p.max_connections = pref->getMaxConnecsPerTorrent();
|
||||||
p.max_uploads = pref->getMaxUploadsPerTorrent();
|
p.max_uploads = pref->getMaxUploadsPerTorrent();
|
||||||
|
|
||||||
if (addData.savePath.isEmpty()) {
|
|
||||||
addData.savePath = m_defaultSavePath;
|
|
||||||
if (m_appendLabelToSavePath && !addData.label.isEmpty())
|
|
||||||
addData.savePath += QString("%1/").arg(addData.label);
|
|
||||||
}
|
|
||||||
else if (!addData.savePath.endsWith("/")) {
|
|
||||||
addData.savePath += "/";
|
|
||||||
}
|
|
||||||
|
|
||||||
QString savePath;
|
QString savePath;
|
||||||
// Set actual save path (e.g. temporary folder)
|
// Set actual save path (e.g. temporary folder)
|
||||||
if (isTempPathEnabled() && !addData.disableTempPath && !addData.hasSeedStatus)
|
if (isTempPathEnabled() && !addData.disableTempPath && !addData.hasSeedStatus)
|
||||||
|
@ -2490,3 +2481,33 @@ void torrentQueuePositionBottom(const libt::torrent_handle &handle)
|
||||||
qDebug() << Q_FUNC_INFO << " fails: " << exc.what();
|
qDebug() << Q_FUNC_INFO << " fails: " << exc.what();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddTorrentData Session::addDataFromParams(const AddTorrentParams ¶ms)
|
||||||
|
{
|
||||||
|
AddTorrentData data;
|
||||||
|
|
||||||
|
data.resumed = false;
|
||||||
|
data.name = params.name;
|
||||||
|
data.label = params.label;
|
||||||
|
data.savePath = params.savePath;
|
||||||
|
data.disableTempPath = params.disableTempPath;
|
||||||
|
data.sequential = params.sequential;
|
||||||
|
data.hasSeedStatus = params.skipChecking; // do not react on 'torrent_finished_alert' when skipping
|
||||||
|
data.skipChecking = params.skipChecking;
|
||||||
|
data.addForced = params.addForced;
|
||||||
|
data.addPaused = params.addPaused;
|
||||||
|
data.filePriorities = params.filePriorities;
|
||||||
|
data.ratioLimit = params.ignoreShareRatio ? TorrentHandle::NO_RATIO_LIMIT : TorrentHandle::USE_GLOBAL_RATIO;
|
||||||
|
|
||||||
|
// normalize save path
|
||||||
|
if (data.savePath.isEmpty()) {
|
||||||
|
data.savePath = m_defaultSavePath;
|
||||||
|
if (m_appendLabelToSavePath && !data.label.isEmpty())
|
||||||
|
data.savePath += QString("%1/").arg(data.label);
|
||||||
|
}
|
||||||
|
else if (!data.savePath.endsWith("/")) {
|
||||||
|
data.savePath += "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
|
@ -321,6 +321,8 @@ namespace BitTorrent
|
||||||
void dispatchAlerts(std::auto_ptr<libtorrent::alert> alertPtr);
|
void dispatchAlerts(std::auto_ptr<libtorrent::alert> alertPtr);
|
||||||
void getPendingAlerts(QVector<libtorrent::alert *> &out, ulong time = 0);
|
void getPendingAlerts(QVector<libtorrent::alert *> &out, ulong time = 0);
|
||||||
|
|
||||||
|
AddTorrentData addDataFromParams(const AddTorrentParams ¶ms);
|
||||||
|
|
||||||
// BitTorrent
|
// BitTorrent
|
||||||
libtorrent::session *m_nativeSession;
|
libtorrent::session *m_nativeSession;
|
||||||
|
|
||||||
|
|
|
@ -122,26 +122,6 @@ TorrentState::operator int() const
|
||||||
return m_value;
|
return m_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddTorrentData
|
|
||||||
|
|
||||||
AddTorrentData::AddTorrentData() {}
|
|
||||||
|
|
||||||
AddTorrentData::AddTorrentData(const AddTorrentParams &in)
|
|
||||||
: resumed(false)
|
|
||||||
, name(in.name)
|
|
||||||
, label(in.label)
|
|
||||||
, savePath(in.savePath)
|
|
||||||
, disableTempPath(in.disableTempPath)
|
|
||||||
, sequential(in.sequential)
|
|
||||||
, hasSeedStatus(in.skipChecking) // do not react on 'torrent_finished_alert' when skipping
|
|
||||||
, skipChecking(in.skipChecking)
|
|
||||||
, addForced(in.addForced)
|
|
||||||
, addPaused(in.addPaused)
|
|
||||||
, filePriorities(in.filePriorities)
|
|
||||||
, ratioLimit(in.ignoreShareRatio ? TorrentHandle::NO_RATIO_LIMIT : TorrentHandle::USE_GLOBAL_RATIO)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// TorrentHandle
|
// TorrentHandle
|
||||||
|
|
||||||
#define SAFE_CALL(func, ...) \
|
#define SAFE_CALL(func, ...) \
|
||||||
|
@ -892,12 +872,12 @@ int TorrentHandle::leechsCount() const
|
||||||
|
|
||||||
int TorrentHandle::totalSeedsCount() const
|
int TorrentHandle::totalSeedsCount() const
|
||||||
{
|
{
|
||||||
return m_nativeStatus.list_seeds;
|
return m_nativeStatus.list_seeds;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TorrentHandle::totalPeersCount() const
|
int TorrentHandle::totalPeersCount() const
|
||||||
{
|
{
|
||||||
return m_nativeStatus.list_peers;
|
return m_nativeStatus.list_peers;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TorrentHandle::totalLeechersCount() const
|
int TorrentHandle::totalLeechersCount() const
|
||||||
|
|
|
@ -97,9 +97,6 @@ namespace BitTorrent
|
||||||
QVector<int> filePriorities;
|
QVector<int> filePriorities;
|
||||||
// for resumed torrents
|
// for resumed torrents
|
||||||
qreal ratioLimit;
|
qreal ratioLimit;
|
||||||
|
|
||||||
AddTorrentData();
|
|
||||||
AddTorrentData(const AddTorrentParams &in);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TrackerInfo
|
struct TrackerInfo
|
||||||
|
|
Loading…
Reference in a new issue