summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2019-02-01 19:31:22 -0600
committerSilarn <jrim@rimpo.org>2019-02-18 21:31:19 -0600
commitf7220cdd2207ae67901c01684a951eb5fc1135fa (patch)
tree20cc1a6fb891cee3c9f4b0bc9ef827d324a1e519 /src/modinfodialog.cpp
parent2b5862ef0144d49e1927b5c914cbcea7183fab8a (diff)
Prevent runaway requests and fix info dialog description update display
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp116
1 files changed, 24 insertions, 92 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index 30d09579..d733f851 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -798,52 +798,6 @@ void ModInfoDialog::refreshNexusData(int modID)
}
-/*void ModInfoDialog::nxmDescriptionAvailable(int, QVariant, QVariant resultData, int requestID)
-{
- std::set<int>::iterator idIter = m_RequestIDs.find(requestID);
- if (idIter == m_RequestIDs.end()) {
- return;
- } else {
- m_RequestIDs.erase(idIter);
- }
-
- QVariantMap result = resultData.toMap();
-
- if (!result["description"].isNull()) {
- QString descriptionAsHTML =
- QString("<html>"
- "<head><style>body {background: #707070; } a { color: #5EA2E5; }</style></head>"
- "<body>%1</body>"
- "</html>").arg(BBCode::convertToHTML(result["description"].toString()));
-
-// QString descriptionAsHTML = BBCode::convertToHTML(result["description"].toString());
- ui->descriptionView->setHtml(descriptionAsHTML);
- } else {
- ui->descriptionView->setHtml(result["summary"].toString().append(QString("\r\n") + tr("(description incomplete, please visit nexus)")));
- }
-
- QLineEdit *versionEdit = findChild<QLineEdit*>("versionEdit");
- QString version = result["version"].toString();
-
- if (!version.isEmpty()) {
- m_ModInfo->setNewestVersion(version);
-
- VersionInfo currentVersion(versionEdit->text());
- VersionInfo newestVersion(version);
-
- QPalette versionColor;
- if (currentVersion < newestVersion) {
- versionColor.setColor(QPalette::Text, Qt::red);
- versionEdit->setToolTip(tr("Current Version: %1").arg(version));
- } else {
- versionColor.setColor(QPalette::Text, Qt::green);
- versionEdit->setToolTip(tr("No update available"));
- }
- versionEdit->setPalette(versionColor);
- }
-}*/
-
-
QString ModInfoDialog::getFileCategory(int categoryID)
{
switch (categoryID) {
@@ -876,46 +830,21 @@ void ModInfoDialog::updateVersionColor()
void ModInfoDialog::modDetailsUpdated(bool success)
{
- if (success) {
- QString nexusDescription = m_ModInfo->getNexusDescription();
- if (!nexusDescription.isEmpty()) {
- /* QString input =
- "[size=20]sizetest[/size]\r\n"
- "[COLOR=yellow]colortest[/COLOR]\r\n"
- "[center]centertest[/center]\r\n"
- "[quote]quotetest 1[/quote]\r\n"
- "[quote=bla]quotetest 2[/quote]\r\n"
- "[url]www.skyrimnexus.com[/url]\r\n"
- "[url=www.skyrimnexus.com]urltest 2[/url]\r\n"
- "[ol]\r\n"
- "[li]item 2[/li]"
- "[*]item 1\r\n"
- "[/ol]\r\n"
- "[img]http://www.bbcode.org/images/bbcode_logo.png[/img]\r\n"
- "[table][tr][th]headertest1[/th]"
- "[th]headertest2[/th][/tr]"
- "[tr][td]rowtest11[/td][td]rowtest12[/td][/tr]"
- "[tr][td]rowtest21[/td][td]rowtest22[/td][/tr][/table]"
- "[email=\"sherb@gmx.net\"]mail me[/email]";
- ui->descriptionView->setHtml(BBCode::convertToHTML(input));*/
-
- QString descriptionAsHTML =
- QString("<html>"
- "<head><style>body {background: #707070; } a { color: #5EA2E5; }</style></head>"
- "<body>%1</body>"
- "</html>").arg(BBCode::convertToHTML(nexusDescription));
+ QString nexusDescription = m_ModInfo->getNexusDescription();
+ QString descriptionAsHTML = "<html>"
+ "<head><style class=\"nexus-description\">body {font-style: sans-serif; background: #707070; } a { color: #5EA2E5; }</style></head>"
+ "<body>%1</body>"
+ "</html>";
- ui->descriptionView->page()->setHtml(descriptionAsHTML);
+ if (!nexusDescription.isEmpty()) {
+ descriptionAsHTML = descriptionAsHTML.arg(BBCode::convertToHTML(nexusDescription));
+ } else {
+ descriptionAsHTML = descriptionAsHTML.arg(tr("<div style=\"text-align: center;\"><h1>Uh oh!</h1><p>Sorry, there is no description available for this mod. :(</p></div>"));
+ }
- // QString descriptionAsHTML = BBCode::convertToHTML(result["description"].toString());
- // ui->descriptionView->setHtml(descriptionAsHTML);
- } else {
- // ui->descriptionView->setHtml(result["summary"].toString().append(QString("\r\n") + tr("(description incomplete, please visit nexus)")));
- ui->descriptionView->page()->setHtml(tr("(description incomplete, please visit nexus)"));
- }
+ ui->descriptionView->page()->setHtml(descriptionAsHTML);
- updateVersionColor();
- }
+ updateVersionColor();
}
@@ -923,21 +852,21 @@ void ModInfoDialog::activateNexusTab()
{
QLineEdit *modIDEdit = findChild<QLineEdit*>("modIDEdit");
int modID = modIDEdit->text().toInt();
- if (modID != 0) {
+ if (modID > 0) {
QString nexusLink = NexusInterface::instance(m_PluginContainer)->getModURL(modID, m_ModInfo->getGameName());
QLabel *visitNexusLabel = findChild<QLabel*>("visitNexusLabel");
visitNexusLabel->setText(tr("<a href=\"%1\">Visit on Nexus</a>").arg(nexusLink));
visitNexusLabel->setToolTip(nexusLink);
- if (m_ModInfo->getNexusDescription().isEmpty() ||
- QDateTime::currentDateTimeUtc() > m_ModInfo->getLastNexusQuery().addDays(1)) {
+ if (m_ModInfo->getNexusDescription().isEmpty() || QDateTime::currentDateTimeUtc() >= m_ModInfo->getLastNexusQuery().addDays(1)) {
refreshNexusData(modID);
} else {
- this->modDetailsUpdated(true);
+ modDetailsUpdated(true);
}
- }
+ } else
+ modDetailsUpdated(true);
QLineEdit *versionEdit = findChild<QLineEdit*>("versionEdit");
- QString currentVersion = m_Settings->value("version", "0.0").toString();
+ QString currentVersion = m_Settings->value("version", "???").toString();
versionEdit->setText(currentVersion);
ui->customUrlLineEdit->setText(m_ModInfo->getURL());
}
@@ -1521,9 +1450,12 @@ void ModInfoDialog::on_overwrittenTree_itemDoubleClicked(QTreeWidgetItem *item,
void ModInfoDialog::on_refreshButton_clicked()
{
- m_ModInfo->updateNXMInfo();
-
- MessageDialog::showMessage(tr("Info requested, please wait"), this);
+ if (m_ModInfo->getNexusID() > 0) {
+ QLineEdit *modIDEdit = findChild<QLineEdit*>("modIDEdit");
+ int modID = modIDEdit->text().toInt();
+ refreshNexusData(modID);
+ } else
+ qInfo("Mod has no valid Nexus ID, info can't be updated.");
}
void ModInfoDialog::on_endorseBtn_clicked()