diff options
Diffstat (limited to 'gui/dialogs/UpdateDialog.cpp')
-rw-r--r-- | gui/dialogs/UpdateDialog.cpp | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/gui/dialogs/UpdateDialog.cpp b/gui/dialogs/UpdateDialog.cpp deleted file mode 100644 index 1fcc156a..00000000 --- a/gui/dialogs/UpdateDialog.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#include "UpdateDialog.h" -#include "ui_UpdateDialog.h" -#include "gui/Platform.h" -#include <QDebug> -#include "MultiMC.h" -#include <logic/settings/SettingsObject.h> - -UpdateDialog::UpdateDialog(bool hasUpdate, QWidget *parent) : QDialog(parent), ui(new Ui::UpdateDialog) -{ - MultiMCPlatform::fixWM_CLASS(this); - ui->setupUi(this); - auto channel = MMC->settings()->get("UpdateChannel").toString(); - if(hasUpdate) - { - ui->label->setText(tr("A new %1 update is available!").arg(channel)); - } - else - { - ui->label->setText(tr("No %1 updates found. You are running the latest version.").arg(channel)); - ui->btnUpdateNow->setDisabled(true); - ui->btnUpdateOnExit->setDisabled(true); - } - loadChangelog(); -} - -UpdateDialog::~UpdateDialog() -{ -} - -void UpdateDialog::loadChangelog() -{ - auto channel = MMC->settings()->get("UpdateChannel").toString(); - dljob.reset(new NetJob("Changelog")); - auto url = QString("https://raw.githubusercontent.com/MultiMC/MultiMC5/%1/changelog.md").arg(channel); - changelogDownload = ByteArrayDownload::make(QUrl(url)); - dljob->addNetAction(changelogDownload); - connect(dljob.get(), &NetJob::succeeded, this, &UpdateDialog::changelogLoaded); - connect(dljob.get(), &NetJob::failed, this, &UpdateDialog::changelogFailed); - dljob->start(); -} - -// TODO: this will be replaced. -QString reprocessMarkdown(QString markdown) -{ - QString htmlData; - QTextStream html(&htmlData); - auto lines = markdown.split(QRegExp("[\r]?[\n]"),QString::KeepEmptyParts); - enum - { - BASE, - LIST1, - LIST2 - }state = BASE; - html << "<html>"; - int i = 0; - auto procLine = [&](QString line) -> QString - { - // [GitHub issues](https://github.com/MultiMC/MultiMC5/issues) - line.replace(QRegExp("\\[([^\\]]+)\\]\\(([^\\)]+)\\)"), "<a href=\"\\2\">\\1</a>"); - return line; - }; - for(auto line: lines) - { - if(line.isEmpty()) - { - // html << "<br />\n"; - } - else switch (state) - { - case BASE: - if(line.startsWith("##")) - { - html << "<h2>" << procLine(line.mid(2)) << "</h2>\n"; - } - else if(line.startsWith("#")) - { - html << "<h1>" << procLine(line.mid(1)) << "</h1>\n"; - } - else if(line.startsWith("- ")) - { - state = LIST1; - html << "<ul>\n"; - html << "<li>" << procLine(line.mid(2)) << "</li>\n"; - } - else qCritical() << "Invalid input on line " << i << ": " << line; - break; - case LIST1: - if(line.startsWith("##")) - { - state = BASE; - html << "</ul>\n"; - html << "<h2>" << procLine(line.mid(2)) << "</h2>\n"; - } - else if(line.startsWith("#")) - { - state = BASE; - html << "</ul>\n"; - html << "<h1>" << procLine(line.mid(1)) << "</h1>\n"; - } - else if(line.startsWith("- ")) - { - html << "<li>" << procLine(line.mid(2)) << "</li>\n"; - } - else if(line.startsWith(" - ")) - { - state = LIST2; - html << "<ul>\n"; - html << "<li>" << procLine(line.mid(4)) << "</li>\n"; - } - else qCritical() << "Invalid input on line " << i << ": " << line; - break; - case LIST2: - if(line.startsWith("##")) - { - state = BASE; - html << "</ul>\n"; - html << "</ul>\n"; - html << "<h2>" << procLine(line.mid(2)) << "</h2>\n"; - } - else if(line.startsWith("#")) - { - state = BASE; - html << "</ul>\n"; - html << "</ul>\n"; - html << "<h1>" << procLine(line.mid(1)) << "</h1>\n"; - } - else if(line.startsWith("- ")) - { - state = LIST1; - html << "</ul>\n"; - html << "<li>" << procLine(line.mid(2)) << "</li>\n"; - } - else if(line.startsWith(" - ")) - { - html << "<li>" << procLine(line.mid(4)) << "</li>\n"; - } - else qCritical() << "Invalid input on line " << i << ": " << line; - break; - } - i++; - } - if(state == LIST2) - { - html << "</ul>\n"; - state = LIST1; - } - if(state == LIST1) - { - html << "</ul>\n"; - state = BASE; - } - if (state != BASE) - { - qCritical() << "Reprocessing markdown didn't end in a final state!"; - } - html << "</html>\n"; - qDebug() << htmlData; - return htmlData; -} - -void UpdateDialog::changelogLoaded() -{ - auto rawMarkdown = QString::fromUtf8(changelogDownload->m_data); - auto html = reprocessMarkdown(rawMarkdown); - ui->changelogBrowser->setHtml(html); -} - -void UpdateDialog::changelogFailed() -{ - ui->changelogBrowser->setHtml(tr("<p align=\"center\" <span style=\"font-size:22pt;\">Failed to fetch changelog...</span></p>")); -} - -void UpdateDialog::on_btnUpdateLater_clicked() -{ - reject(); -} - -void UpdateDialog::on_btnUpdateNow_clicked() -{ - done(UPDATE_NOW); -} - -void UpdateDialog::on_btnUpdateOnExit_clicked() -{ - done(UPDATE_ONEXIT); -} |