mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-05 11:24:15 +00:00
Merge pull request #3649 from glassez/savepathlabel
Fix 'Append label to save path'. Closes #3495.
This commit is contained in:
commit
4291a08d47
@ -39,7 +39,6 @@ struct TorrentHandlePrivate
|
|||||||
{
|
{
|
||||||
virtual void handleAlert(libtorrent::alert *) = 0;
|
virtual void handleAlert(libtorrent::alert *) = 0;
|
||||||
virtual void handleStateUpdate(const libtorrent::torrent_status &) = 0;
|
virtual void handleStateUpdate(const libtorrent::torrent_status &) = 0;
|
||||||
virtual void handleDefaultSavePathChanged() = 0;
|
|
||||||
virtual void handleTempPathChanged() = 0;
|
virtual void handleTempPathChanged() = 0;
|
||||||
virtual void handleAppendExtensionToggled() = 0;
|
virtual void handleAppendExtensionToggled() = 0;
|
||||||
|
|
||||||
|
@ -1412,14 +1412,9 @@ void Session::setDefaultSavePath(const QString &path)
|
|||||||
{
|
{
|
||||||
if (path.isEmpty()) return;
|
if (path.isEmpty()) return;
|
||||||
|
|
||||||
QString defaultSavePath = Utils::Fs::fromNativePath(path);
|
m_defaultSavePath = Utils::Fs::fromNativePath(path);
|
||||||
if (!defaultSavePath.endsWith("/"))
|
if (!m_defaultSavePath.endsWith("/"))
|
||||||
defaultSavePath += "/";
|
m_defaultSavePath += "/";
|
||||||
if (m_defaultSavePath != defaultSavePath) {
|
|
||||||
m_defaultSavePath = defaultSavePath;
|
|
||||||
foreach (TorrentHandlePrivate *const torrent, m_torrents)
|
|
||||||
torrent->handleDefaultSavePathChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::setDefaultTempPath(const QString &path)
|
void Session::setDefaultTempPath(const QString &path)
|
||||||
@ -1443,8 +1438,20 @@ void Session::setAppendLabelToSavePath(bool append)
|
|||||||
{
|
{
|
||||||
if (m_appendLabelToSavePath != append) {
|
if (m_appendLabelToSavePath != append) {
|
||||||
m_appendLabelToSavePath = append;
|
m_appendLabelToSavePath = append;
|
||||||
foreach (TorrentHandlePrivate *const torrent, m_torrents)
|
foreach (TorrentHandle *const torrent, m_torrents) {
|
||||||
torrent->handleDefaultSavePathChanged();
|
QString label = torrent->label();
|
||||||
|
if (label.isEmpty()) continue;
|
||||||
|
|
||||||
|
QString testedOldSavePath = m_defaultSavePath;
|
||||||
|
QString newSavePath = m_defaultSavePath;
|
||||||
|
if (!m_appendLabelToSavePath)
|
||||||
|
testedOldSavePath += QString("%1/").arg(label);
|
||||||
|
else
|
||||||
|
newSavePath += QString("%1/").arg(label);
|
||||||
|
|
||||||
|
if (torrent->savePath() == testedOldSavePath)
|
||||||
|
torrent->move(newSavePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1618,6 +1625,19 @@ void Session::handleTorrentSavePathChanged(TorrentHandle *const torrent)
|
|||||||
|
|
||||||
void Session::handleTorrentLabelChanged(TorrentHandle *const torrent, const QString &oldLabel)
|
void Session::handleTorrentLabelChanged(TorrentHandle *const torrent, const QString &oldLabel)
|
||||||
{
|
{
|
||||||
|
if (m_appendLabelToSavePath) {
|
||||||
|
QString testedOldSavePath = m_defaultSavePath;
|
||||||
|
if (!oldLabel.isEmpty())
|
||||||
|
testedOldSavePath += QString("%1/").arg(oldLabel);
|
||||||
|
QString newLabel = torrent->label();
|
||||||
|
if (torrent->savePath() == testedOldSavePath) {
|
||||||
|
QString newSavePath = m_defaultSavePath;
|
||||||
|
if (!newLabel.isEmpty())
|
||||||
|
newSavePath += QString("%1/").arg(newLabel);
|
||||||
|
torrent->move(newSavePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
emit torrentLabelChanged(torrent, oldLabel);
|
emit torrentLabelChanged(torrent, oldLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +199,6 @@ TorrentHandle::TorrentHandle(Session *session, const libtorrent::torrent_handle
|
|||||||
, m_ratioLimit(data.ratioLimit)
|
, m_ratioLimit(data.ratioLimit)
|
||||||
, m_tempPathDisabled(data.disableTempPath)
|
, m_tempPathDisabled(data.disableTempPath)
|
||||||
, m_hasMissingFiles(false)
|
, m_hasMissingFiles(false)
|
||||||
, m_useDefaultSavePath(false)
|
|
||||||
, m_pauseAfterRecheck(false)
|
, m_pauseAfterRecheck(false)
|
||||||
, m_needSaveResumeData(false)
|
, m_needSaveResumeData(false)
|
||||||
{
|
{
|
||||||
@ -1119,7 +1118,6 @@ void TorrentHandle::setLabel(const QString &label)
|
|||||||
QString oldLabel = m_label;
|
QString oldLabel = m_label;
|
||||||
m_label = label;
|
m_label = label;
|
||||||
m_needSaveResumeData = true;
|
m_needSaveResumeData = true;
|
||||||
adjustSavePath();
|
|
||||||
m_session->handleTorrentLabelChanged(this, oldLabel);
|
m_session->handleTorrentLabelChanged(this, oldLabel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1131,10 +1129,6 @@ void TorrentHandle::setSequentialDownload(bool b)
|
|||||||
|
|
||||||
void TorrentHandle::move(QString path)
|
void TorrentHandle::move(QString path)
|
||||||
{
|
{
|
||||||
// now we use non-default save path
|
|
||||||
// even if new path same as default.
|
|
||||||
m_useDefaultSavePath = false;
|
|
||||||
|
|
||||||
path = Utils::Fs::toNativePath(path);
|
path = Utils::Fs::toNativePath(path);
|
||||||
if (path == savePath()) return;
|
if (path == savePath()) return;
|
||||||
|
|
||||||
@ -1463,7 +1457,7 @@ void TorrentHandle::handleSaveResumeDataAlert(libtorrent::save_resume_data_alert
|
|||||||
resumeData["qBt-forced"] = isForced();
|
resumeData["qBt-forced"] = isForced();
|
||||||
}
|
}
|
||||||
resumeData["qBt-addedTime"] = m_addedTime.toTime_t();
|
resumeData["qBt-addedTime"] = m_addedTime.toTime_t();
|
||||||
resumeData["qBt-savePath"] = m_useDefaultSavePath ? "" : Utils::String::toStdString(m_savePath);
|
resumeData["qBt-savePath"] = Utils::String::toStdString(m_savePath);
|
||||||
resumeData["qBt-ratioLimit"] = Utils::String::toStdString(QString::number(m_ratioLimit));
|
resumeData["qBt-ratioLimit"] = Utils::String::toStdString(QString::number(m_ratioLimit));
|
||||||
resumeData["qBt-label"] = Utils::String::toStdString(m_label);
|
resumeData["qBt-label"] = Utils::String::toStdString(m_label);
|
||||||
resumeData["qBt-name"] = Utils::String::toStdString(m_name);
|
resumeData["qBt-name"] = Utils::String::toStdString(m_name);
|
||||||
@ -1586,32 +1580,6 @@ void TorrentHandle::handleMetadataReceivedAlert(libt::metadata_received_alert *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentHandle::handleDefaultSavePathChanged()
|
|
||||||
{
|
|
||||||
adjustSavePath();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TorrentHandle::adjustSavePath()
|
|
||||||
{
|
|
||||||
// If we use default save path...
|
|
||||||
if (m_useDefaultSavePath) {
|
|
||||||
QString defaultSavePath = m_session->defaultSavePath();
|
|
||||||
if (m_session->useAppendLabelToSavePath() && !m_label.isEmpty())
|
|
||||||
defaultSavePath += QString("%1/").arg(m_label);
|
|
||||||
defaultSavePath = Utils::Fs::toNativePath(defaultSavePath);
|
|
||||||
if (m_savePath != defaultSavePath) {
|
|
||||||
if (!useTempPath()) {
|
|
||||||
moveStorage(defaultSavePath);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
m_savePath = defaultSavePath;
|
|
||||||
m_needSaveResumeData = true;
|
|
||||||
m_session->handleTorrentSavePathChanged(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TorrentHandle::handleTempPathChanged()
|
void TorrentHandle::handleTempPathChanged()
|
||||||
{
|
{
|
||||||
adjustActualSavePath();
|
adjustActualSavePath();
|
||||||
@ -1749,15 +1717,7 @@ void TorrentHandle::updateTorrentInfo()
|
|||||||
void TorrentHandle::initialize()
|
void TorrentHandle::initialize()
|
||||||
{
|
{
|
||||||
updateStatus();
|
updateStatus();
|
||||||
|
|
||||||
m_hash = InfoHash(m_nativeStatus.info_hash);
|
m_hash = InfoHash(m_nativeStatus.info_hash);
|
||||||
if (m_savePath.isEmpty()) {
|
|
||||||
// we use default save path
|
|
||||||
m_savePath = nativeActualSavePath();
|
|
||||||
m_useDefaultSavePath = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
adjustSavePath();
|
|
||||||
adjustActualSavePath();
|
adjustActualSavePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +310,6 @@ namespace BitTorrent
|
|||||||
|
|
||||||
void handleAlert(libtorrent::alert *a);
|
void handleAlert(libtorrent::alert *a);
|
||||||
void handleStateUpdate(const libtorrent::torrent_status &nativeStatus);
|
void handleStateUpdate(const libtorrent::torrent_status &nativeStatus);
|
||||||
void handleDefaultSavePathChanged();
|
|
||||||
void handleTempPathChanged();
|
void handleTempPathChanged();
|
||||||
void handleAppendExtensionToggled();
|
void handleAppendExtensionToggled();
|
||||||
|
|
||||||
@ -336,7 +335,6 @@ namespace BitTorrent
|
|||||||
bool useTempPath() const;
|
bool useTempPath() const;
|
||||||
QString nativeActualSavePath() const;
|
QString nativeActualSavePath() const;
|
||||||
|
|
||||||
void adjustSavePath();
|
|
||||||
void adjustActualSavePath();
|
void adjustActualSavePath();
|
||||||
void adjustActualSavePath_impl();
|
void adjustActualSavePath_impl();
|
||||||
void moveStorage(const QString &newPath);
|
void moveStorage(const QString &newPath);
|
||||||
@ -375,7 +373,6 @@ namespace BitTorrent
|
|||||||
bool m_tempPathDisabled;
|
bool m_tempPathDisabled;
|
||||||
bool m_hasMissingFiles;
|
bool m_hasMissingFiles;
|
||||||
|
|
||||||
bool m_useDefaultSavePath;
|
|
||||||
bool m_pauseAfterRecheck;
|
bool m_pauseAfterRecheck;
|
||||||
bool m_needSaveResumeData;
|
bool m_needSaveResumeData;
|
||||||
QHash<QString, TrackerInfo> m_trackerInfos;
|
QHash<QString, TrackerInfo> m_trackerInfos;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user