summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/categoriesdialog.cpp7
-rw-r--r--src/categoriesdialog.h1
-rw-r--r--src/modlistcontextmenu.cpp4
-rw-r--r--src/modlistviewactions.cpp14
-rw-r--r--src/modlistviewactions.h1
-rw-r--r--src/nexusinterface.cpp4
6 files changed, 29 insertions, 2 deletions
diff --git a/src/categoriesdialog.cpp b/src/categoriesdialog.cpp
index 4019f197..92afda60 100644
--- a/src/categoriesdialog.cpp
+++ b/src/categoriesdialog.cpp
@@ -23,6 +23,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "ui_categoriesdialog.h"
#include "utility.h"
#include "nexusinterface.h"
+#include "messagedialog.h"
#include <QItemDelegate>
#include <QLineEdit>
#include <QMenu>
@@ -321,6 +322,12 @@ void CategoriesDialog::nxmGameInfoAvailable(QString gameName, QVariant, QVariant
}
+void CategoriesDialog::nxmRequestFailed(QString, int, int, QVariant, int, int errorCode, const QString& errorMessage)
+{
+ MessageDialog::showMessage(tr("Error %1: Request to Nexus failed: %2").arg(errorCode).arg(errorMessage), this);
+}
+
+
void CategoriesDialog::on_categoriesTable_customContextMenuRequested(const QPoint& pos)
{
m_ContextRow = ui->categoriesTable->rowAt(pos.y());
diff --git a/src/categoriesdialog.h b/src/categoriesdialog.h
index 49749a0f..a2bd7240 100644
--- a/src/categoriesdialog.h
+++ b/src/categoriesdialog.h
@@ -54,6 +54,7 @@ public:
public slots:
void nxmGameInfoAvailable(QString gameName, QVariant, QVariant resultData, int);
+ void nxmRequestFailed(QString, int, int, QVariant, int, int errorCode, const QString& errorMessage);
signals:
void refreshNexusCategories();
diff --git a/src/modlistcontextmenu.cpp b/src/modlistcontextmenu.cpp
index 66766b0e..096976c1 100644
--- a/src/modlistcontextmenu.cpp
+++ b/src/modlistcontextmenu.cpp
@@ -561,6 +561,10 @@ void ModListContextMenu::addRegularActions(ModInfo::Ptr mod)
}
}
+ if (mod->nexusId() > 0 && !mod->installationFile().isEmpty()) {
+ addAction(tr("Remap Category (From Nexus)"), [=]() { m_actions.remapCategory(m_selected); });
+ }
+
if (mod->nexusId() > 0 && Settings::instance().nexus().trackedIntegration()) {
switch (mod->trackedState()) {
case TrackedState::TRACKED_FALSE: {
diff --git a/src/modlistviewactions.cpp b/src/modlistviewactions.cpp
index 21079f1d..b9d0f419 100644
--- a/src/modlistviewactions.cpp
+++ b/src/modlistviewactions.cpp
@@ -1100,6 +1100,20 @@ void ModListViewActions::willNotEndorsed(const QModelIndexList& indices) const
}
}
+void ModListViewActions::remapCategory(const QModelIndexList& indices) const
+{
+ for (auto& idx : indices) {
+ ModInfo::Ptr modInfo = ModInfo::getByIndex(idx.data(ModList::IndexRole).toInt());
+
+ int downloadIndex = m_core.downloadManager()->getDownloadIndex(modInfo->installationFile());
+ if (downloadIndex >= 0) {
+ auto downloadInfo = m_core.downloadManager()->getFileInfo(downloadIndex);
+ unsigned int categoryIndex = CategoryFactory::instance()->resolveNexusID(downloadInfo->categoryID);
+ modInfo->setPrimaryCategory(CategoryFactory::instance()->getCategoryID(categoryIndex));
+ }
+ }
+}
+
void ModListViewActions::setColor(const QModelIndexList& indices,
const QModelIndex& refIndex) const
{
diff --git a/src/modlistviewactions.h b/src/modlistviewactions.h
index 3805f98b..ad20e784 100644
--- a/src/modlistviewactions.h
+++ b/src/modlistviewactions.h
@@ -98,6 +98,7 @@ public:
void setTracked(const QModelIndexList& indices, bool tracked) const;
void setEndorsed(const QModelIndexList& indices, bool endorsed) const;
void willNotEndorsed(const QModelIndexList& indices) const;
+ void remapCategory(const QModelIndexList& indices) const;
// set/reset color of the given selection, using the given reference index (index
// at which the context menu was shown)
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index cece6745..9db78791 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -762,8 +762,8 @@ int NexusInterface::requestGameInfo(QString gameName, QObject* receiver, QVarian
connect(this, SIGNAL(nxmGameInfoAvailable(QString, QVariant, QVariant, int)),
receiver, SLOT(nxmGameInfoAvailable(QString, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;