From 30c177cb371e92fe5e4cfc600cf27586402cf0a8 Mon Sep 17 00:00:00 2001 From: Silarn Date: Mon, 16 Apr 2018 12:47:17 -0500 Subject: Support for multi-game downloads --- src/nexusinterface.h | 108 ++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 65 deletions(-) (limited to 'src/nexusinterface.h') diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 9e7f3642..9a01c5c5 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -23,6 +23,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include @@ -53,7 +54,7 @@ class NexusBridge : public MOBase::IModRepositoryBridge public: - NexusBridge(const QString &subModule = ""); + NexusBridge(PluginContainer *pluginContainer, const QString &subModule = ""); /** * @brief request description for a mod @@ -62,7 +63,7 @@ public: * @param userData user data to be returned with the result * @param url the url to request from **/ - virtual void requestDescription(int modID, QVariant userData); + virtual void requestDescription(QString gameName, int modID, QVariant userData); /** * @brief request a list of the files belonging to a mod @@ -70,7 +71,7 @@ public: * @param modID id of the mod caller is interested in * @param userData user data to be returned with the result **/ - virtual void requestFiles(int modID, QVariant userData); + virtual void requestFiles(QString gameName, int modID, QVariant userData); /** * @brief request info about a single file of a mod @@ -79,7 +80,7 @@ public: * @param fileID id of the file the caller is interested in * @param userData user data to be returned with the result **/ - virtual void requestFileInfo(int modID, int fileID, QVariant userData); + virtual void requestFileInfo(QString gameName, int modID, int fileID, QVariant userData); /** * @brief request the download url of a file @@ -88,23 +89,23 @@ public: * @param fileID id of the file the caller is interested in * @param userData user data to be returned with the result **/ - virtual void requestDownloadURL(int modID, int fileID, QVariant userData); + virtual void requestDownloadURL(QString gameName, int modID, int fileID, QVariant userData); /** * @brief requestToggleEndorsement * @param modID id of the mod caller is interested in * @param userData user data to be returned with the result */ - virtual void requestToggleEndorsement(int modID, bool endorse, QVariant userData); + virtual void requestToggleEndorsement(QString gameName, int modID, bool endorse, QVariant userData); public slots: - void nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData, int requestID); - void nxmFilesAvailable(int modID, QVariant userData, QVariant resultData, int requestID); - void nxmFileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID); - void nxmDownloadURLsAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID); - void nxmEndorsementToggled(int modID, QVariant userData, QVariant resultData, int requestID); - void nxmRequestFailed(int modID, int fileID, QVariant userData, int requestID, const QString &errorMessage); + void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); + void nxmFilesAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); + void nxmFileInfoAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID); + void nxmDownloadURLsAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID); + void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); + void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, const QString &errorMessage); private: @@ -130,7 +131,7 @@ public: ~NexusInterface(); - static NexusInterface *instance(); + static NexusInterface *instance(PluginContainer *pluginContainer); /** * @return the access manager object used to connect to nexus @@ -155,9 +156,9 @@ public: * @param userData user data to be returned with the result * @return int an id to identify the request **/ - int requestDescription(int modID, QObject *receiver, QVariant userData, const QString &subModule) + int requestDescription(QString gameName, int modID, QObject *receiver, QVariant userData, const QString &subModule) { - return requestDescription(modID, receiver, userData, subModule, m_Game); + return requestDescription(gameName, modID, receiver, userData, subModule, getGame(gameName)); } /** @@ -169,21 +170,9 @@ public: * @param game Game with which the mod is associated * @return int an id to identify the request **/ - int requestDescription(int modID, QObject *receiver, QVariant userData, const QString &subModule, + int requestDescription(QString gameName, int modID, QObject *receiver, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game); - /** - * @brief request nexus descriptions for multiple mods at once - * @param modIDs a list of ids of mods the caller is interested in (assumed to be for the current game) - * @param receiver the object to receive the result asynchronously via a signal (nxmDescriptionAvailable) - * @param userData user data to be returned with the result - * @return int an id to identify the request - */ - int requestUpdates(const std::vector &modIDs, QObject *receiver, QVariant userData, const QString &subModule) - { - return requestUpdates(modIDs, receiver, userData, subModule, m_Game); - } - /** * @brief request nexus descriptions for multiple mods at once * @param modIDs a list of ids of mods the caller is interested in @@ -192,8 +181,7 @@ public: * @param game the game with which the mods are associated * @return int an id to identify the request */ - int requestUpdates(const std::vector &modIDs, QObject *receiver, QVariant userData, const QString &subModule, - MOBase::IPluginGame const *game); + int requestUpdates(const std::vector &modIDs, QObject *receiver, QVariant userData, QString gameName, const QString &subModule); /** * @brief request a list of the files belonging to a mod @@ -203,9 +191,9 @@ public: * @param userData user data to be returned with the result * @return int an id to identify the request **/ - int requestFiles(int modID, QObject *receiver, QVariant userData, const QString &subModule) + int requestFiles(QString gameName, int modID, QObject *receiver, QVariant userData, const QString &subModule) { - return requestFiles(modID, receiver, userData, subModule, m_Game); + return requestFiles(gameName, modID, receiver, userData, subModule, getGame(gameName)); } @@ -218,35 +206,20 @@ public: * @param game the game with which the mods are associated * @return int an id to identify the request **/ - int requestFiles(int modID, QObject *receiver, QVariant userData, const QString &subModule, + int requestFiles(QString gameName, int modID, QObject *receiver, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game); /** * @brief request info about a single file of a mod * + * @param game name of the game short name to request the download from * @param modID id of the mod caller is interested in (assumed to be for the current game) * @param fileID id of the file the caller is interested in * @param receiver the object to receive the result asynchronously via a signal (nxmFilesAvailable) * @param userData user data to be returned with the result * @return int an id to identify the request **/ - int requestFileInfo(int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule) - { - return requestFileInfo(modID, fileID, receiver, userData, subModule, m_Game); - } - - /** - * @brief request info about a single file of a mod - * - * @param modID id of the mod caller is interested in (assumed to be for the current game) - * @param fileID id of the file the caller is interested in - * @param receiver the object to receive the result asynchronously via a signal (nxmFilesAvailable) - * @param userData user data to be returned with the result - * @param game the game with which the mods are associated - * @return int an id to identify the request - **/ - int requestFileInfo(int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule, - MOBase::IPluginGame const *game); + int requestFileInfo(QString gameName, int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule); /** * @brief request the download url of a file @@ -257,9 +230,9 @@ public: * @param userData user data to be returned with the result * @return int an id to identify the request **/ - int requestDownloadURL(int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule) + int requestDownloadURL(QString gameName, int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule) { - return requestDownloadURL(modID, fileID, receiver, userData, subModule, m_Game); + return requestDownloadURL(gameName, modID, fileID, receiver, userData, subModule, getGame(gameName)); } /** @@ -272,7 +245,7 @@ public: * @param game the game with which the mods are associated * @return int an id to identify the request **/ - int requestDownloadURL(int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game); + int requestDownloadURL(QString gameName, int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game); /** * @brief toggle endorsement state of the mod @@ -282,9 +255,9 @@ public: * @param userData user data to be returned with the result * @return int an id to identify the request */ - int requestToggleEndorsement(int modID, bool endorse, QObject *receiver, QVariant userData, const QString &subModule) + int requestToggleEndorsement(QString gameName, int modID, bool endorse, QObject *receiver, QVariant userData, const QString &subModule) { - return requestToggleEndorsement(modID, endorse, receiver, userData, subModule, m_Game); + return requestToggleEndorsement(gameName, modID, endorse, receiver, userData, subModule, getGame(gameName)); } /** @@ -296,7 +269,7 @@ public: * @param game the game with which the mods are associated * @return int an id to identify the request */ - int requestToggleEndorsement(int modID, bool endorse, QObject *receiver, QVariant userData, const QString &subModule, + int requestToggleEndorsement(QString gameName, int modID, bool endorse, QObject *receiver, QVariant userData, const QString &subModule, MOBase::IPluginGame const *game); /** @@ -342,13 +315,13 @@ public: * * Arguably, this should optionally take a gameplugin pointer */ - QString getGameURL() const; + QString getGameURL(QString gameName) const; /** * @brief Get the URL for the mod web page * @param modID */ - QString getModURL(int modID) const; + QString getModURL(int modID, QString gameName) const; /** * @brief Checks if the specified URL might correspond to a nexus mod @@ -358,19 +331,21 @@ public: */ bool isModURL(int modID, QString const &url) const; + void setPluginContainer(PluginContainer *pluginContainer); + signals: void requestNXMDownload(const QString &url); void needLogin(); - void nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData, int requestID); + void nxmDescriptionAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); void nxmUpdatesAvailable(const std::vector &modIDs, QVariant userData, QVariant resultData, int requestID); - void nxmFilesAvailable(int modID, QVariant userData, QVariant resultData, int requestID); - void nxmFileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID); - void nxmDownloadURLsAvailable(int modID, int fileID, QVariant userData, QVariant resultData, int requestID); - void nxmEndorsementToggled(int modID, QVariant userData, QVariant resultData, int requestID); - void nxmRequestFailed(int modID, int fileID, QVariant userData, int requestID, const QString &errorString); + void nxmFilesAvailable(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); + void nxmFileInfoAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID); + void nxmDownloadURLsAvailable(QString gameName, int modID, int fileID, QVariant userData, QVariant resultData, int requestID); + void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); + void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, const QString &errorString); public slots: void managedGameChanged(MOBase::IPluginGame const *game); @@ -404,6 +379,7 @@ private: QTimer *m_Timeout; QString m_URL; QString m_SubModule; + QString m_GameName; int m_NexusGameID; bool m_Reroute; int m_ID; @@ -421,10 +397,11 @@ private: private: - NexusInterface(); + NexusInterface(PluginContainer *pluginContainer); void nextRequest(); void requestFinished(std::list::iterator iter); bool requiresLogin(const NXMRequestInfo &info); + MOBase::IPluginGame *getGame(QString gameName) const; QString getOldModsURL() const; private: @@ -440,6 +417,7 @@ private: QString m_NMMVersion; MOBase::IPluginGame const *m_Game; + PluginContainer *m_PluginContainer; }; -- cgit v1.3.1 From 85faed5de109c0d5773626370bb6dbd338293f63 Mon Sep 17 00:00:00 2001 From: Silarn Date: Tue, 17 Apr 2018 19:14:17 -0500 Subject: Fix issues with download query --- src/downloadmanager.cpp | 20 ++++++++++++++++---- src/nexusinterface.cpp | 39 +++++++++++++++++++++++++++------------ src/nexusinterface.h | 2 ++ 3 files changed, 45 insertions(+), 16 deletions(-) (limited to 'src/nexusinterface.h') diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index d54d6f24..23a1931e 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -738,6 +738,20 @@ void DownloadManager::queryInfo(int index) return; } } + + if (info->m_FileInfo->gameName.size() == 0) { + SelectionDialog selection(tr("Please select the source game code for %1").arg(getFileName(index))); + + std::vector> choices = m_NexusInterface->getGameChoices(m_ManagedGame); + for (auto choice : choices) { + selection.addChoice(choice.first, choice.second, choice.first); + } + if (selection.exec() == QDialog::Accepted) { + info->m_FileInfo->gameName = selection.getChoiceData().toString(); + } else { + info->m_FileInfo->gameName = m_ManagedGame->gameShortName(); + } + } info->m_ReQueried = true; setState(info, STATE_FETCHINGMODINFO); } @@ -1204,13 +1218,11 @@ void DownloadManager::nxmFilesAvailable(QString, int, QVariant userData, QVarian if (!info->m_FileInfo->version.isValid()) { info->m_FileInfo->version = info->m_FileInfo->newestVersion; } - // we receive some names html-encoded. This is used to decode it - QTextDocument doc; - doc.setHtml(fileInfo["modName"].toString()); - info->m_FileInfo->modName = doc.toPlainText(); info->m_FileInfo->fileCategory = convertFileCategory(fileInfo["category_id"].toInt()); info->m_FileInfo->fileTime = matchDate(fileInfo["date"].toString()); info->m_FileInfo->fileID = fileInfo["id"].toInt(); + info->m_FileInfo->fileName = fileInfo["uri"].toString(); + info->m_FileInfo->description = BBCode::convertToHTML(fileInfo["description"].toString()); found = true; break; } diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 434c0334..6cf5b9e9 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -270,6 +270,21 @@ QString NexusInterface::getModURL(int modID, QString gameName = "") const return QString("%1/mods/%2").arg(getGameURL(gameName)).arg(modID); } +std::vector> NexusInterface::getGameChoices(const MOBase::IPluginGame *game) +{ + std::vector> choices; + choices.push_back(std::pair(game->gameShortName(), game->gameName())); + for (QString gameName : game->validShortNames()) { + for (auto gamePlugin : m_PluginContainer->plugins()) { + if (gamePlugin->gameShortName().compare(gameName, Qt::CaseInsensitive) == 0) { + choices.push_back(std::pair(gamePlugin->gameShortName(), gamePlugin->gameName())); + break; + } + } + } + return choices; +} + bool NexusInterface::isModURL(int modID, const QString &url) const { if (QUrl(url) == QUrl(getModURL(modID))) { @@ -291,11 +306,11 @@ int NexusInterface::requestDescription(QString gameName, int modID, QObject *rec NXMRequestInfo requestInfo(modID, NXMRequestInfo::TYPE_DESCRIPTION, userData, subModule, game); m_RequestQueue.enqueue(requestInfo); - connect(this, SIGNAL(nxmDescriptionAvailable(QString,int,QVariant,QVariant,int)), - receiver, SLOT(nxmDescriptionAvailable(QString,int,QVariant,QVariant,int)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmDescriptionAvailable(QString, int, QVariant, QVariant, int)), + receiver, SLOT(nxmDescriptionAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection); - connect(this, SIGNAL(nxmRequestFailed(QString,int,int,QVariant,int,QString)), - receiver, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,QString)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), + receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); nextRequest(); return requestInfo.m_ID; @@ -349,11 +364,11 @@ int NexusInterface::requestFiles(QString gameName, int modID, QObject *receiver, { NXMRequestInfo requestInfo(modID, NXMRequestInfo::TYPE_FILES, userData, subModule, game); m_RequestQueue.enqueue(requestInfo); - connect(this, SIGNAL(nxmFilesAvailable(QString,int,QVariant,QVariant,int)), - receiver, SLOT(nxmFilesAvailable(QString,int,QVariant,QVariant,int)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmFilesAvailable(QString, int, QVariant, QVariant, int)), + receiver, SLOT(nxmFilesAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection); - connect(this, SIGNAL(nxmRequestFailed(QString,int,int,QVariant,int,QString)), - receiver, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,QString)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), + receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); nextRequest(); return requestInfo.m_ID; @@ -404,11 +419,11 @@ int NexusInterface::requestToggleEndorsement(QString gameName, int modID, bool e requestInfo.m_Endorse = endorse; m_RequestQueue.enqueue(requestInfo); - connect(this, SIGNAL(nxmEndorsementToggled(QString,int,QVariant,QVariant,int)), - receiver, SLOT(nxmEndorsementToggled(QString,int,QVariant,QVariant,int)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)), + receiver, SLOT(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection); - connect(this, SIGNAL(nxmRequestFailed(QString,int,int,QVariant,int,QString)), - receiver, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,QString)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), + receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); nextRequest(); return requestInfo.m_ID; diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 9a01c5c5..4a5ac0dd 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -288,6 +288,8 @@ public: */ void loginCompleted(); + std::vector> getGameChoices(const MOBase::IPluginGame *game); + public: /** -- cgit v1.3.1 From 2091330af253399805a08c6d8f142261fc2fc8f6 Mon Sep 17 00:00:00 2001 From: Silarn Date: Wed, 2 May 2018 13:47:59 -0500 Subject: Clean up handling of managed game instance in NexusInterface --- src/nexusinterface.cpp | 61 +++++++++++++++++++------------------------------- src/nexusinterface.h | 6 +---- src/organizercore.cpp | 3 --- 3 files changed, 24 insertions(+), 46 deletions(-) (limited to 'src/nexusinterface.h') diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 8bf0de6e..d2a52c7b 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -247,21 +247,19 @@ bool NexusInterface::isURLGameRelated(const QUrl &url) const { QString const name(url.toString()); return name.startsWith(getGameURL("") + "/") || - name.startsWith(getOldModsURL() + "/"); + name.startsWith(getOldModsURL("") + "/"); } QString NexusInterface::getGameURL(QString gameName) const { IPluginGame *game = getGame(gameName); - if (game != nullptr) { - return "https://www.nexusmods.com/" + game->gameNexusName().toLower(); - } - return "https://www.nexusmods.com/" + m_Game->gameNexusName().toLower(); + return "https://www.nexusmods.com/" + game->gameNexusName().toLower(); } -QString NexusInterface::getOldModsURL() const +QString NexusInterface::getOldModsURL(QString gameName) const { - return "https://" + m_Game->gameNexusName().toLower() + ".nexusmods.com/mods"; + IPluginGame *game = getGame(gameName); + return "https://" + game->gameNexusName().toLower() + ".nexusmods.com/mods"; } @@ -291,7 +289,7 @@ bool NexusInterface::isModURL(int modID, const QString &url) const return true; } //Try the alternate (old style) mod name - QString alt = QString("%1/%2").arg(getOldModsURL()).arg(modID); + QString alt = QString("%1/%2").arg(getOldModsURL("")).arg(modID); return QUrl(alt) == QUrl(url); } @@ -321,22 +319,17 @@ int NexusInterface::requestUpdates(const std::vector &modIDs, QObject *rece QString gameName, const QString &subModule) { IPluginGame *game = getGame(gameName); + NXMRequestInfo requestInfo(modIDs, NXMRequestInfo::TYPE_GETUPDATES, userData, subModule, game); + m_RequestQueue.enqueue(requestInfo); - if (game != nullptr) { - NXMRequestInfo requestInfo(modIDs, NXMRequestInfo::TYPE_GETUPDATES, userData, subModule, game); - m_RequestQueue.enqueue(requestInfo); - - connect(this, SIGNAL(nxmUpdatesAvailable(std::vector, QVariant, QVariant, int)), - receiver, SLOT(nxmUpdatesAvailable(std::vector, QVariant, QVariant, int)), Qt::UniqueConnection); - - connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), - receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmUpdatesAvailable(std::vector, QVariant, QVariant, int)), + receiver, SLOT(nxmUpdatesAvailable(std::vector, QVariant, QVariant, int)), Qt::UniqueConnection); - nextRequest(); - return requestInfo.m_ID; - } + connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), + receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); - return -1; + nextRequest(); + return requestInfo.m_ID; } @@ -378,20 +371,17 @@ int NexusInterface::requestFiles(QString gameName, int modID, QObject *receiver, int NexusInterface::requestFileInfo(QString gameName, int modID, int fileID, QObject *receiver, QVariant userData, const QString &subModule) { IPluginGame *gamePlugin = getGame(gameName); - if (gamePlugin != nullptr) { - NXMRequestInfo requestInfo(modID, fileID, NXMRequestInfo::TYPE_FILEINFO, userData, subModule, gamePlugin); - m_RequestQueue.enqueue(requestInfo); + NXMRequestInfo requestInfo(modID, fileID, NXMRequestInfo::TYPE_FILEINFO, userData, subModule, gamePlugin); + m_RequestQueue.enqueue(requestInfo); - connect(this, SIGNAL(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)), - receiver, SLOT(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)), + receiver, SLOT(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)), Qt::UniqueConnection); - connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), - receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); + connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QString)), + receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QString)), Qt::UniqueConnection); - nextRequest(); - return requestInfo.m_ID; - } - return -1; + nextRequest(); + return requestInfo.m_ID; } @@ -438,7 +428,7 @@ bool NexusInterface::requiresLogin(const NXMRequestInfo &info) IPluginGame* NexusInterface::getGame(QString gameName) const { auto gamePlugins = m_PluginContainer->plugins(); - IPluginGame *gamePlugin = nullptr; + IPluginGame *gamePlugin = qApp->property("managed_game").value(); for (auto plugin : gamePlugins) { if (plugin->gameShortName().compare(gameName, Qt::CaseInsensitive) == 0) { gamePlugin = plugin; @@ -637,11 +627,6 @@ void NexusInterface::requestTimeout() } } -void NexusInterface::managedGameChanged(IPluginGame const *game) -{ - m_Game = game; -} - namespace { QString get_management_url(MOBase::IPluginGame const *game) { diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 4a5ac0dd..defb370f 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -349,9 +349,6 @@ signals: void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID); void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, const QString &errorString); -public slots: - void managedGameChanged(MOBase::IPluginGame const *game); - private slots: void requestFinished(); @@ -404,7 +401,7 @@ private: void requestFinished(std::list::iterator iter); bool requiresLogin(const NXMRequestInfo &info); MOBase::IPluginGame *getGame(QString gameName) const; - QString getOldModsURL() const; + QString getOldModsURL(QString gameName) const; private: @@ -418,7 +415,6 @@ private: MOBase::VersionInfo m_MOVersion; QString m_NMMVersion; - MOBase::IPluginGame const *m_Game; PluginContainer *m_PluginContainer; }; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 4739021a..d1b1fcd7 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -240,9 +240,6 @@ OrganizerCore::OrganizerCore(const QSettings &initSettings) SLOT(managedGameChanged(MOBase::IPluginGame const *))); connect(this, SIGNAL(managedGameChanged(MOBase::IPluginGame const *)), &m_PluginList, SLOT(managedGameChanged(MOBase::IPluginGame const *))); - connect(this, SIGNAL(managedGameChanged(MOBase::IPluginGame const *)), - NexusInterface::instance(m_PluginContainer), - SLOT(managedGameChanged(MOBase::IPluginGame const *))); connect(&m_PluginList, &PluginList::writePluginsList, &m_PluginListsWriter, &DelayedFileWriterBase::write); -- cgit v1.3.1