diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/categoriesdialog.cpp | 7 | ||||
| -rw-r--r-- | src/categoriesdialog.h | 1 | ||||
| -rw-r--r-- | src/modlistcontextmenu.cpp | 4 | ||||
| -rw-r--r-- | src/modlistviewactions.cpp | 14 | ||||
| -rw-r--r-- | src/modlistviewactions.h | 1 | ||||
| -rw-r--r-- | src/nexusinterface.cpp | 4 |
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; |
