From 586b3cd04e0f2048e085b9a997f76b93ed953f7a Mon Sep 17 00:00:00 2001 From: erri120 Date: Thu, 20 Aug 2020 17:40:46 +0200 Subject: Added Open Meta File context action to downloads --- src/downloadlistwidget.cpp | 5 +++++ src/downloadlistwidget.h | 2 ++ src/downloadmanager.cpp | 23 +++++++++++++++++++++++ src/downloadmanager.h | 2 ++ src/mainwindow.cpp | 1 + 5 files changed, 33 insertions(+) (limited to 'src') 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))); -- cgit v1.3.1