summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/downloadlistwidget.cpp6
-rw-r--r--src/downloadlistwidget.h2
-rw-r--r--src/downloadlistwidgetcompact.cpp6
-rw-r--r--src/downloadlistwidgetcompact.h2
-rw-r--r--src/downloadmanager.cpp25
-rw-r--r--src/downloadmanager.h2
6 files changed, 43 insertions, 0 deletions
diff --git a/src/downloadlistwidget.cpp b/src/downloadlistwidget.cpp
index ad694107..34a90534 100644
--- a/src/downloadlistwidget.cpp
+++ b/src/downloadlistwidget.cpp
@@ -272,6 +272,11 @@ void DownloadListWidgetDelegate::issueVisitOnNexus()
emit visitOnNexus(m_ContextRow);
}
+void DownloadListWidgetDelegate::issueOpenFile()
+{
+ emit openFile(m_ContextRow);
+}
+
void DownloadListWidgetDelegate::issueOpenInDownloadsFolder()
{
emit openInDownloadsFolder(m_ContextRow);
@@ -375,6 +380,7 @@ bool DownloadListWidgetDelegate::editorEvent(QEvent *event, QAbstractItemModel *
menu.addAction(tr("Visit on Nexus"), this,SLOT(issueVisitOnNexus()));
}
+ menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
menu.addSeparator();
diff --git a/src/downloadlistwidget.h b/src/downloadlistwidget.h
index 2dd73e73..fe7f3b22 100644
--- a/src/downloadlistwidget.h
+++ b/src/downloadlistwidget.h
@@ -72,6 +72,7 @@ signals:
void pauseDownload(int index);
void resumeDownload(int index);
void visitOnNexus(int index);
+ void openFile(int index);
void openInDownloadsFolder(int index);
protected:
@@ -93,6 +94,7 @@ private slots:
void issueRestoreToView();
void issueRestoreToViewAll();
void issueVisitOnNexus();
+ void issueOpenFile();
void issueOpenInDownloadsFolder();
void issueCancel();
void issuePause();
diff --git a/src/downloadlistwidgetcompact.cpp b/src/downloadlistwidgetcompact.cpp
index 663a224e..710ecadc 100644
--- a/src/downloadlistwidgetcompact.cpp
+++ b/src/downloadlistwidgetcompact.cpp
@@ -247,6 +247,11 @@ void DownloadListWidgetCompactDelegate::issueVisitOnNexus()
emit visitOnNexus(m_ContextIndex.row());
}
+void DownloadListWidgetDelegate::issueOpenFile()
+{
+ emit openFile(m_ContextIndex.row());
+}
+
void DownloadListWidgetCompactDelegate::issueOpenInDownloadsFolder()
{
emit openInDownloadsFolder(m_ContextIndex.row());
@@ -361,6 +366,7 @@ bool DownloadListWidgetCompactDelegate::editorEvent(QEvent *event, QAbstractItem
}else {
menu.addAction(tr("Visit on Nexus"), this, SLOT(issueVisitOnNexus()));
}
+ menu.addAction(tr("Open File"), this, SLOT(issueOpenFile()));
menu.addAction(tr("Show in Folder"), this, SLOT(issueOpenInDownloadsFolder()));
menu.addSeparator();
menu.addAction(tr("Delete"), this, SLOT(issueDelete()));
diff --git a/src/downloadlistwidgetcompact.h b/src/downloadlistwidgetcompact.h
index b1b3c617..eb109f29 100644
--- a/src/downloadlistwidgetcompact.h
+++ b/src/downloadlistwidgetcompact.h
@@ -70,6 +70,7 @@ signals:
void pauseDownload(int index);
void resumeDownload(int index);
void visitOnNexus(int index);
+ void openFile(int index);
void openInDownloadsFolder(int index);
protected:
@@ -92,6 +93,7 @@ private slots:
void issueRestoreToView();
void issueRestoreToViewAll();
void issueVisitOnNexus();
+ void issueOpenFile();
void issueOpenInDownloadsFolder();
void issueCancel();
void issuePause();
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 33899f46..af32ee71 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -927,6 +927,31 @@ void DownloadManager::visitOnNexus(int index)
}
}
+void DownloadManager::openFile(int index)
+{
+ if ((index < 0) || (index >= m_ActiveDownloads.size())) {
+ reportError(tr("VisitNexus: invalid download index %1").arg(index));
+ return;
+ }
+ QString params = "/select,\"";
+ QDir path = QDir(m_OutputDirectory);
+ if (path.exists(getFileName(index))) {
+ params = params + QDir::toNativeSeparators(getFilePath(index)) + "\"";
+
+ ::ShellExecuteW(nullptr, nullptr, L"open", ToWString(params).c_str(), nullptr, SW_SHOWNORMAL);
+ return;
+ }
+ else if (path.exists(getFileName(index) + ".unfinished")) {
+ params = params + QDir::toNativeSeparators(getFilePath(index)+".unfinished") + "\"";
+
+ ::ShellExecuteW(nullptr, nullptr, L"open", ToWString(params).c_str(), nullptr, SW_SHOWNORMAL);
+ return;
+ }
+
+ ::ShellExecuteW(nullptr, L"open", ToWString(QDir::toNativeSeparators(m_OutputDirectory)).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
+ return;
+}
+
void DownloadManager::openInDownloadsFolder(int index)
{
if ((index < 0) || (index >= m_ActiveDownloads.size())) {
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 136ecf2a..e85c8c81 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -445,6 +445,8 @@ public slots:
void visitOnNexus(int index);
+ void openFile(int index);
+
void openInDownloadsFolder(int index);
void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);