1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-09 14:27:56 +00:00

Improve folder removal behavior

This commit is contained in:
Christophe Dumez 2011-03-10 18:34:28 +00:00
parent feeecbf395
commit 15d3b07f34
3 changed files with 21 additions and 10 deletions

View File

@ -799,3 +799,13 @@ QString misc::fileName(QString file_path)
return file_path; return file_path;
return file_path.mid(slash_index+1); return file_path.mid(slash_index+1);
} }
bool misc::removeEmptyFolder(const QString &dirpath)
{
QDir savedir(dirpath);
const QString dirname = savedir.dirName();
if(savedir.exists() && savedir.cdUp()) {
return savedir.rmdir(dirname);
}
return false;
}

View File

@ -123,6 +123,8 @@ public:
return MyFile.remove(); return MyFile.remove();
} }
static bool removeEmptyFolder(const QString &dirpath);
static quint64 computePathSize(QString path); static quint64 computePathSize(QString path);
static QString truncateRootFolder(boost::intrusive_ptr<libtorrent::torrent_info> t); static QString truncateRootFolder(boost::intrusive_ptr<libtorrent::torrent_info> t);

View File

@ -2176,24 +2176,23 @@ void QBtSession::readAlerts() {
#endif #endif
if(!hash.isEmpty()) { if(!hash.isEmpty()) {
if(savePathsToRemove.contains(hash)) { if(savePathsToRemove.contains(hash)) {
QDir().rmpath(savePathsToRemove.take(hash)); const QString dirpath = savePathsToRemove.take(hash);
qDebug() << "Removing save path: " << dirpath << "...";
bool ok = misc::removeEmptyFolder(dirpath);
Q_UNUSED(ok);
qDebug() << "Folder was removed: " << ok;
} }
} else { } else {
// XXX: Fallback // Fallback
QStringList hashes_deleted; qDebug() << "hash is empty, use fallback to remove save path";
foreach(const QString& key, savePathsToRemove.keys()) { foreach(const QString& key, savePathsToRemove.keys()) {
// Attempt to delete // Attempt to delete
QDir().rmpath(savePathsToRemove[key]); if(misc::removeEmptyFolder(savePathsToRemove[key])) {
if(!QDir(savePathsToRemove[key]).exists()) {
hashes_deleted << key;
}
}
// Clean up
foreach(const QString& key, hashes_deleted) {
savePathsToRemove.remove(key); savePathsToRemove.remove(key);
} }
} }
} }
}
else if (storage_moved_alert* p = dynamic_cast<storage_moved_alert*>(a.get())) { else if (storage_moved_alert* p = dynamic_cast<storage_moved_alert*>(a.get())) {
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) { if(h.is_valid()) {