Browse Source

Fix other temp path issues

adaptive-webui-19844
Christophe Dumez 14 years ago
parent
commit
8f5bd2bc9f
  1. 13
      src/bittorrent.cpp
  2. 2
      src/qtorrenthandle.cpp
  3. 16
      src/torrentpersistentdata.h

13
src/bittorrent.cpp

@ -1699,6 +1699,7 @@ void Bittorrent::addConsoleMessage(QString msg, QString) {
h.move_storage(getSavePath(h.hash())); h.move_storage(getSavePath(h.hash()));
} }
} else { } else {
qDebug("Enabling default temp path...");
// Moving all downloading torrents to temporary save path // Moving all downloading torrents to temporary save path
std::vector<torrent_handle> torrents = getTorrents(); std::vector<torrent_handle> torrents = getTorrents();
std::vector<torrent_handle>::iterator torrentIT; std::vector<torrent_handle>::iterator torrentIT;
@ -1707,11 +1708,12 @@ void Bittorrent::addConsoleMessage(QString msg, QString) {
if(!h.is_valid()) continue; if(!h.is_valid()) continue;
if(!h.is_seed()) { if(!h.is_seed()) {
QString root_folder = TorrentPersistentData::getRootFolder(h.hash()); QString root_folder = TorrentPersistentData::getRootFolder(h.hash());
QString torrent_tmp_path = defaultTempPath.replace("\\", "/"); QString torrent_tmp_path = temppath.replace("\\", "/");
if(!root_folder.isEmpty()) { if(!root_folder.isEmpty()) {
if(!torrent_tmp_path.endsWith("/")) torrent_tmp_path += "/"; if(!torrent_tmp_path.endsWith("/")) torrent_tmp_path += "/";
torrent_tmp_path += root_folder; torrent_tmp_path += root_folder;
} }
qDebug("Moving torrent to its temp save path: %s", qPrintable(torrent_tmp_path));
h.move_storage(torrent_tmp_path); h.move_storage(torrent_tmp_path);
} }
} }
@ -2118,13 +2120,14 @@ void Bittorrent::addConsoleMessage(QString msg, QString) {
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) { if(h.is_valid()) {
// Attempt to remove old folder if empty // Attempt to remove old folder if empty
const QString& old_save_path = TorrentPersistentData::getSavePath(h.hash()); const QString& old_save_path = TorrentPersistentData::getPreviousPath(h.hash());
const QString new_save_path = QString::fromLocal8Bit(p->path.c_str()); const QString new_save_path = QString::fromLocal8Bit(p->path.c_str());
qDebug("Torrent moved from %s to %s", qPrintable(old_save_path), qPrintable(new_save_path)); qDebug("Torrent moved from %s to %s", qPrintable(old_save_path), qPrintable(new_save_path));
qDebug("Attempting to remove %s", qPrintable(old_save_path)); qDebug("Attempting to remove %s", qPrintable(old_save_path));
if(old_save_path != defaultSavePath && old_save_path != defaultTempPath) QDir old_save_dir(old_save_path);
QDir().rmdir(old_save_path); if(old_save_dir != QDir(defaultSavePath) && old_save_dir != QDir(defaultTempPath))
if(new_save_path != defaultTempPath) misc::removeEmptyTree(old_save_path);
if(!new_save_path.startsWith(defaultTempPath))
TorrentPersistentData::saveSavePath(h.hash(), new_save_path); TorrentPersistentData::saveSavePath(h.hash(), new_save_path);
emit savePathChanged(h); emit savePathChanged(h);
//h.force_recheck(); //h.force_recheck();

2
src/qtorrenthandle.cpp

@ -599,6 +599,8 @@ void QTorrentHandle::force_recheck() const {
void QTorrentHandle::move_storage(QString new_path) const { void QTorrentHandle::move_storage(QString new_path) const {
Q_ASSERT(h.is_valid()); Q_ASSERT(h.is_valid());
if(QDir(save_path()) == QDir(new_path)) return;
TorrentPersistentData::setPreviousSavePath(hash(), save_path());
h.move_storage(new_path.toLocal8Bit().constData()); h.move_storage(new_path.toLocal8Bit().constData());
} }

16
src/torrentpersistentdata.h

@ -242,6 +242,22 @@ public:
QHash<QString, QVariant> data = all_data[hash].toHash(); QHash<QString, QVariant> data = all_data[hash].toHash();
return data.value("root_folder", QString()).toString(); return data.value("root_folder", QString()).toString();
} }
static void setPreviousSavePath(QString hash, QString previous_path) {
QIniSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
QHash<QString, QVariant> all_data = settings.value("torrents", QHash<QString, QVariant>()).toHash();
QHash<QString, QVariant> data = all_data[hash].toHash();
data.insert("previous_path", previous_path);
all_data[hash] = data;
settings.setValue("torrents", all_data);
}
static QString getPreviousPath(QString hash) {
QIniSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));
QHash<QString, QVariant> all_data = settings.value("torrents", QHash<QString, QVariant>()).toHash();
QHash<QString, QVariant> data = all_data[hash].toHash();
return data.value("previous_path", QString()).toString();
}
static void saveSeedDate(const QTorrentHandle &h) { static void saveSeedDate(const QTorrentHandle &h) {
QIniSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume")); QIniSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume"));

Loading…
Cancel
Save