summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerri120 <erri120@protonmail.com>2020-08-20 17:40:46 +0200
committererri120 <erri120@protonmail.com>2020-08-20 17:40:46 +0200
commit586b3cd04e0f2048e085b9a997f76b93ed953f7a (patch)
treea07b2c5cd4be4c00828643a00ec001a1dd4157f1
parent41249036e5d9d96c42a358d19d025b6542b0b3a8 (diff)
Added Open Meta File context action to downloads
-rw-r--r--src/downloadlistwidget.cpp5
-rw-r--r--src/downloadlistwidget.h2
-rw-r--r--src/downloadmanager.cpp23
-rw-r--r--src/downloadmanager.h2
-rw-r--r--src/mainwindow.cpp1
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)));