summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2018-04-17 19:14:17 -0500
committerSilarn <jrim@rimpo.org>2018-04-17 19:14:17 -0500
commit85faed5de109c0d5773626370bb6dbd338293f63 (patch)
treeb94fa4c224679776fb3e3ba23313920ebaeecb9b /src
parent189445191d40d5b53e05d44cb128d476e817e34d (diff)
Fix issues with download query
Diffstat (limited to 'src')
-rw-r--r--src/downloadmanager.cpp20
-rw-r--r--src/nexusinterface.cpp39
-rw-r--r--src/nexusinterface.h2
3 files changed, 45 insertions, 16 deletions
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<std::pair<QString, QString>> 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<std::pair<QString, QString>> NexusInterface::getGameChoices(const MOBase::IPluginGame *game)
+{
+ std::vector<std::pair<QString, QString>> choices;
+ choices.push_back(std::pair<QString, QString>(game->gameShortName(), game->gameName()));
+ for (QString gameName : game->validShortNames()) {
+ for (auto gamePlugin : m_PluginContainer->plugins<IPluginGame>()) {
+ if (gamePlugin->gameShortName().compare(gameName, Qt::CaseInsensitive) == 0) {
+ choices.push_back(std::pair<QString, QString>(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<std::pair<QString, QString>> getGameChoices(const MOBase::IPluginGame *game);
+
public:
/**