diff options
| author | erri120 <erri120@protonmail.com> | 2020-08-20 17:40:46 +0200 |
|---|---|---|
| committer | erri120 <erri120@protonmail.com> | 2020-08-20 17:40:46 +0200 |
| commit | 586b3cd04e0f2048e085b9a997f76b93ed953f7a (patch) | |
| tree | a07b2c5cd4be4c00828643a00ec001a1dd4157f1 | |
| parent | 41249036e5d9d96c42a358d19d025b6542b0b3a8 (diff) | |
Added Open Meta File context action to downloads
| -rw-r--r-- | src/downloadlistwidget.cpp | 5 | ||||
| -rw-r--r-- | src/downloadlistwidget.h | 2 | ||||
| -rw-r--r-- | src/downloadmanager.cpp | 23 | ||||
| -rw-r--r-- | src/downloadmanager.h | 2 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 1 |
5 files changed, 33 insertions, 0 deletions
diff --git a/src/downloadlistwidget.cpp b/src/downloadlistwidget.cpp index 2fddd16f..1bb13779 100644 --- a/src/downloadlistwidget.cpp +++ b/src/downloadlistwidget.cpp @@ -221,6 +221,7 @@ void DownloadListWidget::onCustomContextMenu(const QPoint &point) else
menu.addAction(tr("Visit on Nexus"), this, SLOT(issueVisitOnNexus()));
menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
+ menu.addAction(tr("Open Meta File"), this, SLOT(issueOpenMetaFile()));
menu.addAction(tr("Reveal in Explorer"), this, SLOT(issueOpenInDownloadsFolder()));
menu.addSeparator();
@@ -315,6 +316,10 @@ void DownloadListWidget::issueOpenFile() emit openFile(m_ContextRow);
}
+void DownloadListWidget::issueOpenMetaFile() {
+ emit openMetaFile(m_ContextRow);
+}
+
void DownloadListWidget::issueOpenInDownloadsFolder()
{
emit openInDownloadsFolder(m_ContextRow);
diff --git a/src/downloadlistwidget.h b/src/downloadlistwidget.h index ad07b0f1..784bd275 100644 --- a/src/downloadlistwidget.h +++ b/src/downloadlistwidget.h @@ -86,6 +86,7 @@ signals: void resumeDownload(int index);
void visitOnNexus(int index);
void openFile(int index);
+ void openMetaFile(int index);
void openInDownloadsFolder(int index);
private slots:
@@ -99,6 +100,7 @@ private slots: void issueRestoreToViewAll();
void issueVisitOnNexus();
void issueOpenFile();
+ void issueOpenMetaFile();
void issueOpenInDownloadsFolder();
void issueCancel();
void issuePause();
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index 4defd96b..ce60c8e1 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -1091,6 +1091,29 @@ void DownloadManager::openFile(int index) return; } +void DownloadManager::openMetaFile(int index) { + if (index < 0 || index >= m_ActiveDownloads.size()) { + reportError(tr("OpenMetaFile: invalid download index %1").arg(index)); + return; + } + + auto path = QDir(m_OutputDirectory); + auto metaPath = getFilePath(index) + ".meta"; + if (path.exists(metaPath)) { + shell::Open(metaPath); + return; + } + + auto info = m_ActiveDownloads[index]; + info->m_FileInfo->repository = "Nexus"; + + if (path.exists(metaPath)) { + shell::Open(metaPath); + } else { + shell::Explore(m_OutputDirectory); + } +} + void DownloadManager::openInDownloadsFolder(int index) { if ((index < 0) || (index >= m_ActiveDownloads.size())) { diff --git a/src/downloadmanager.h b/src/downloadmanager.h index c837f006..90def927 100644 --- a/src/downloadmanager.h +++ b/src/downloadmanager.h @@ -453,6 +453,8 @@ public slots: void openFile(int index); + void openMetaFile(int index); + void openInDownloadsFolder(int index); void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 55e0a593..dc8e6141 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -5360,6 +5360,7 @@ void MainWindow::initDownloadView() connect(ui->downloadView, SIGNAL(queryInfoMd5(int)), m_OrganizerCore.downloadManager(), SLOT(queryInfoMd5(int))); connect(ui->downloadView, SIGNAL(visitOnNexus(int)), m_OrganizerCore.downloadManager(), SLOT(visitOnNexus(int))); connect(ui->downloadView, SIGNAL(openFile(int)), m_OrganizerCore.downloadManager(), SLOT(openFile(int))); + connect(ui->downloadView, SIGNAL(openMetaFile(int)), m_OrganizerCore.downloadManager(), SLOT(openMetaFile(int))); connect(ui->downloadView, SIGNAL(openInDownloadsFolder(int)), m_OrganizerCore.downloadManager(), SLOT(openInDownloadsFolder(int))); connect(ui->downloadView, SIGNAL(removeDownload(int, bool)), m_OrganizerCore.downloadManager(), SLOT(removeDownload(int, bool))); connect(ui->downloadView, SIGNAL(restoreDownload(int)), m_OrganizerCore.downloadManager(), SLOT(restoreDownload(int))); |
