Browse Source

Merge pull request #13294 from Chocobo1/openFile

Fix open path won't work correctly
adaptive-webui-19844
Mike Tzou 4 years ago committed by GitHub
parent
commit
3c6e6ae872
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      src/base/utils/string.h
  2. 17
      src/gui/properties/propertieswidget.cpp
  3. 6
      src/gui/properties/propertieswidget.h

8
src/base/utils/string.h

@ -30,7 +30,7 @@
#ifndef UTILS_STRING_H #ifndef UTILS_STRING_H
#define UTILS_STRING_H #define UTILS_STRING_H
#include <QLatin1String> #include <QChar>
#include <QVector> #include <QVector>
class QString; class QString;
@ -54,13 +54,13 @@ namespace Utils
QString wildcardToRegex(const QString &pattern); QString wildcardToRegex(const QString &pattern);
template <typename T> template <typename T>
T unquote(const T &str, const QString &quotes = QLatin1String("\"")) T unquote(const T &str, const QString &quotes = QChar('"'))
{ {
if (str.length() < 2) return str; if (str.length() < 2) return str;
for (const auto &quote : quotes) { for (const QChar quote : quotes) {
if (str.startsWith(quote) && str.endsWith(quote)) if (str.startsWith(quote) && str.endsWith(quote))
return str.mid(1, str.length() - 2); return str.mid(1, (str.length() - 2));
} }
return str; return str;

17
src/gui/properties/propertieswidget.cpp

@ -517,7 +517,7 @@ void PropertiesWidget::loadUrlSeeds()
} }
} }
void PropertiesWidget::openDoubleClickedFile(const QModelIndex &index) void PropertiesWidget::openDoubleClickedFile(const QModelIndex &index) const
{ {
if (!index.isValid() || !m_torrent || !m_torrent->hasMetadata()) return; if (!index.isValid() || !m_torrent || !m_torrent->hasMetadata()) return;
@ -527,7 +527,7 @@ void PropertiesWidget::openDoubleClickedFile(const QModelIndex &index)
openFolder(index, false); openFolder(index, false);
} }
void PropertiesWidget::openFile(const QModelIndex &index) void PropertiesWidget::openFile(const QModelIndex &index) const
{ {
int i = m_propListModel->getFileIndex(index); int i = m_propListModel->getFileIndex(index);
const QDir saveDir(m_torrent->savePath(true)); const QDir saveDir(m_torrent->savePath(true));
@ -539,27 +539,28 @@ void PropertiesWidget::openFile(const QModelIndex &index)
Utils::Gui::openPath(filePath); Utils::Gui::openPath(filePath);
} }
void PropertiesWidget::openFolder(const QModelIndex &index, bool containingFolder) void PropertiesWidget::openFolder(const QModelIndex &index, const bool containingFolder) const
{ {
QString absolutePath; QString absolutePath;
// FOLDER // FOLDER
if (m_propListModel->itemType(index) == TorrentContentModelItem::FolderType) { if (m_propListModel->itemType(index) == TorrentContentModelItem::FolderType) {
// Generate relative path to selected folder // Generate relative path to selected folder
QStringList pathItems; const QModelIndex nameIndex {index.sibling(index.row(), TorrentContentModelItem::COL_NAME)};
pathItems << index.data().toString(); QStringList pathItems {nameIndex.data().toString()};
QModelIndex parent = m_propListModel->parent(index); QModelIndex parent = m_propListModel->parent(nameIndex);
while (parent.isValid()) { while (parent.isValid()) {
pathItems.prepend(parent.data().toString()); pathItems.prepend(parent.data().toString());
parent = m_propListModel->parent(parent); parent = m_propListModel->parent(parent);
} }
if (pathItems.isEmpty()) if (pathItems.isEmpty())
return; return;
const QDir saveDir(m_torrent->savePath(true)); const QDir saveDir(m_torrent->savePath(true));
const QString relativePath = pathItems.join('/'); const QString relativePath = pathItems.join('/');
absolutePath = Utils::Fs::expandPath(saveDir.absoluteFilePath(relativePath)); absolutePath = Utils::Fs::expandPath(saveDir.absoluteFilePath(relativePath));
} }
else { else {
int i = m_propListModel->getFileIndex(index); const int i = m_propListModel->getFileIndex(index);
const QDir saveDir(m_torrent->savePath(true)); const QDir saveDir(m_torrent->savePath(true));
const QString relativePath = m_torrent->filePath(i); const QString relativePath = m_torrent->filePath(i);
absolutePath = Utils::Fs::expandPath(saveDir.absoluteFilePath(relativePath)); absolutePath = Utils::Fs::expandPath(saveDir.absoluteFilePath(relativePath));
@ -569,7 +570,7 @@ void PropertiesWidget::openFolder(const QModelIndex &index, bool containingFolde
m_torrent->flushCache(); m_torrent->flushCache();
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
Q_UNUSED(containingFolder); Q_UNUSED(containingFolder);
MacUtils::openFiles(QSet<QString>{absolutePath}); MacUtils::openFiles(QSet<QString> {absolutePath});
#else #else
if (containingFolder) if (containingFolder)
Utils::Gui::openFolderSelect(absolutePath); Utils::Gui::openFolderSelect(absolutePath);

6
src/gui/properties/propertieswidget.h

@ -82,7 +82,7 @@ public slots:
void readSettings(); void readSettings();
void saveSettings(); void saveSettings();
void reloadPreferences(); void reloadPreferences();
void openDoubleClickedFile(const QModelIndex &); void openDoubleClickedFile(const QModelIndex &index) const;
void loadTrackers(BitTorrent::TorrentHandle *const torrent); void loadTrackers(BitTorrent::TorrentHandle *const torrent);
protected slots: protected slots:
@ -107,8 +107,8 @@ private slots:
private: private:
QPushButton *getButtonFromIndex(int index); QPushButton *getButtonFromIndex(int index);
void applyPriorities(); void applyPriorities();
void openFile(const QModelIndex &index); void openFile(const QModelIndex &index) const;
void openFolder(const QModelIndex &index, bool containingFolder); void openFolder(const QModelIndex &index, bool containingFolder) const;
Ui::PropertiesWidget *m_ui; Ui::PropertiesWidget *m_ui;
BitTorrent::TorrentHandle *m_torrent; BitTorrent::TorrentHandle *m_torrent;

Loading…
Cancel
Save