mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-23 13:04:23 +00:00
Find complete files when moving torrent storage
This commit is contained in:
parent
e7622d2e9b
commit
b28436c871
@ -49,7 +49,33 @@ CustomStorage::CustomStorage(const lt::storage_params ¶ms, lt::file_pool &fi
|
|||||||
|
|
||||||
bool CustomStorage::verify_resume_data(const lt::add_torrent_params &rd, const lt::aux::vector<std::string, lt::file_index_t> &links, lt::storage_error &ec)
|
bool CustomStorage::verify_resume_data(const lt::add_torrent_params &rd, const lt::aux::vector<std::string, lt::file_index_t> &links, lt::storage_error &ec)
|
||||||
{
|
{
|
||||||
const QDir saveDir {m_savePath};
|
handleCompleteFiles(m_savePath);
|
||||||
|
return lt::default_storage::verify_resume_data(rd, links, ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomStorage::set_file_priority(lt::aux::vector<lt::download_priority_t, lt::file_index_t> &priorities, lt::storage_error &ec)
|
||||||
|
{
|
||||||
|
m_filePriorities = priorities;
|
||||||
|
lt::default_storage::set_file_priority(priorities, ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
lt::status_t CustomStorage::move_storage(const std::string &savePath, lt::move_flags_t flags, lt::storage_error &ec)
|
||||||
|
{
|
||||||
|
const QString newSavePath {Utils::Fs::expandPathAbs(QString::fromStdString(savePath))};
|
||||||
|
|
||||||
|
if (flags == lt::move_flags_t::dont_replace)
|
||||||
|
handleCompleteFiles(newSavePath);
|
||||||
|
|
||||||
|
const lt::status_t ret = lt::default_storage::move_storage(savePath, flags, ec);
|
||||||
|
if (ret != lt::status_t::fatal_disk_error)
|
||||||
|
m_savePath = newSavePath;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomStorage::handleCompleteFiles(const QString &savePath)
|
||||||
|
{
|
||||||
|
const QDir saveDir {savePath};
|
||||||
|
|
||||||
const lt::file_storage &fileStorage = files();
|
const lt::file_storage &fileStorage = files();
|
||||||
for (const lt::file_index_t fileIndex : fileStorage.file_range()) {
|
for (const lt::file_index_t fileIndex : fileStorage.file_range()) {
|
||||||
@ -65,29 +91,12 @@ bool CustomStorage::verify_resume_data(const lt::add_torrent_params &rd, const l
|
|||||||
const QString completeFilePath = filePath.left(filePath.size() - QB_EXT.size());
|
const QString completeFilePath = filePath.left(filePath.size() - QB_EXT.size());
|
||||||
QFile completeFile {saveDir.absoluteFilePath(completeFilePath)};
|
QFile completeFile {saveDir.absoluteFilePath(completeFilePath)};
|
||||||
if (completeFile.exists()) {
|
if (completeFile.exists()) {
|
||||||
QFile currentFile {saveDir.absoluteFilePath(filePath)};
|
QFile incompleteFile {saveDir.absoluteFilePath(filePath)};
|
||||||
if (currentFile.exists())
|
if (incompleteFile.exists())
|
||||||
currentFile.remove();
|
incompleteFile.remove();
|
||||||
completeFile.rename(currentFile.fileName());
|
completeFile.rename(incompleteFile.fileName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return lt::default_storage::verify_resume_data(rd, links, ec);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CustomStorage::set_file_priority(lt::aux::vector<lt::download_priority_t, lt::file_index_t> &priorities, lt::storage_error &ec)
|
|
||||||
{
|
|
||||||
m_filePriorities = priorities;
|
|
||||||
lt::default_storage::set_file_priority(priorities, ec);
|
|
||||||
}
|
|
||||||
|
|
||||||
lt::status_t CustomStorage::move_storage(const std::string &savePath, lt::move_flags_t flags, lt::storage_error &ec)
|
|
||||||
{
|
|
||||||
const lt::status_t ret = lt::default_storage::move_storage(savePath, flags, ec);
|
|
||||||
if (ret != lt::status_t::fatal_disk_error)
|
|
||||||
m_savePath = Utils::Fs::expandPathAbs(QString::fromStdString(savePath));
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -49,6 +49,8 @@ public:
|
|||||||
lt::status_t move_storage(const std::string &savePath, lt::move_flags_t flags, lt::storage_error &ec) override;
|
lt::status_t move_storage(const std::string &savePath, lt::move_flags_t flags, lt::storage_error &ec) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void handleCompleteFiles(const QString &savePath);
|
||||||
|
|
||||||
lt::aux::vector<lt::download_priority_t, lt::file_index_t> m_filePriorities;
|
lt::aux::vector<lt::download_priority_t, lt::file_index_t> m_filePriorities;
|
||||||
QString m_savePath;
|
QString m_savePath;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user