diff options
Diffstat (limited to 'application/pages/modplatform/TwitchPage.cpp')
-rw-r--r-- | application/pages/modplatform/TwitchPage.cpp | 47 |
1 files changed, 39 insertions, 8 deletions
diff --git a/application/pages/modplatform/TwitchPage.cpp b/application/pages/modplatform/TwitchPage.cpp index 42aa46be..ea0f9267 100644 --- a/application/pages/modplatform/TwitchPage.cpp +++ b/application/pages/modplatform/TwitchPage.cpp @@ -2,28 +2,59 @@ #include "ui_TwitchPage.h" #include "MultiMC.h" -#include "FolderInstanceProvider.h" -#include "dialogs/CustomMessageBox.h" -#include "dialogs/ProgressDialog.h" #include "dialogs/NewInstanceDialog.h" +#include <InstanceImportTask.h> TwitchPage::TwitchPage(NewInstanceDialog* dialog, QWidget *parent) - : QWidget(parent), ui(new Ui::TwitchPage), dialog(dialog) + : QWidget(parent), ui(new Ui::TwitchPage), dialog(dialog) { - ui->setupUi(this); + ui->setupUi(this); + connect(ui->checkButton, &QPushButton::clicked, this, &TwitchPage::triggerCheck); } TwitchPage::~TwitchPage() { - delete ui; + delete ui; } bool TwitchPage::shouldDisplay() const { - return false; + return true; } void TwitchPage::openedImpl() { - dialog->setSuggestedPack(); + dialog->setSuggestedPack(); +} + +void TwitchPage::triggerCheck(bool) +{ + if(m_modIdResolver) { + return; + } + auto task = new Flame::UrlResolvingTask(ui->lineEdit->text()); + connect(task, &Task::finished, this, &TwitchPage::checkDone); + m_modIdResolver.reset(task); + task->start(); +} + +void TwitchPage::setUrl(const QString& url) +{ + ui->lineEdit->setText(url); + triggerCheck(true); +} + +void TwitchPage::checkDone() +{ + auto result = m_modIdResolver->getResults(); + auto formatted = QString("Project %1, File %2").arg(result.projectId).arg(result.fileId); + if(result.resolved && result.type == Flame::File::Type::Modpack) { + ui->twitchLabel->setText(formatted); + QFileInfo fi(result.fileName); + dialog->setSuggestedPack(fi.completeBaseName(), new InstanceImportTask(result.url)); + } else { + ui->twitchLabel->setPixmap(QPixmap(QString::fromUtf8(":/assets/deadglitch"))); + dialog->setSuggestedPack(); + } + m_modIdResolver.reset(); } |