mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-20 15:37:26 -06:00
Merge pull request #3984 from glassez/root_path
Fix TorrentHandle path methods. Closes #3847.
This commit is contained in:
@@ -184,10 +184,10 @@ options_imp::options_imp(QWidget *parent)
|
||||
autoRun_param->setText(QString::fromUtf8("%1\n %2\n %3\n %4\n %5\n %6\n %7\n %8\n %9\n %10")
|
||||
.arg(tr("Supported parameters (case sensitive):"))
|
||||
.arg(tr("%N: Torrent name"))
|
||||
.arg(tr("%F: Downloaded file name (single-file torrent only)"))
|
||||
.arg(tr("%L: Label"))
|
||||
.arg(tr("%F: Content path (same as root path for multifile torrent)"))
|
||||
.arg(tr("%R: Root path (first torrent subdirectory path)"))
|
||||
.arg(tr("%D: Save path"))
|
||||
.arg(tr("%K: \"single\"|\"multi\" file(s)"))
|
||||
.arg(tr("%C: Number of files"))
|
||||
.arg(tr("%Z: Torrent size (bytes)"))
|
||||
.arg(tr("%T: Current tracker"))
|
||||
|
||||
@@ -269,7 +269,7 @@ BitTorrent::TorrentHandle *PropertiesWidget::getCurrentTorrent() const
|
||||
void PropertiesWidget::updateSavePath(BitTorrent::TorrentHandle *const torrent)
|
||||
{
|
||||
if (m_torrent == torrent) {
|
||||
save_path->setText(Utils::Fs::toNativePath(m_torrent->rootPath()));
|
||||
save_path->setText(Utils::Fs::toNativePath(m_torrent->savePath()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,7 +509,7 @@ void PropertiesWidget::openDoubleClickedFile(const QModelIndex &index) {
|
||||
|
||||
void PropertiesWidget::openFile(const QModelIndex &index) {
|
||||
int i = PropListModel->getFileIndex(index);
|
||||
const QDir saveDir(m_torrent->actualSavePath());
|
||||
const QDir saveDir(m_torrent->savePath(true));
|
||||
const QString filename = m_torrent->filePath(i);
|
||||
const QString file_path = Utils::Fs::expandPath(saveDir.absoluteFilePath(filename));
|
||||
qDebug("Trying to open file at %s", qPrintable(file_path));
|
||||
@@ -532,13 +532,13 @@ void PropertiesWidget::openFolder(const QModelIndex &index, bool containing_fold
|
||||
}
|
||||
if (path_items.isEmpty())
|
||||
return;
|
||||
const QDir saveDir(m_torrent->actualSavePath());
|
||||
const QDir saveDir(m_torrent->savePath(true));
|
||||
const QString relative_path = path_items.join("/");
|
||||
absolute_path = Utils::Fs::expandPath(saveDir.absoluteFilePath(relative_path));
|
||||
}
|
||||
else {
|
||||
int i = PropListModel->getFileIndex(index);
|
||||
const QDir saveDir(m_torrent->actualSavePath());
|
||||
const QDir saveDir(m_torrent->savePath(true));
|
||||
const QString relative_path = m_torrent->filePath(i);
|
||||
absolute_path = Utils::Fs::expandPath(saveDir.absoluteFilePath(relative_path));
|
||||
}
|
||||
@@ -691,7 +691,7 @@ void PropertiesWidget::renameSelectedFile() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
const bool force_recheck = QFile::exists(m_torrent->actualSavePath() + "/" + new_name);
|
||||
const bool force_recheck = QFile::exists(m_torrent->savePath(true) + "/" + new_name);
|
||||
qDebug("Renaming %s to %s", qPrintable(old_name), qPrintable(new_name));
|
||||
m_torrent->renameFile(file_index, new_name);
|
||||
// Force recheck
|
||||
@@ -736,7 +736,7 @@ void PropertiesWidget::renameSelectedFile() {
|
||||
if (current_name.startsWith(old_path)) {
|
||||
QString new_name = current_name;
|
||||
new_name.replace(0, old_path.length(), new_path);
|
||||
if (!force_recheck && QDir(m_torrent->actualSavePath()).exists(new_name))
|
||||
if (!force_recheck && QDir(m_torrent->savePath(true)).exists(new_name))
|
||||
force_recheck = true;
|
||||
new_name = Utils::Fs::expandPath(new_name);
|
||||
qDebug("Rename %s to %s", qPrintable(current_name), qPrintable(new_name));
|
||||
@@ -748,7 +748,7 @@ void PropertiesWidget::renameSelectedFile() {
|
||||
// Rename folder in torrent files model too
|
||||
PropListModel->setData(index, new_name_last);
|
||||
// Remove old folder
|
||||
const QDir old_folder(m_torrent->actualSavePath() + "/" + old_path);
|
||||
const QDir old_folder(m_torrent->savePath(true) + "/" + old_path);
|
||||
int timeout = 10;
|
||||
while(!QDir().rmpath(old_folder.absolutePath()) && timeout > 0) {
|
||||
// FIXME: We should not sleep here (freezes the UI for 1 second)
|
||||
|
||||
@@ -221,7 +221,7 @@ QVariant TorrentModel::data(const QModelIndex &index, int role) const
|
||||
case TR_TIME_ELAPSED:
|
||||
return (role == Qt::DisplayRole) ? torrent->activeTime() : torrent->seedingTime();
|
||||
case TR_SAVE_PATH:
|
||||
return Utils::Fs::toNativePath(torrent->rootPath());
|
||||
return Utils::Fs::toNativePath(torrent->savePath());
|
||||
case TR_COMPLETED:
|
||||
return torrent->completedSize();
|
||||
case TR_RATIO_LIMIT:
|
||||
|
||||
@@ -213,9 +213,9 @@ void TransferListWidget::torrentDoubleClicked(const QModelIndex& index)
|
||||
break;
|
||||
case OPEN_DEST:
|
||||
if (torrent->filesCount() == 1)
|
||||
Utils::Misc::openFolderSelect(QDir(torrent->rootPath()).absoluteFilePath(torrent->filePath(0)));
|
||||
Utils::Misc::openFolderSelect(torrent->contentPath(true));
|
||||
else
|
||||
Utils::Misc::openPath(torrent->rootPath());
|
||||
Utils::Misc::openPath(torrent->contentPath(true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -383,15 +383,11 @@ void TransferListWidget::openSelectedTorrentsFolder() const
|
||||
{
|
||||
QSet<QString> pathsList;
|
||||
foreach (BitTorrent::TorrentHandle *const torrent, getSelectedTorrents()) {
|
||||
QString path;
|
||||
if (torrent->filesCount() == 1) {
|
||||
path = QDir(torrent->rootPath()).absoluteFilePath(torrent->filePath(0));
|
||||
if (!pathsList.contains(path))
|
||||
QString path = torrent->contentPath(true);
|
||||
if (!pathsList.contains(path)) {
|
||||
if (torrent->filesCount() == 1)
|
||||
Utils::Misc::openFolderSelect(path);
|
||||
}
|
||||
else {
|
||||
path = torrent->rootPath();
|
||||
if (!pathsList.contains(path))
|
||||
else
|
||||
Utils::Misc::openPath(path);
|
||||
}
|
||||
pathsList.insert(path);
|
||||
|
||||
Reference in New Issue
Block a user