From fe0fc952e8651bd7981654d55454b831f5fe8cc7 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Mon, 18 Oct 2010 17:48:18 +0000 Subject: [PATCH] - BUGFIX: Fix encoding problem in file renaming - BUGFIX: Delete uneeded files on torrent "soft" deletion --- Changelog | 2 ++ src/bittorrent.cpp | 6 ++++++ src/qtorrenthandle.cpp | 18 +++++++++++++++++- src/qtorrenthandle.h | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index 4e4dc9693..f692fb647 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,7 @@ * Unreleased - Christophe Dumez - v2.4.7 - BUGFIX: Display the priority column when the queueing system gets enabled + - BUGFIX: Fix encoding problem in file renaming + - BUGFIX: Delete uneeded files on torrent "soft" deletion * Sun Oct 17 2010 - Christophe Dumez - v2.4.6 - BUGFIX: Fix "torrent seeding after creation" feature diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index 4f0cfdafc..85ce5412e 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -756,7 +756,13 @@ void Bittorrent::deleteTorrent(QString hash, bool delete_local_files) { savePathsToRemove[hash] = save_dir.absolutePath(); s->remove_torrent(h.get_torrent_handle(), session::delete_files); } else { + QStringList uneeded_files = h.uneeded_files_path(); s->remove_torrent(h.get_torrent_handle()); + // Remove unneeded files + foreach(const QString &uneeded_file, uneeded_files) { + qDebug("Removing uneeded file: %s", qPrintable(uneeded_file)); + misc::safeRemove(uneeded_file); + } } // Remove it from torrent backup directory QDir torrentBackup(misc::BTBackupLocation()); diff --git a/src/qtorrenthandle.cpp b/src/qtorrenthandle.cpp index f4d63248d..bdfb69dfa 100644 --- a/src/qtorrenthandle.cpp +++ b/src/qtorrenthandle.cpp @@ -377,7 +377,7 @@ size_type QTorrentHandle::total_payload_upload() const { // to all files in a torrent QStringList QTorrentHandle::files_path() const { Q_ASSERT(h.is_valid()); - QDir saveDir(misc::toQString(h.save_path().string())); + QDir saveDir(save_path()); QStringList res; torrent_info::file_iterator fi = h.get_torrent_info().begin_files(); while(fi != h.get_torrent_info().end_files()) { @@ -387,6 +387,22 @@ QStringList QTorrentHandle::files_path() const { return res; } +QStringList QTorrentHandle::uneeded_files_path() const { + Q_ASSERT(h.is_valid()); + QDir saveDir(save_path()); + QStringList res; + std::vector fp = h.file_priorities(); + torrent_info::file_iterator fi = h.get_torrent_info().begin_files(); + int i = 0; + while(fi != h.get_torrent_info().end_files()) { + if(fp[i] == 0) + res << QDir::cleanPath(saveDir.absoluteFilePath(misc::toQStringU(fi->path.string()))); + fi++; + ++i; + } + return res; +} + bool QTorrentHandle::has_missing_files() const { const QStringList paths = files_path(); foreach(const QString &path, paths) { diff --git a/src/qtorrenthandle.h b/src/qtorrenthandle.h index ed640a6ea..1001b5b5f 100644 --- a/src/qtorrenthandle.h +++ b/src/qtorrenthandle.h @@ -110,6 +110,7 @@ class QTorrentHandle { size_type all_time_download() const; size_type total_done() const; QStringList files_path() const; + QStringList uneeded_files_path() const; bool has_missing_files() const; int num_uploads() const; bool is_seed() const;